高可用概念
软件系统不容易挂机,就是可用性要高,一般来说就是加机器,挂了一台,另一台顶上,这样就高可用了
转载于:https://my.oschina.net/xlpapapa/blog/3220395
常见高可用解决方案
集群
集群其实就是同一套系统,部署在不同的服务器上,常见的有数据库集群,注册中心集群,nignx集群等。再通过负载均衡,让应用尽量不在一时间挂壁。
主备
mysql和redis都有主机备机的概念,从库也是备机的一种说法,一般做读写分离,主机写操作,备机同步主机的数据,只做查询。
双活
双活,区别于主备,两个应用都同时承担着相同流量访问压力,在一台打挂了之后,自动切流量到另一台上。对比主备,备机空占资源,双活都在干活。附上两张没有啥诚意的图
灾备容灾
机房因为大自然的原因不可用,则是整套系统数据的丢失,一般在同一个城市中再备份一套数据中心,太远,光纤数据延迟导致同步不够及时(比如支付宝需要高实时性则不适合异地容灾),太近失去了灾备的意义。像金融机构的数据中心一般都是异地多活。
异地容灾
本地容灾
双活&多活数据中心
两地三中心
高可用的设计原则
- 降级
- 开关集中化管理
- 可降级的多级读服务
- 开关前置化:Nginx->Tomcat,将开关前置到Nginx接入层
- 限流 防止恶意请求流量、恶意攻击、或者防止流量超出系统峰值。可用Nginx过滤IP
- 切流量 和集群、双活差不多,挂机切到其他机器。DNS、Nginx、LVS切换流量。
- 可回滚 发新的应用报错,及时回滚