1.
-
CAP理论
-
C(Consistency,一致性):读操作是否总能读到前一个写操作的结果
-
A(Availability,可用性):非故障节点应该在合理的时间内作出合理的响应(不是错误或超时的响应)
-
P(Partition tolerance,分区容错性):当出现网络分区现象后,系统能够继续“履行职责”
-
CAP是Consistency、Availability、Partition tolerance的首字母:
分布式通过引入P来解决单机极限和单点故障的问题。但是引入了P也意味着破坏了单点的AC特性。因为根据CAP理论,三者不可兼得,必须舍弃其一。所有分布式系统在设计之初,首先得明确在A和C中如何取舍。不同应用场景会做不同的取舍。而Zookeeper的选择是舍A保CP。
既然Zookeeper选择的是CP模型,那么它何时不A呢?两种模式下不A:① ZK集群处于崩溃恢复模式,此时在选举Leader,对外不可用;② ZK过半节点挂掉,集群瘫痪。
2.双机高可用
Nginx负载均衡
负载均衡是一种集群技术,旨在解决高并发场景下的服务问题。其硬件环境模型可以由一台前置服务器和多台服务能力等价的后端服务器表示。
前置服务器负责请求的接收,并以某种负载均衡策略将客户端请求分发到后端处理,实现业务量的合理分配,避免后端服务器出现一台设备繁忙,而其他设备资源得不到充分利用的情况。
Nginx负载均衡服务器的双机高可用
如果前置服务器只有一台Nginx,当发生Nginx服务器单点故障时,整个网站都会不可用。因此,需要组建Nginx负载均衡服务器群组,实现故障转移与高可用。
双机高可用一般通过虚拟 IP 方式实现,目前分为2种实现方式:
- 一台主服务器 + 一台热备服务器,正常情况下主服务器绑定一个公网虚拟 IP,提供负载均衡服务,热被服务器处于空闲状态。当主服务器发生故障时,热被服务器接管主服务器的虚拟 IP,提供负载均衡服务
- 两台服务器都处于活动状态,各自绑定一个公网虚拟 IP,提供负载均衡服务,当其中一台服务器发生故障时,另一台服务器接管发生故障服务器的虚拟 IP
一般采用nginx+keepalived,它是一个高性能的服务器高可用或者热备解决方案,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现Web服务器端的高可用;
Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA),VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或者多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或者多个),从而实现高可用;
Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA),VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或者多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或者多个),从而实现高可用;
https://zhuanlan.zhihu.com/p/94601694