dubbo是什么?
Dubbo是阿里巴巴开源的,一个基于Java语言的高性能分布式RPC框架,现在已经成为apache的顶级项目。
1.NIO单一长连接——dubbo通信模型实现
https://www.jianshu.com/p/13bef2795c44
2.dubbo角色:
provider:服务提供者
cotainer:dubbo自带容器
register:服务注册中心
consummer:服务消费者
monitor:服务检测
3.如何实现注册和发现失效?
使用zookeeper的临时节点实现服务失效检测。
4.支持哪些通信协议?
-
dubbo(推荐):
连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO异步传输
序列化:Hessian二进制序列化
适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
适用场景:常规远程服务方法调用 -
hessian
基于Hessian的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:表单序列化
适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。
适用场景:需同时给应用程序和浏览器JS使用的服务。
1、Hessian协议用于集成Hessian的服务,Hessian底层采用Http通讯,采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现。
2、Hessian是Caucho开源的一个RPC框架:http://hessian.caucho.com,其通讯效率高于WebService和Java自带的序列化。 -
http
-
基于http表单的远程调用协议。参见:[HTTP协议使用说明]
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:表单序列化
适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。
适用场景:需同时给应用程序和浏览器JS使用的服务,不如使用spring-cloud。 -
rmi
Java标准的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:TCP
传输方式:同步传输
序列化:Java标准二进制序列化
适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
适用场景:常规远程服务方法调用,与原生RMI服务互操作 -
thrift
是由Facebook为“大规模跨语言服务开发”而开发的 -
redis
-
webService
平时总结:
@reference虽然单例,但是使用多路复用,http协议使用okHttp来发送,future阻塞这个请求。