一、核心功能和组件
- 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
- 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
- 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

二、注册调用流程


三、10层架构设计

四、dubbo服务治理
- 过多的服务 URL 配置困难
- 负载均衡分配节点压力过大的情况下也需要部署集群
- 服务依赖混乱,启动顺序不清晰
-
过多服务导致性能指标分析难度较大,需要监控
五、dubbo负载均衡策略
- Random LoadBalance:(缺省) 随机选取提供者策略,有利于动态调整提供 者权重。截面碰撞率高,调用次数越多,分布越均匀;
- RoundRobin LoadBalance:轮循选取提供者策略,平均分布,但是 存在请求累积的问题;
- LeastActive LoadBalance: 最少活跃调用策略,解决慢提供者接收 更少的请求;
- ConstantHash LoadBalance: 一致性 Hash 策略,使相同参数请求总是发到同一提供者,一台机器宕机,可以基于虚拟节点,分摊至其 他提供者,避免引起提供者的剧烈变动;
六、Dubbo 的集群容错方案
-Failover Cluster(缺省)
失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但 重试会带来更长延迟。
-Failfast Cluster
快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写 操作,比如新增记录。
-Failsafe Cluster
失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
-Failback Cluster
失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操 作。
-Forking Cluster
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最 大并行数。
-Broadcast Cluster
广播调用所有提供者,逐个调用,任意一台报错则报错 。通常用于通 知所有提供者更新缓存或日志等本地资源信息。
网友评论