RPC选型

作者: 大龄程序员在帝都 | 来源:发表于2017-07-20 13:12 被阅读113次

RPC选型

Apache Thrift

国外用的多,源于facebook,后捐献给Apache基金。是Apache的顶级项目 Apache Thrift。使用者包括facebook, Evernote, Uber, Pinterest等大型互联网公司。 这是目前最为成熟的框架,优点在于稳定、高性能。缺点在于它仅提供RPC服务,其他的功能,包括限流、熔断、服务治理等,都需要自己实现,或者使用第三方软件。

重点参考
江南白衣的Thrift总结

Google Protobuf

和Apache Thrift类似,Google Protobuf也包括数据定义和服务定义两部分。问题是,Google Protobuf一直只有数据模型的实现,没有官方的RPC服务的实现。 直到2015年才推出gRPC,作为RPC服务的官方实现。但缺乏重量级的用户。

Avro

对比分析 取Thrift的传输 Protobuf的序列化

Thrift 提供多种高性能的传输协议,但在数据定义上,不如Protobuf强大。

同等格式数据, Protobuf压缩率和序列化/反序列化性能都略高。
Protobuf支持对数据进行自定义标注,并可以通过API来访问这些标注,这使得Protobuf在数据操控上非常灵活。比如可以通过option来定义protobuf定义的属性和数据库列的映射关系,实现数据存取。
数据结构升级是常见的需求,Protobuf在支持数据向下兼容上做的非常不错。只要实现上处理得当,接口在升级时,老版本的用户不会受到影响。
而Protobuf的劣势在于其RPC服务的实现性能不佳(gRPC)。为此,Apache Thrift + Protobuf的RPC实现,成为不少公司的选择。

对比结论

利用Protobuf在灵活数据定义、高性能的序列化/反序列化、兼容性上的优势,以及Thrift在传输上的成熟实现,将两者结合起来使用,是最优的选择。

连接池设计

自己实现可以基于JDBC链接池做改进,比如参考Apache commons DBCP链接池,使用Apache Pools来管理链接。 在接口设计上,连接池需要管理的是RPC 的Transport:

c++实现

thrift c++ demo
thrift demo

thrift demo use

相关文章

  • [082]-微服务思考

    RPC 技术选型 rpc:apache Thrift, Dubbo,Google protobuf。还有一些公司自...

  • RPC选型

    RPC选型 Apache Thrift 国外用的多,源于facebook,后捐献给Apache基金。是Apache...

  • RPC——技术选型参考

    1、dubbo、motan、rpcx、gRPC、thrift 分布式RPC框架性能大比拼http://colobu...

  • RPC框架及选型

    1. RPC 概述 http://dubbo.apache.org/zh-cn/docs/user/referen...

  • 【动手写】基于msgpack的轻量级C++ Rpc框架(一)

    本文主要是教大家实现一个具有基本功能的rpc框架。 技术选型 很多RPC框架的实现都是基于protobuf的,包括...

  • php项目拆分rpc选型

    背景:团队中所有的项目都是php开发的,且都是用的php-fpm。总共目前有6项目,这几个项目的核心数据都是在一个...

  • 开源RPC框架如何选型?

    一个完整的 RPC 框架主要有三部分组成:通信框架、通信协议、序列化和反序列化格式。根据我的经验,想要开发一个完整...

  • SpringCloud轻松集成Dubbo实现RPC调用

    很久之前在做微服务架构选型的时候就听说阿里的微服务RPC框架dubbo,当时与Spring Cloud以http协...

  • 微服务选型

    选型关键点如图 RPC框架、运行时支持服务、服务安全、后台服务、服务容错、服务监控、服务部署、 微服务总架构 参考...

  • zookeeper到nacos的迁移实践

    ​技术选型 公司的RPC框架是dubbo,配合使用的服务发现组件一直是zookeeper,长久以来也没什么大问题。...

网友评论

      本文标题:RPC选型

      本文链接:https://www.haomeiwen.com/subject/gfidkxtx.html