Dubbo & Spring cloud

138 阅读3分钟

Dubbo

  • dubbo架构图

image.png

  • 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异步传输   | |

  • RPC及Netty通信原理

  • 负载均衡

随机(Random LoadBalance)
随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。(权重可以在 dubbo 管控台配置)

轮循(RoundRobin LoadBalance)
轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。

最少活跃调用数(LeastActive LoadBalance)
最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

一致性 Hash(ConsistentHash LoadBalance)
一致性 Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。
  • zookeeper挂了有什么影响
监控中心宕掉不影响使用,只是丢失部分采样数据
数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
注册中心对等集群,任意一台宕掉后,将自动切换到另一台
注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
服务提供者无状态,任意一台宕掉后,不影响使用
服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复

Spring cloud