万字长文揭穿你,根本就不懂云原生!( 二 )


2.CNCF的定义
CNCF是在2015年由Google联合Linux基金会成立的 , 它是一个非盈利组织 , 主要宗旨是统一云计算接口和相关标准 , 通过技术优势和用户价值创造一套新的通用容器技术 , 推动云计算和服务的发展 。起初CNCF对云原生(CloudNative)的定义包含以下三个方面:应用容器化面向微服务架构应用支持容器的编排调度
到了2018年 , 随着云原生生态的不断壮大 , 所有主流云计算供应商都加入了该基金会 , 且从云原生的全景图中可以看出云原生正在蚕食原先非云原生应用的部分 。
CNCF基金会中的会员以及容纳的项目越来越多 , 该定义已经限制了云原生生态的发展 , CNCF为云原生进行了重新定位 , 并于2018年6月11日明确了云原生定义1.0版本:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中 , 构建和运行可弹性扩展的应用 。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API 。
万字长文揭穿你,根本就不懂云原生!
文章图片

文章图片
图2:云原生代表技术
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统 。结合可靠的自动化手段 , 云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更 。
三、云原生相关技术
依据CNCF发布的云原生1.0版本的定义 , 云原生技术主要包括容器、微服务、服务网格、不可变基础设施以及声明式API , 下面就这几类技术做个概述:
1.容器技术
容器技术和云原生好比一对螺旋体 , 容器技术催生了云原生思潮 , 云原生生态推动了容器技术发展 。从2013年Docker技术诞生 , 到2015年CNCF这个云原生领域重量级联盟成立 , 这不是历史的巧合而是历史的必然 。作为云原生关键技术之一的容器 , 从2013年诞生以来一直是行业关注的焦点之一 。
2013年之前 , 云计算行业一直在为云原生的正确打开姿势而操心 。PlatformasaService(PaaS)看起来是个有前途的方向 。2006年Fotango公司发布的Zimi服务 , 可以说是PaaS行业的鼻祖 , 具有按使用付费、免运维(Serverless)、API化配置和服务等典型云原生的特征;2008年Google推出GoogleAppEngine(GAE);2011年Pivotal发布CloudFoundry 。
这些早期的PaaS平台在云原生领域进行了非常有益的探索 , 推动了云原生生态的健康发展 , 但是这些早期探索技术并没有形成大的行业趋势 , 而是局限在一些的特定的领域 。直到Docker开源 , 大家才如梦方醒 , 原来不是方向不对 , 而是应用分发和交付的手段不行 。
Docker真正核心的创新是容器镜像(dockerimage) , 一种新型的应用打包、分发和运行机制 。容器镜像将应用运行环境 , 包括代码、依赖库、工具、资源文件和元信息等 , 打包成一种操作系统发行版无关的不可变更软件包 。
容器镜像打包了整个容器运行依赖的环境 , 以避免依赖运行容器的服务器的操作系统 , 从而实现“buildonce , runanywhere” 。容器镜像一旦构建完成 , 就变成readonly , 成为不可变基础设施的一份子 。
2.微服务
微服务架构是相对于单体架构来说的 , 两者分属不同的架构风格 。在微服务架构中 , 服务是一个单一的、可独立部署的软件组件 , 它实现了一些有用的功能 , 服务的API封装了其内部实现 , 与单体架构不同 , 开发人员无法绕过服务的API直接访问服务内部的方法和数据 , 因此 , 微服务架构强制实现了应用程序的模块化 。
微服务架构的最核心特性是服务之间的松耦合性 。服务之间的交互采用API完成 , 这样做就封装了服务的实现细节 , 从而实现了在不影响客户端的情况下 , 对实现方式做出修改 。