1. protocol协议的加载入口
2. dubbo 中的protocol及SPI拓展点:
dubbo中已经实现的protocol主要如下图
接下来介绍主要的几个protocol。
2.1 com.alibaba.dubbo.registry.integration.RegistryProtocol
这个protocol主要是管理dubbo的服务注册,管理dubbo与注册中心之间的交互:
2.2 dubbo=com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol
是dubbo默认的protocol,主要用于创建ExchangeServer和ExchangeClient 目前dubbo已经实现的server主要有:
长连接部分主要有netty和mina,具体使用的哪个是通过spi transporter拓展文件来指定,netty为默认的:
2.3 rmi=com.alibaba.dubbo.rpc.protocol.rmi.RmiProtocol
使用的是java的rmi机制进行直连通信。
2.4 hessian=com.alibaba.dubbo.rpc.protocol.hessian.HessianProtocol
使用的是HessianSkeleton进行通信,注意这里的hessian和hessian序列化不是一个意思
2.5 com.alibaba.dubbo.rpc.protocol.http.HttpProtocol
- server端实现的是HttpServer,主要的实现有:
- client端实现主要有httpUrlConnection和commons包中的CommonsHttpInvokerRequestExecutor
2.6 其他的protocol
- com.alibaba.dubbo.rpc.protocol.webservice.WebServiceProtocol:webservice协议的实现
- thrift=com.alibaba.dubbo.rpc.protocol.thrift.ThriftProtocol:thrift协议
- memcached=com.alibaba.dubbo.rpc.protocol.memcached.MemcachedProtocol:memcached协议
- redis=com.alibaba.dubbo.rpc.protocol.redis.RedisProtocol:redis协议
- rest=com.alibaba.dubbo.rpc.protocol.rest.RestProtocol:rest协议
3. dubbo的序列化
这里顺便提一下dubbo的序列化:
com.alibaba.dubbo.common.Constants#DEFAULTREMOTINGSERIALIZATION中显示的默认的序列化方式是hessian2: