传统软件依赖于硬件,而云原生软件的转变在于,它依赖的是服务而非硬件。这些服务本身设计为分布式的,内置了容灾和高可用性。这一思维上的转变至关重要。如果我们没能跟上这种变化,那么在做出技术决策时就容易走入误区。
拿我们的云原生 Kafka 解决方案 AutoMQ 来说,他是完全基于云服务设计和构建的软件。
在存储方面,AutoMQ 依靠的是云盘和对象存储服务。对于熟悉 Kafka 的用户,AutoMQ 的单副本方案可能初听起来让人担忧,担心它无法保证数据的安全性。但实际上,这种担忧大多源于对云盘技术不足够的了解。云盘技术本身包含了三副本机制和自动容灾功能,提供极高的可用性。因此,如果你的软件和服务是基于像云盘或 S3 这样的存储服务,那么完全可以将它们视作高度可靠的分布式存储服务。在设计上层软件时,就无需再额外考虑多副本方案以保证可用性。
因为硬件不如云服务可靠,也缺少容灾和自愈功能,所以传统软件需要通过高可用设计来补偿。但现在,随着云服务的时代到来,我们需要更新我们对软件的看法。这不仅可以大幅降低设计和架构软件时的复杂性,也会从侧面促进整个系统的稳定性提升。