Dubbo
- dubbo架构图
- dubbo序列化方式
Hessian 序列化:是修改过的 hessian lite,默认启用
json 序列化:使用 FastJson 库
java 序列化:JDK 提供的序列化,性能不理想
dubbo 序列化:未成熟的高效 java 序列化实现,不建议在生产环境使用
-
dubbo协议 |协议名称|实现描述|连接|使用场景| |:----|:----|:----|:----| |dubbo|传输:mina、netty、grizzy
序列化:dubbo、hessian2、java、json| dubbo缺省采用单一长连接和NIO异步通讯 |1.传入传出参数数据包较小
2.消费者 比提供者多
3.常规远程服务方法调用
4.不适合传送大数据量的服务,比如文件、传视频| |rmi|传输:java rmi
序列化:java 标准序列化|
连接个数:多连接
连接方式:短连接
传输协议:TCP/IP
传输方式:BIO| 1.常规RPC调用
2.与原RMI客户端互操作
3.可传文件
4.不支持防火墙穿透| |hessian| 传输:Serverlet容器
序列化:hessian二进制序列化
| 连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
| 1.提供者比消费者多
2.可传文件
3.跨语言传输| |http| 传输:servlet容器
序列化:表单序列化| 连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输|1.提供者多余消费者
2.数据包混合| |webservice| 传输:HTTP
序列化:SOAP文件序列化| 连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输| 1.系统集成
2.跨语言调用| |thrift| 与thrift RPC实现集成,并在基础上修改了报文头 | 长连接、NIO异步传输 | | -
负载均衡
随机(Random LoadBalance)
随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。(权重可以在 dubbo 管控台配置)
轮循(RoundRobin LoadBalance)
轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
最少活跃调用数(LeastActive LoadBalance)
最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。
一致性 Hash(ConsistentHash LoadBalance)
一致性 Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。
- zookeeper挂了有什么影响
监控中心宕掉不影响使用,只是丢失部分采样数据
数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
注册中心对等集群,任意一台宕掉后,将自动切换到另一台
注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
服务提供者无状态,任意一台宕掉后,不影响使用
服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复