洋蔥

耳不闻人是非,目不视人之短,口不言人之过。

相比于高性能、高可用架构模式在最近几十年的迅猛发展来说,可扩展架构模式的发展可以说是步履蹒跚,最近几年火热的微服务模式算是可扩展模式发展历史中为数不多的亮点,但这也导致了现在谈可扩展的时候必谈微服务,甚至微服务架构都成了架构设计的银弹,高性能也用微服务、高可用也用微服务,很多时候这样的架构设计看起来高大上,实际上是大炮打蚊子,违背了架构设计的“合适原则”和“简单原则”。

为了帮助你在实践中更好的进行可扩展架构设计,我将分别介绍几种可扩展架构模式,指出每种架构模式的关键点和优缺点。今天我来介绍传统的可扩展模式,包括分层架构和SOA,后面还会介绍微服务架构。

阅读全文 »

软件系统与硬件和建筑系统最大的差异在于软件是可扩展的,一个硬件生产出来后就不会再进行改变、一个建筑完工后也不会再改变其整体结构。例如,一颗CPU生产出来后装到一台PC机上,不会再返回工厂进行加工以增加新的功能;金字塔矗立千年历经风吹雨打,但其现在的结构和当时建成完工时的结构并无两样。相比之下,软件系统就完全相反,如果一个软件系统开发出来后,再也没有任何更新和调整,反而说明了这套软件系统没有发展、没有生命力。真正有生命力的软件系统,都是在不断迭代和发展的,典型的如Windows操作系统,从Windows 3.0到Windows 95到Windows XP,直到现在的Windows 10,一直在跟着技术的发展而不断地发展。

阅读全文 »

你好,我是华仔。

前几讲我介绍了异地多活方案。它主要用来应对系统级的故障,例如机器宕机、机房故障和网络故障等问题。这些系统级的故障虽然影响很大,但发生概率较小。在实际业务运行过程中,还有另外一种故障影响可能没有那么大,但发生的概率较高,这就是今天我要跟你聊的接口级的故障。

阅读全文 »

上一期,基于异地多活架构设计复杂度最高的“跨城异地”,我结合自己的经验总结了异地多活设计的4个技巧及其核心思想,我认为掌握这些技巧是进入具体设计步骤的前提。

今天,在掌握这4大技巧的基础上,我来讲讲跨城异地多活架构设计的4个步骤。

阅读全文 »

专栏上一期我介绍了三种不同类型的异地多活架构,复习一下每个架构的关键点:

  • 同城异区

关键在于搭建高速网络将两个机房连接起来,达到近似一个本地机房的效果。架构设计上可以将两个机房当作本地机房来设计,无须额外考虑。

  • 跨城异地

关键在于数据不一致的情况下,业务不受影响或者影响很小,这从逻辑的角度上来说其实是矛盾的,架构设计的主要目的就是为了解决这个矛盾。

  • 跨国异地

主要是面向不同地区用户提供业务,或者提供只读业务,对架构设计要求不高。

基于这个分析,跨城异地多活是架构设计复杂度最高的一种,接下来我将介绍跨城异地多活架构设计的一些技巧和步骤,今天我们先来看4大技巧,掌握这些技巧可以说是完成好设计步骤的前提。

阅读全文 »

无论是高可用计算架构,还是高可用存储架构,其本质的设计目的都是为了解决部分服务器故障的场景下,如何保证系统能够继续提供服务。但在一些极端场景下,有可能所有服务器都出现故障。例如,典型的有机房断电、机房火灾、地震、水灾……这些极端情况会导致某个系统所有服务器都故障,或者业务整体瘫痪,而且即使有其他地区的备份,把备份业务系统全部恢复到能够正常提供业务,花费的时间也比较长,可能是半小时,也可能是12小时。因为备份系统平时不对外提供服务,可能会存在很多隐藏的问题没有发现。如果业务期望达到即使在此类灾难性故障的情况下,业务也不受影响,或者在几分钟内就能够很快恢复,那么就需要设计异地多活架构。

今天我来聊聊异地多活架构,接下来还会再讲异地多活架构的设计技巧和流程。

阅读全文 »

计算高可用的主要设计目标是当出现部分硬件损坏时,计算任务能够继续正常运行。因此计算高可用的本质是通过冗余来规避部分故障的风险,单台服务器是无论如何都达不到这个目标的。所以计算高可用的设计思想很简单:通过增加更多服务器来达到计算高可用。

阅读全文 »

存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题。因此,对任何一个高可用存储方案,我们需要从以下几个方面去进行思考和分析:

  • 数据如何复制?
  • 各个节点的职责是什么?
  • 如何应对复制延迟?
  • 如何应对复制中断?

常见的高可用存储架构有主备、主从、主主、集群、分区,每一种又可以根据业务的需求进行一些特殊的定制化功能,由此衍生出更多的变种。由于不同业务的定制功能难以通用化,今天我将针对业界通用的方案,来分析常见的双机高可用架构:主备、主从、主备/主从切换和主主。

阅读全文 »

我在前面的专栏分析高可用复杂度的时候提出了一个问题:高可用和高性能哪个更复杂,大部分同学都分析出了正确的答案:高可用更复杂一些,主要原因在于异常的场景很多,只要有一个场景遗漏,架构设计就存在可用性隐患,而根据墨菲定律“可能出错的事情最终都会出错”,架构隐患总有一天会导致系统故障。因此,我们在进行架构设计的时候必须全面分析系统的可用性,那么如何才能做到“全面”呢?

我今天介绍的FMEA方法,就是保证我们做到全面分析的一个非常简单但是非常有效的方法。

阅读全文 »
0%