社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
Grpc是由Google主导开发的RPC框架,使用HTTP/2协议并用ProtoBuf作为序列化工具。其客户端提供Objective-C、Java接口,服务器侧则有Java、Golang、C++等接口,从而为移动端(iOS/Androi)到服务器端通讯提供了一种解决方案。Google对其的声音是:
Grpc的优点都由Google说了,就来谈谈Grpc的缺点吧(这是个人见解)
数据对象的不友好性
服务契约的不友好性
Java走到服务化这一步,其interface大行其道,像现在主流的Rpc框架中许多都是使用java的接口来做为服务契约,这种方式还是比较根深蒂固的,但是Grpc不是如此,利用protobuf生成的stub存根,可读性实在是太差了,想要真正的了解序列化逻辑实在是太麻烦了
基于流方式的传输的复杂性
Grpc可以基于streaming流的方式来进行数据传输,这是啥意思呢,也就是我传了多少数据给服务端,我先告诉你,服务端拿到之后,再去把数据反序列化出来,理想很丰满,现实很骨感,这个通知,Grpc是咋做的呢,其服务定义必须要有一个这样显式的定义接口,通过这个接口来定义这种流式的传输,这种对Idl的无关定义侵入让人很不舒服
谈了谈Grpc的缺点,我来说说优点吧
多语言
Grpc的多语言是他做的很牛逼的地方,特别是在设备端,客户端支持ios,android,而基于http2.0的多路复用也的确让设备真正的省了流量,省了电,也省了空间
基于Http2.0
采用HTTP2的好处在于,因为添加了头信息,可以方便在框架层面对调用做拦截和控制(比如说限流,调用链分析,安全认证等)而且http2为标准协议,也方便以后扩展兼容其它调用端
暂时就谈这么多,最后打一个广告
<a href="https://github.com/quancheng-ec/saluki"> 传送门</a>
这个是基于grpc的扩展,能够进行注册,发现,并且初步的解决了数据对象不友好性
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!