RPC 调研

15 May 2017

REST (or JSON over HTTP 1.1)

广义来说当然也算是RPC, 不过现在”RPC”貌似都是特指使用二进制协议的轮子

优点:

缺点:

设计检查工具:

JSON-RPC

--> { "method": "echo", "params": ["Hello JSON-RPC"], "id": 1}
<-- { "result": "Hello JSON-RPC", "error": null, "id": 1}

Redis Protocol

了解到公司内部也在使用, 好处是通讯协议异常简单, 也是基于文本的协议.

gRPC

源于Google的内部RPC框架, 使用protobuf进行编码解码.

优点:

Thrift

Thrift vs gRPC

Avro RPC

调研Avro格式原因: Avro格式在Hadoop以及AWS大数据的生态圈里面. 考虑”不远的”将来ETL过程日志计划统一用Avro格式存储. Avro也有RPC支持, 虽然日志序列化和RPC没啥关系, 但是如果能够用一套序列化方案是不是更加简单一些.

题外话: 日志/数据最终列式存储, 落地到S3 / HDFS, 一般采用 Parquet 格式, 从 Avro / Thrift / Protobuf 格式生成 Parquet 文件的便利性需要调研. (Avro => Parquet , 由于都是Apache系列, 支持是没有问题的)

优点: 预编译是一个可选项, 一个JSON描述的数据结构. 更加适合动态语言.

缺点:

TChannel

优点:

缺点:

Go 自带的 RPC

Go端开发考量

PHP端调用的考量

Reference

HOME