Dubbo协议
Dubbo 不仅支持私有的 Dubbo 协议,还支持其他协议比如 Hessian、RMI、HTTP、Web Service、Thrift 等。下面这张图描述了私有 Dubbo 协议的协议头约定。
至于数据序列化和反序列方面,Dubbo 同样也支持多种序列化格式,比如 Dubbo、Hession 2.0、JSON、Java、Kryo 以及 FST 等,可以通过在 XML 配置中添加下面的配置项。
<dubbo:protocol name="dubbo" serialization="kryo"/>
服务治理
服务治理手段包括节点管理、负载均衡、服务路由、服务容错等,下面这张图给出了 Dubbo 框架服务治理的具体实现。
图中的 Invoker 是对服务提供者节点的抽象,Invoker 封装了服务提供者的地址以及接口信息。
~节点管理:Directory 负责从注册中心获取服务节点列表,并封装成多个 Invoker,可以把它看成“List<Invoker>” ,它的值可能是动态变化的,比如注册中心推送变更时需要更新。
~负载均衡:LoadBalance 负责从多个 Invoker 中选出某一个用于发起调用,选择时可以采用多种负载均衡算法,比如 Random、RoundRobin、LeastActive 等。
~服务路由:Router 负责从多个 Invoker 中按路由规则选出子集,比如读写分离、机房隔离等。
~服务容错:Cluster 将 Directory 中的多个 Invoker 伪装成一个 Invoker,对上层透明,伪装过程包含了容错逻辑,比如采用 Failover 策略的话,调用失败后,会选择另一个 Invoker,重试请求。
网友评论