当前位置: 首页 > 工具软件 > gRPC-DLang > 使用案例 >

grpc简介(二).md

孔欣可
2023-12-01
  • gRPC 与 HTTP:

    gRPC 也是一组库,它们将在通用 HTTP 库通常不提供的跨平台上一致地提供更高级别的功能。此类功能的示例包括:在应用层与流控制交互、级联呼叫取消、负载平衡和故障转移等。

  • gRPC 与 REST:

    gRPC 在很大程度上遵循 HTTP2 之上的 HTTP 语义,并明确允许全双工流式传输。与典型的 REST 约定不同,在调用期间出于性能原因使用静态路径,因为从路径、查询参数和有效负载正文中解析调用参数会增加延迟和复杂性。另外,grpc还形式化了一组错误,这些错误比 HTTP 状态代码更直接适用于 API 用例。

  • protobuf 与 json:

    数据编码就是序列化,反序列化,将对象变成字节流发送给服务端,服务端将收到的字节流再转化为对象,常见的序列化,反序列化工具XML, JSON, Protobuf。
    json的缺点就是非字符串的编码效率低,int类型在内存只占两个字节65535, 转化成JSON却需要五个字节,bool则需要占用四到五个字节;另一个缺点就是信息冗余,面对同一个接口同一个对象,需要重复传送相同的字段名。json在编码效率和可读性之间选择了可读性。
    protobuf选用了VarInts对数字进行编码,解决了效率问题,另一方面将字段都指定为整数编号,传输的时候只传送字段编号,解决了冗余问题,Protobuf使用.proto文件作为schema记录字段和编号的对应关系
    gRPC底层使用的HTTP/2协议,HTTP协议本身可以通过Content-Encoding表示压缩算法,使用Contetn-length指定数据长度。而gRPC重新定义了一套机制,因为gRPC支持stream rpc,流式接口。

 类似资料: