dubbo支持的协议以及底层实现机制
协议 | 底层实现 | 协议特点 | 序列化组件 | 性能 |
dubbo | dubbo(参照代码Codec2接口及相关实现,目前dubbo中只有dubbo协议是自主实现,其他都是依赖第三方框架) |
1. 协议头里记录序列化组件ID来决定客户端和服务端按照什么方式来编解码,请求ID对于response的解码从本地取该response对应的invocation来做解码。对于request则会在请求头里记录参数类型来做解码。 2. 底层是直接使用netty做tcp通信。 3. 仅支持java语言 |
可选。 avro、fastjson、fst、gson、hessian2、jdk、kryo、msgpack、native-hession、protobuf、protostuff |
根据选择的底层序列化组件有关 |
grpc | grpc-netty |
https://github.com/grpc/grpc/blob/fd3bd70939fb4239639fbd26143ec416366e4157/doc/PROTOCOL-HTTP2.md。 1. 在使用之前需要先生成代码。 2. 底层基于http2实现网络通信 3. 跨语言 |
默认为 protobuf | 根据选择的底层序列化组件有关 |
hassian | hassian |
底层基于http,利用hassian做序列反序列化 |
rpc框架比较: https://blog.csdn.net/zl_StepByStep/article/details/89303881
dubbo: dubbo
grpc: grpc-netty
hessian:hassian(caucho) http
http: json-rpc(https://github.com/briandilley/jsonrpc4j) http
injvm: 直接调用对象
memcached: xmemcached 只支持memcached调用 tcp
native-thrift: libthrift
redis:jedis
rest: servlet/jetty/tomcat: resteasy; netty:resteasy-netty
rmi:spring
thrift:废弃
webservice: 服务基于http(内嵌tomcat/jetty..),协议基于cxf-rt-frontend-simple
xml: xmlrpc-server