25°

dubbo

什么是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、一致性哈希负载均衡

本文由【BIG_BRA】发布于开源中国,原文链接:https://my.oschina.net/Pirvate/blog/3159751

全部评论: 0

    我有话说: