grpc与thrift

  1. HTTP2.0 相比 HTTP1.1 有非常大的不同,HTTP1.1 还是基于文本协议的问答有序模式,但是 HTTP2.0 是基于二进制协议的乱序模式 (Duplexing)。这意味同一个连接通道上多个请求并行时,服务器处理快的可以先返回而不用因为等待其它请求的响应而排队。
    image
    头部优化:我们知道 HTTP 协议的请求头有大量的 key/value 文本组成,多个请求直接 key/value 重复程度很高。为了优化这部分,HTTP2.0 对请求头的 key/value 做了字典处理,对于常用的 key/value 文本无需重复传送,而是通过引用内部字典的整数索引来达到显著节省请求头传输流量的目的。这也意味着以后我们无法直接使用肉眼来观察 HTTP 协议测传输内容了,它的协议内容对肉眼不再十分友好。
  2. grpc线程模型:
    gRPC 默认使用的是异步 IO 模型,底层有一个独立的事件循环。它的异步不是使用 Python 内置的 asyncio 来完成的,它使用的是开源异步事件框架 gevent。gevent 的优势在于可以让用户使用同步的代码编写异步的逻辑,而完全不知内部正在进行复杂的协程调度,这样可以明显降低框架代码的实现复杂度。grpc 服务器端接收到一个完整的消息包后就会传递到线程池去进行业务逻辑处理,线程池是由用户层代码来指定的,待线程池将任务执行完成后会将结果扔到 IO 模型的完成队列中进行后续的响应处理。
    image
    gRPC Streaming模式:
    gRPC 的一个特色之处在于提供了 Streaming 模式,有了 Streaming 模式,客户端可以将一连串的请求连续发送到服务器,服务器也可以将一连串连续的响应回复给客户端。它类似于列表类型的消息,但是又不一样。列表类的消息要求我们一次性将整个列表消息打包传递给服务器,但是 Streaming 不一样,可以生成一个请求就可以立即发往服务器,接下来继续生成请求,继续发送,就好比流水线一样。对比前面的同步调用,Streaming 可以理解为 gRPC 的异步调用。
    image
  3. thrift原理:
    image
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值