一、前言
云原生,是云计算的下一个发展阶段,从在云运算到为云而生。
在开始学习之前,我们需要掌握一些基础概念,这些概念的理解有助于我们去学习云原生。
二、CAP 定理
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
首先是分别理解这三个概念,我们分别简单描述下。
一致性,顾名思义就是一样的,要做到所有节点访问的数据都是最新的副本。
可用性,也很容易理解,保持服务不中断。
分区容错性,是指,网络分区故障的时候,仍然能够对外提供服务。
那么,怎么样理解三者不能兼顾呢?
实际情况是,分区的故障是经常会出现的,那么你就需要在一致性和可用性上做出取舍,比如,NoSQL会选择追求高可用,而关系型数据库则会追求一致性。
CAP原则的理解有助于我们去设计云原生平台时如何取舍一致性和可用性。
三、十二要素应用(12-Factor )
传统的架构采用的是纵向扩容,即通过加机器的方式提升计算能力,而云端则是采用纵向扩容的方式增加负载,这就需要我们的软件是无状态的。
1、基准代码
一份基准代码(Codebase),多份部署(deploy)。
2、依赖
显式声明依赖关系( dependency )
3、配置
在环境中存储配置
4、后端服务
把后端服务(backing services)当作附加资源
5、构建,发布,运行
严格分离构建和运行
6、进程
以一个或多个无状态进程运行应用
7、端口绑定
通过端口绑定(Port binding)来提供服务
8、并发
通过进程模型进行扩展
9、易处理
快速启动和优雅终止可最大化健壮性
10、开发环境与线上环境等价
尽可能的保持开发,预发布,线上环境相同
11、日志
把日志当作事件流
12、管理进程
后台管理任务当作一次性进程运行
以上是12-Factor的简要描述,如果你从事过稍大一些的团队项目开发,这些问题是不言自明的,只不过可能会不去注意这些点而在实际工作中出现遗漏。
这些原则也同样适用于一般性质的软件开发,开发者习惯之后会对项目有着很好的影响。
四、可用性
可用性在CAP 定理中出现过,这里提到的可用性具体会以多少个9来量化,详情见下表。
可用性指标 | 计算方式 | 不可用时间(分钟) |
99.9% | 0.1% * 365 * 24 * 60 | 525.6 |
99.99% | 0.01% * 365 * 24 * 60 | 52.56 |
99.999% | 0.001% * 365 * 24 * 60 | 5.256 |
五、总结
CAP 定理有助于我们去理解云原生下面对出现故障的解决侧重点。
十二要素应用帮助我们在实际项目开发中构建面向云原生的应用。
这些都是我们应该学习并且习惯的。