作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬
学习必须往深处挖,挖的越深,基础越扎实!
阶段1、深入多线程
阶段2、深入多线程设计模式
阶段3、深入juc源码解析
码哥源码部分
码哥讲源码-原理源码篇【2024年最新大厂关于线程池使用的场景题】
码哥讲源码-原理源码篇【揭秘join方法的唤醒本质上决定于jvm的底层析构函数】
码哥源码-原理源码篇【Doug Lea为什么要将成员变量赋值给局部变量后再操作?】
码哥讲源码【谁再说Spring不支持多线程事务,你给我抽他!】
打脸系列【020-3小时讲解MESI协议和volatile之间的关系,那些将x86下的验证结果当作最终结果的水货们请闭嘴】
1 介绍
互联网行业内在进行微服务高可用建设的时候,不可避免的要考虑一个事情,如何部署才能提高系统的可用性和稳定性。
所以一般情况下,不会只部署一个机房,这样无法完全避免一个机房内网络故障、机房断电,遭受区域网络攻击的风险。
所以有了多机房建设的,但是多机房建设同样也有问题,他们无法近距离的部署,如果部署区域太近(如在同一个城市),依然无法避免区域断电、洪灾、水灾、火灾、地震等灾难情况的发生。
所以业内的大型互联网企业,会耗费大量的人力物理在基础设施建设方面。通过资源的冗余来保证服务的可持续性,这种其实就是资源博弈的过程。
2 高可用架构模型
2.1 两地安中心
两地三中心是一种容灾解决方案,指的是一个生产中心、一个同城灾难备份中心、一个异地灾难备份中心。生产中心的数据同步地复制到同城灾难备份中心,同时,生产中心的数据异步地复制到异地灾难备份中心。同城灾备中心通常具备与生产中心等同业务处理能力,应用可在不丢失数据的情况下切换到同城灾备中心运行,保持业务连续运行。在生产中心和同城容灾中心同时不可用时,可在异地的容灾中心实现业务的恢复,保持业务连续性。
大量案例证明通过这种方案系统能够较快地进行响应和止损,尽可能保全业务数据不丢失,实现更优的RPO和RTO。所以,“两地三中心”容灾解决方案得到了广泛的应用。
具体来说,“两地三中心”具备以下优点:
- 提高系统可用性:两个地理位置的数据中心可以同时承担服务,当一个数据中心发生故障时,另一个数据中心可以继续提供服务,保证系统的可用性。
- 数据备份与恢复:在“两地三中心”架构中,同城双中心可以相互备份数据,并实时同步数据,减少数据丢失的风险。同时,当一个数据中心发生故障时,异地灾备中心可以用备份数据进行业务的恢复。
- 灾备保障:对于一些对数据安全和业务连续性有严格要求的应用,通过“两地三中心”架构可以大大提高灾备保障能力。即使在遭遇自然灾害等不可控因素时,异地灾备中心也可以接管业务,保证业务的连续运行。
- 负载均衡与性能优化:通过将数据和业务分布在两个或三个中心,可以平衡负载,提高系统的性能和响应速度。
因此,“两地三中心”的架构对于那些需要高可用性、数据备份和恢复、灾备保障以及性能优化的系统来说是非常有必要的。在实际应用中,“两地三中心”的架构可以根据实际需求进行灵活调整和扩展。
2.2 异地多活
异地多活是一种系统高可用的解决方案,它通过在多个不同机房建立多个数据中心,并且使这多个数据中心都可以同时在线提供服务来避免当出现机房断电、光纤被挖断等场景出现服务不可用的场景,实现服务高可用,同时这多个数据中心之间需要进行数据相互同步来保证数据的最终一致性。
在考虑哪些业务需要异地多活的时候,需要结合业务的重要程度,以及业务是否存在全局逻辑,以及异地多活场景中解决全局逻辑的成本来考虑是否需要做异地多活,同时需要考虑业务是否需要保证数据强一致性。例如,对于登录业务,这是用户中心最重要的业务场景,如果用户登录不了,特别是重度用户,则是非常严重的事故,所以登录需要做异地多活。同时,每个数据中心都有用户的账号和密码信息,故可以做到异地多活。
异地多活是指在不同城市建立独立的数据中心,以实现数据的多个备份和业务的高可用性。以下是实现异地多活的详细解决方案:
- 建立多个数据中心:在不同的地理位置建立多个数据中心,每个数据中心具备相同的业务功能,可以独立承担业务运行。
- 数据备份与同步:在多个数据中心之间进行数据备份和同步,保证数据的多个副本存在。当某个数据中心发生故障时,其他数据中心可以提供服务,同时将数据同步到其他数据中心。
- CDN+负载均衡:CDN即内容分发网络,其目的是在现有的Internet上增加一层新的网络架构,将网站的内容发布到最接近用户的服务器,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。负载均衡技术,负责将用户请求分发到不同的数据中心,以实现业务的负载均衡和高可用性。
- 数据复制:通过数据复制技术,将数据从一个数据中心复制到另一个数据中心,以实现数据的多个副本存在,提高数据的安全性和可靠性。
- 数据容灾:在数据中心发生故障时,通过数据容灾技术,将数据备份到其他数据中心,以实现数据的可用性和完整性。
- 应用容灾:通过应用容灾技术,将应用程序从一个数据中心迁移到另一个数据中心,以实现应用程序的高可用性和故障恢复能力。
- 监控和管理:通过监控和管理工具,实时监控数据中心的运行状态和应用程序的运行情况,以便及时发现和解决问题,提高系统的可用性和可靠性。
以上是实现异地多活的详细解决方案,需要根据具体的业务需求和应用场景进行具体的规划和设计。