Dubbo 框架学习笔记九
Dubbo 框架学习之集群:
Dubbo 独立出了一个实现集群功能的模块—— dubbo-cluster。
为了保证服务的可靠性、吞吐量以及容错能力,我们通常会在多个服务器上运行相同的服务端程序,然后以集群的形式对外提供服务。根据各项性能指标的要求不同,各个服务端集群中服务实例的个数也不尽相同,从几个实例到几百个实例不等。
这样就会出现几个需要解决的问题:
程序是否要感知每个服务端地址?
程序的一次请求,到底调用哪个服务端程序呢?
请求失败之后的处理是重试,还会是抛出异常?
如果是重试,是再次请求该服务实例,还是尝试请求其他服务实例?
服务端集群如何做到负载均衡,负载均衡的标准是什么呢?
…………
dubbo-cluster 模块的架构以及最核心的 Cluster 接口。
dubbo-cluster 模块的主要功能是将多个 Provider 伪装成一个 Provider 供 Consumer 调用,其中涉及集群的容错处理、路由规则的处理以及负载均衡。
dubbo-cluster 主要包括以下四个核心接口:
Cluster 接口,是集群容错的接口,主要是在某些 Provider 节点发生故障时,让 Consumer 的调用请求能够发送到正常的 Provider 节点,从而保证整个系统的可用性。
Directory 接口,表示多个 Invoker 的集合,是后续路由规则、负载均衡策略以及集群容错的基础。
Router 接口,抽象的是路由器,请求经过 Router 的时候,会按照用户指定的规则匹配出符合条件的 Provider。
LoadBalance 接口,是负载均衡接口,Consumer 会按照指定的负载均衡策略,从 Provider 集合中选出一个最合适的 Provider 节点来处理请求。
版权声明: 本文为 InfoQ 作者【风翱】的原创文章。
原文链接:【http://xie.infoq.cn/article/1f85ef56fcf915444cc4a75ab】。文章转载请联系作者。
评论