功能对比
目前, rpc框架主要沿着两条路线发展,一个是目标为了跨语言,服务端可以用不同的语言实现,客户端也可以用不同的语言实现,不同的语言实现的客户端和服务器端可以互相调用。要支持不同的语言,需要基于那种语言实现相同协议的框架,其中比较典型的是 grpc,基于同一个IDL,可以生成不同语言的代码,并且语言的支持也非常的多
另一个rpc框架发展的目标是支持服务治理,主要的精力放在服务发现、路由、容错处理等方面,主要围绕一个语言开发,可能也有一些第三方语言曲折的实现服务的调用和服务的实现,这其中的代表,也是比较早的开源的框架就是阿里巴巴的dubbo
主流框架功能对比如下:
功能 | Montan | rpcx | gRpc | Thrift | Dubbo |
---|---|---|---|---|---|
开发语言 | Java | Go | 跨语言 | 跨语言 | Java |
服务治理 | √ | √ | × | × | √ |
多序列化支持 | √ | √ | × | × | √ |
注册中心支持 | √ | √ | × | × | √ |
管理中心 | √ | √ | × | × | √ |
上手难度 | 中 | 低 | 中 | 中 | 中 |
社区活跃度 | 中 | 中 | 高 | 高 | 中 |
最终选用rpcx框架,主要基于以下几个优点:
- Go语言开发,性能优异,适用于高并发场景下
- 完善的服务治理功能
- 集成多种服务注册中心
- 协议简单、框架层面可进行定制化开发