1、高可用架构具备特征
1、主从切换或双机双工
1)主从切换,是当其中一台机器的服务宕机后,对于调用者来说,能够迅速的切换到其他可用服务,从服务升级为主服务,这种切换速度应当控制在秒级别。
当宕机的服务恢复之后,自动变为从服务,主从服务角色切换。主从切换一定是要付出代价的,所以当主服务恢复之后,也就不再替换现有的主服务。
2)双机双工方式(互备互援) 工作原理:两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存储系统
2、集群工作
请求量比较大,单台服务不能满足需要,此时需要多台机器提供同样的服务,将所有请求分发到不同机器上。
高可用架构中应该具有丰富的负载均衡策略和易调节负载的方式。
甚至可以自动化智能调节,例如由于机器性能的原因,响应时间可能不一样,这时候可以向性能差的机器少一点分发量,保证各个机器响应时间的均衡。
3、横向易扩展
当用户量越来越多,已有服务不能承载更多的用户的时候,便需要对服务进行扩展,扩展的方式最好是不触动原有服务,对于服务的调用者是透明的。
2、高可用方案
1、数据库
一主多从,读写分离
2、nginx负载均衡
nginx是一个反向代理服务器,拥有丰富的负载均衡策略,用于客户端与服务器之间,作为负载均衡的实现。
反向代理:被代理的是服务器,也就是客户端访问了一个所谓的服务器,服务器会将请求转发给后台真实的服务器,真实的服务器做出响应,通过代理服务器将结果返给客户端。服务器对于用户来说是隐藏的,用户不知道真实的服务器是哪个。
用nginx做实现服务的高可用,nginx本身可能成为单点,遇见的两种解决方案,
一种是公司搭建自己的DNS,将请求解析到不同的NGINX,
一种是配合keepalive实现服务的存活检测。如下图:
3、redis
1)多主多从模式,三主三从集群模式,部署在三台服务器上
2)伪集群模式,只有一台服务器情况下也可以创建伪集群,多节点。
4、zookpeer
同redis
5、eureka
同redis