dubbo
dubbo是一个分布式服务框架,致力于提高性能和透明化远程RPC远程服务调用方案。
SOA服务治理方案(自行百度)。
dubbo能做什么?
透明化的远程方法调用。
软负载均衡及容错机制。
服务自动注册于发现,注册中心基于接口名查询服务提供者ip。
dubbo服务之间通讯协议有哪些?
第一:dubbo协议
dubbo缺省协议采用单一长连接合NIO异步通讯,适合于小数据量大并发的服务调用。
第二:rmi协议
java标准的远程调用协议
连接个数:多个连接
连接方式:短连接
传输协议:tcp
传输方式:同步
序列化:java标准二进制序列化
范围:传入传出参数数据大小包混合,消费者与提供者个数相近,可传文件。
采用jdk标准的java.rml实现,采用阻塞短连接合jdk标准序列化范式
commons-collections3 与commons-collections4存在反序列化风险
如果接口继承了java.rmi.remote接口,可以与原生的RMI互操作
如果没有继承会自动生成一个remote接口并继承java.rmi.remot
如果再spring设置中定义的了就会走spring的rmiLnvocationHandler接口
第三:hessian协议
基于hessian远程调用协议
连接个数:多个连接
连接方式:短连接
传输协议:http协议
传输方式:同步
序列化:表单序列化
范围:传入传出参数数据大小包混合,提供者比消费者数量多。可以通过表单或者url传入参数。暂不支持文件传输。
hessian底层采用http通讯,采用servlet暴露服务,dubbo缺省内嵌jetty作为服务器实现
约束:
参数及返回值需实现serializable接口
参数及返回值不能自定义实现List、map等接口,只能用jdk自带的实现
第四:http协议
连接个数:多连接
连接方式:短连接
传输协议:http
传输方式:同步
序列化:表单序列化
范围:与hessian协议相同
第五:webservice协议
连接个数:多连接
连接方式:短连接
传输协议:http
传输方式:同步传输
序列化:SOAP文本序列化
场景:系统集成,跨语言调用
基于cxf的frontend-simple合tansports-http实现
约束:
参数及返回值实现serializable接口
参数尽量使用基本类型和POJO
第六:thrift协议
对原生thrift的扩展
不支持null,不能传null
第七:memached协议
第八:redis协议
都是通过脚本或者手工填写表单注册服务地址
总结:
八大远程调用中:
基于http协议:hessian协议、http协议、webservice
基于缓存的协议:memached协议、redis协议
序列化方式有哪些:
hessian(默认)、java自带、JSON
dubbo协议默认:dubbo协议
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
详见官方文档:http://dubbo.apache.org/zh-cn/docs/dev/design.html
config 配置层
proxy 服务代理层
registry 注册中心层
cluster 路由层
monitor 监控层
protocol 远程调用层
exchange 信息交换层
transport 网络传输层
serialize 数据序列化层
负载均衡LoadBalance :
1、权重
2、随机
3、最小活跃数:活跃调用数越小,表明该服务提供者效率越高
4、一致性哈希负载均衡
以上是 dubbo 的全部内容, 来源链接: utcz.com/z/512861.html