什么是云原生

云原生是 Pivotal 公司的 Matt Stine 在 2013 年首次提出。PIVOTAL 和 CNCF 都对云原生进行了定义。云原生主要围绕以下技术要点。

容器化

容器提供了一种可移植的、可重用的应用打包和分发方式。

我们可以在本地直接将应用打包成镜像,推送到镜像仓库,在服务端就可以直接拉取镜像,创建容器了。这给我们的开发、调试、部署带了极大便利,支撑高频发布服务。

此外,通过命名空间级别的隔离,容器使得单机的部署密度极大,同时很容易进行水平的伸缩,应对波峰波谷流量的冲击。

服务网格

随着微服务的兴起,成百上千的服务互调用,仅仅靠人已经无法治理。

服务网络可以解决服务间的发现、互联、安全、协议转换、熔断、鉴权等系列问题。将以前需要人工埋点、人工运维的操作,下沉为基础能力。

对业务来说服务网格应该是透明、无感的,但又无处不在。

DevOps

DevOps 实际上包含两个层面的含义,一个是工具链,一个是持续交付的文化。

应用多、服务多,我们所面临的开发环境严峻,复杂度大,容易出错。因此,需要很多自动化、自助化的工具,比如持续集成、持续部署、代码扫描、安全检测等。这些工具链支撑着我们的研发流程。

另一方面,DevOps 是在尝试建立一种面向结果的开发模式。每个成员不再仅仅对单个模块负责,而是从提出需求到交付给用户,全周期的关注。DevOps 强调的是端到端的价值交付。

声明式 API

原始计数为 a=3,现在需要加 2。

如果采用 a=a+1、a=a+1 的方式,就是过程式。

如果采用 a=5 的方式,就是声明式。

声明式强调的是终态,中间过程可以出现不一致、不符合预期,但终态是确定的。

声明式 API 在围绕 Kubernetes 的生态中非常重要,因为在运维场景下,基础设施不稳定,老是会 +1,-1,此时声明式 API 非常有效。

不可变的基础设施

在传统的架构下,需要人工保持所有环境的一致性。随着时间推移,配置肯定会产生漂移,很容易导致事故。

不可变的基础设施提出,一旦创建,不接受任何形式的修改。更新的方式只有一种,先销毁,再重建。

这样带来的好处是,实现了运行环境的可控,可进行管理。

results matching ""

    No results matching ""