随着业务量的增加,一次大区故障可能影响几亿人的使用,所以公司对于故障的容忍率越来越低。对了避免出现由于由于一个机房入口光缆被挖断或者机房停电导致服务不可用,所以很多公司做了多活。
多活目前分:
1.同城/异地多活
2.单元化部署
还有一种单元化的概念,把用户按照id或者地理围栏分段,每个段内的用户数据是完备的-本区内的服务有所有依赖的组件,数据库,服务部署能力,mq等等。
1.简单的同城多活部署
![650e5b495193184a8da963a7e69318e7.png](https://i-blog.csdnimg.cn/blog_migrate/8096ee6a1957aa09bb0e6f8d630ef5c0.jpeg)
说明:
1.M1,S1互为主备,M2和S2互为主备,在M1故障时,流量自动切换到S1。M2,S2同理。
2.入口流量随机分配
3.每个机房的服务都需要连接所有的DB
容灾操作:
如果义桥机房出现大规模的故障,那么将主DB全部切换到建德机房,同时将入口流量全部切换到建德机房。此时所有流量在单个区工作,义桥机房恢复后切换回来
优点:
部署和实现简单,目前大部分DB本身就有高可用,例如mongo和大部分公司的mysql高可用方案,只需要在网关层做一次用户的分配。
缺点:
1.系统的可扩展性差,由于DB的连接数有限,访问所有db的情况下,很容易导致连接数瓶颈,系统