云原生是一种理念,一个技术栈的集合。那么相对应的技术栈主要有:容器、服务网格、微服务、不可变基础设施和声明式API。
- 容器:容器是与系统其他部分隔开的一系列进程。运行这些进程所需的所有文件都由一个镜像提供,这意味着从开发到测试再到生产的整个过程中,容器都具有可移植性和一致性。简单的说容器就是存放应用和应用相关依赖的“独立集装箱”,根据运送的货物的不同特性可以制定多种集装箱类型(即容器镜像)。
- 服务网格:服务网格简单的说可以看做是我们平时用的代理软件,但这个代理软件又更加的智能。Service Mesh可以看做是传统代理的升级版,用来解决现在微服务框架中出现的问题,可以把 Service Mesh看做是分布式的微服务代理。
- 微服务:将应用程序构造为一组松散耦合的服务。在微服务体系结构中,服务是细粒度的,协议是轻量级的。简单的说就是其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
- 不可变基础设施:这里基础设施可以理解为一个应用运行所需要的基本需求,不可变性最基本的就是指运行服务的服务器在完成部署后,就不在进行更改。这里指代容器镜像。
- 声明式API:描述最终运行环境的状态,而由系统来决定如何来创建这个环境。例如,你的描述就变成“创建一个有三个Nginx的集群”,而不是把创建Nginx的命令运行三次组成一个集群。这样的好处是当运行环境与描述不符合时,系统能检测到差异,并自动修复,这样系统就有了自动容错的功能。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。