高可用和负载均衡架构设计模式

下面总结一下常见的高可用和负载均衡架构模式。html

 

1. 客户端切换。

客户端配置多个服务器地址。若是发生某个服务器没法访问或者使用异常,客户端就切换到其它服务器上。前端

优势:简单,高效,能够在业务层面检测服务可用性mysql

缺点:须要提早配置。nginx

 

Mysql connect 这样作load balance 和failed over .在JDBC链接上能够配置多个服务器。sql

 

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html#connector-j-reference-url-format缓存

 

 

# Connection URL for a server failover setup: 
jdbc:mysql//primaryhost,secondaryhost1,secondaryhost2/test

 

 

 

 

2. DNS映射

DNS服务返回不一样的IP来达到切换和负载均衡的效果。因为DNS会缓存,实际使用中问题会比较多。.服务器

优势:对使用者是透明,网络

缺点:因为DNS缓存问题,可能切换不及时架构

 

3. 服务注册发现

注册服务器(zookeeper)用来管理当前能够用的服务提供。dubbo使用这种方式来实现。负载均衡

     优势:可使用复杂的负载均衡策略,能够实现服务路由。

     缺点:实现复杂

 

 

http://shiyanjun.cn/archives/325.html

 

4. keepalive+浮动IP

 

若是正在使用的机器出问题,外网Ip能够根据状况,分配到另一台主机上。这样IP切换对外部访问者是透明的。不过要实现浮动IP,对底层网络的支持。在如今的云服务器中没法使用。

 

优势: 高效,对客户端透明

缺点: 对主机网络有要求,没法在云服务器中使用。

 

5 代理服务器(nginx ,lVS,Haproxy)

代理服务器检测上游服务器是否可用。而且会根据必定策略来路由前端过来的请求。为了不代理服务器出现故障,致使系统没法被访问。因此通常都要结合keepalive+vip一块儿使用。

优势: 支持大量服务器,能够配置复杂路由规则

缺点:代理服务器有单点问题,故障检测不及时

 

总结以上模式主要区别在:

1. 服务器信息谁维护,客户端,代理服务器或者注册服务

2. 故障发现手段。通用的检测方式只能检查端口能不能链接,若是出现服务器僵尸状况经常不能及时被发现。

3. 服务器利用率。 

相关文章
相关标签/搜索