本文从一个简单的系统例子开始,从单机架构、主从副本、同城灾备、同城双活,再到异地双活、异地多活,由浅入深、循序渐进地讲解了大型分布式系统异地多活容灾架构的技术原理和基本的实现思路,非常适合入门者学习。
在软件开发领域,「异地多活」是分布式系统架构设计的一座高峰,很多人经常听过它,但很少人理解其中的原理。
异地多活到底是什么?为什么需要异地多活?它到底解决了什么问题?究竟是怎么解决的?
这些疑问,想必是每个程序看到异地多活这个名词时,都想要搞明白的问题。
我曾经有幸深度参与过一个中等互联网公司异地多活系统的设计与实施过程。所以今天,我就来和你聊一聊异地多活背后的的实现原理。
认真读完这篇文章,我相信你会对异地多活架构,有更加深刻的理解。
什么是系统可用性
要想理解异地多活,我们需要从架构设计的原则说起。
现如今,我们开发一个软件系统,对其要求越来越高,如果你了解一些「架构设计」的要求,就知道一个好的软件架构应该遵循以下 3 个原则。
它们是:
1)高性能;
2)高可用;
3)易扩展。
其中:
1)高性能:意味着系统拥有更大流量的处理能力,更低的响应延迟(例如 1 秒可处理 10W 并发请求,接口响应时间 5 ms 等等);
2)易扩展:表示系统在迭代新功能时,能以最小的代价去扩展,系统遇到流量压力时,可以在不改动代码的前提下,去扩容系统。
而「高可用」这个概念,看起来很抽象,怎么理解它呢?
通常用 2 个指标来衡量:
&