云原生生物的名词解释安全的定义就有这么重要吗


作者 | 王银利(芸峥)

攻技者短之;悝论者,长之;践行者胜之。可以这么说一座城市的良心就体现在下水道上,不论这座城市有多少高楼大厦建设得有多么宏伟,只偠是下雨天雨水就变成了城市良心的检验者。如果由城市建设来类比云原生生物的名词解释体系的建设那么云原生生物的名词解释的良心又应该是什么?谁是云原生生物的名词解释的暴风雨谁又是云原生生物的名词解释良心的检验者?

云原生生物的名词解释带来的业務价值非常多主要有如下几条:

  • 快速迭代:天下武功,唯快不破我们想要在残酷的市场竞争中争得一席之地,就必须先发制人云原苼生物的名词解释的本质就是帮助业务快速迭代,核心要素就是持续交付
  • 安全可靠:云原生生物的名词解释通过可观测机制,可以快速讓我们从错误中恢复同时通过逻辑多租和物理多租等多种隔离方式,限制非法使用
  • 弹性扩展:通过将传统的应用改造为云原生生物的洺词解释应用,做到弹性扩缩容能够更好地应对流量峰值和低谷,并且达到降本提效的目的
  • 开源共建:云原生生物的名词解释通过技術开源能够更好地帮助云厂商打开云的市场,并且吸引更多的开发者共建生态从一开始就选择了一条“飞轮进化”式的道路,通过技术嘚易用性和开放性实现快速增长的正向循环又通过不断壮大的应用实例来推动了企业业务全面上云和自身技术版图的不断完善。

接下来本文将由浅入深,从云原生生物的名词解释的方方面面进行分析包括基础的概念、常用的技术、一个完整的平台建设体系,让大家对雲原生生物的名词解释有个初步的了解

云原生生物的名词解释的定义一直在发生变化,不同的组织也有不同的理解比较出名的有 CNCF 和 Pivotal 。丅面是 CNCF 的最新定义:

云原生生物的名词解释技术有利于各组织在公有云、私有云和混合云等新型动态环境中构建和运行可弹性扩展的应鼡。云原生生物的名词解释的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API

这些技术能够构建容错性好、易于管理囷便于观察的松耦合系统。结合可靠的自动化手段云原生生物的名词解释技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

云原生生物的名词解释计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统来推广云原生生物的名词解释技术。通过将最湔沿的模式民主化让这些创新为大众所用。

十五要素综合了他们关于 SaaS 应用几乎所有的经验和智慧是开发此类应用的理想实践标准。十伍要素适用于任何语言开发的后端应用服务将流程自动化和标准化,降低新员工的学习成本;并且划清了与底层操作系统间的界限以保证最大的可移植性。

下图可概览云原生生物的名词解释所有的定义和特征:

从字面意思上来看云原生生物的名词解释可以分成云和原苼生物的名词解释两个部分。

云是和本地相对的传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端云包含了 IaaS、PaaS 和 SaaS 。

原生苼物的名词解释就是土生土长的意思我们在开始设计应用的时候就考虑到应用将来是运行在云环境上,要充分利用云资源的优点比如?云服务的弹性和分布式优势

云原生生物的名词解释既包含技术(微服务、敏捷基础设施)也包含管理(DevOps、持续交付、康威定律、重組等)。云原生生物的名词解释也可以说是一系列云技术、企业管理方法的集合

1)云原生生物的名词解释不是业务本身

好几个人问我云原生生物的名词解释是什么,我会反问他们如果你想自己的业务快速迭代,你希望云原生生物的名词解释是什么云原生生物的名词解釋一定不是一个具体的东西,而是代表了如何追求问题的本质它本来是什么,就是什么它是一套方法论。

云原生生物的名词解释的本質是帮助业务快速迭代不是业务本身,不是技术堆叠不是生搬硬套。我们不应该看我们有什么而要看客户本来要的是什么。

那么云原生生物的名词解释其实就是代表了科技的进步我们不光要提高新业务的迭代效率,还要打破旧业务的迭换效率一个好的架构一般会兼容人类的愚蠢,所以这里的旧业务可能是历史包袱可能是知识瓶颈带来的偏见。

我们无时无刻都在变成旧无时无刻都在创造新。人偠敢于质疑自己质疑过去,质疑权威才有创建新的动力和洞见。

云计算(Cloud Computing)和云原生生物的名词解释(Cloud Native)有很大区别主要体现在以丅六个方面:

云原生生物的名词解释应用程序源于云原生生物的名词解释。如前所述它们构建并部署在云中,真正地访问了云基础设施嘚强大功能云计算应用程序通常是在内部使用传统基础设施开发的,并且经过调整后可以在云中远程访问

云原生生物的名词解释应用程序被设计为多租户实例托管(微服务架构)。云计算应用程序在内部服务器上运行因此它们没有任何多租户实例。

云原生生物的名词解释应用程序是高度可扩展性可以对单个模块进行实时更改,而不会对整个应用程序造成干扰云计算应用程序需要手动升级,从而会導致应用程序中断和关闭

云原生生物的名词解释应用程序不需要任何硬件或软件上的投资,因为它们是在云上进行的通常可以在被许鈳方获得,因此使用起来相对便宜云计算应用程序通常比较昂贵,因为它们需要进行基础升级以适应不断变化的需求

由于不需要进行硬件或软件配置,云原生生物的名词解释应用程序很容易快速实现云计算应用程序需要定制特定的安装环境。

3)云原生生物的名词解释夲身是复杂的

云原生生物的名词解释改变的不止是技术最终去改变的是业务。云原生生物的名词解释既然会帮助业务快速迭代那么业務代码和项目流程必然会发生根本性变化。典型的就是业务越来越轻底座越来越厚,数据处理越来越自动化非人用户越来越多。

接下來我们可以从尤瓦尔赫拉利的三部简史来窥探下云原生生物的名词解释的本质。

世纪随着人工智能的发展人类社会将由人文主义逐渐過渡到数据主义。人类社会如果是一个比较大的数据网络包括人类的情感都只是进化论选择下的生物算法,那么每一个人只是其中的一個数据处理器可以是智人,可以是虚拟人也可以是未来的超人类。我们可以拿共产主义和资本主义的区别来举例共产主义是集中式算法,通过国家的数据网络计算每一个人的需求再进行分配;资本主义是分布式算法少数的资本家掌控大部分的社会资源。

可以说以前嘚数据是一个孤岛部署在几个物理机上,管好自己就可以不会影响别人。而今天不一样所有的应用都在线化,逐渐变成一个有生命仂的资产后应用的约束也会越来越严格和复杂,所有的数据流向及依赖完全是你人为难以预期的光铺人已经解决不了了。

云原生生物嘚名词解释其实很复杂本质是连接数据,将数据从杂乱无序处理为信息、知识、智慧云原生生物的名词解释的复杂来源于它想容纳更哆复杂的事务和结构,但某一方面来说云原生生物的名词解释其实又很简单,因为它给终端用户带来无穷无尽的便利和丰富功能但又無需他们感知。复杂和简单是相对的底层越复杂,上层越简单

什么是云原生生物的名词解释应用呢?和云原生生物的名词解释的关系叒是什么云原生生物的名词解释应用的定义基本如下:

云原生生物的名词解释应用,是指原生生物的名词解释为在云平台上部署运行而設计开发的应用云原生生物的名词解释应用不只是将应用打包成 Docker 镜像,而且需要将镜像部署到到 Kubernetes 容器云上运行公平的说,大多数传统嘚应用不做任何改动,都是可以在云平台运行起来的只不过这种运行模式,不能够真正享受云的红利我们也叫做云托管(Cloud Hosting)应用。

叧外云原生生物的名词解释应用有各种不同的分类方式。根据业务场景主要可以按照状态和职能进行分类。

云原生生物的名词解释应鼡主要分为无状态应用(stateless)和有状态应用(stateful)两类是否有无状态,主要体现为是否需要感知应用实例的状态在 Kubernetes 中,应用实例即 Pod 有状態应用本质上依赖于 Pod 的状态。

无状态应用就是不依赖本地运行环境的应用实例间互相不依赖,可以自由伸缩

  • 无状态应用的实例可类比為牲畜,无名、可丢弃;
  • 运行的实例不会在本地存储需要持久化的数据;
  • 停止的实例所有信息(除日志和监控数据外)都将丢失

有状态應用就是依赖本地运行环境的应用,实例之间有依赖和启动先后关系需要做数据持久化,不能随意伸缩

  • 有状态应用的实例可类比为宠粅、有名、不可丢弃
  • 实例升级和灰度对启停顺序的要求,如分布式选主
  • 需要做数据持久化依赖本地文件和配置。

3)无状态和有状态相互轉化

有状态应用和无状态应用是可以相互转化的大部分的中间件应用都是有状态应用,例如 ZooKeeper、RocketMQ、etcd、MySQL 等大部分的业务应用都是无状态应鼡,例如 Web 类应用、查询类应用等

比如一个比较简单的云产品,在公有云部署时可以依赖公有云的基础设施,所以是无状态;但在专有雲部署时却需要自己解决环境和对其他 BaaS 的依赖,所以是有状态这就是基础设施和运维方式不同造成的差距。

一般情况下我们不提倡應用之间的依赖过于复杂,尤其在专有云场景下复杂的依赖带来的环境问题相当多,拔萝卜带泥几乎要把整个公有云搬到专有云无论對我们还是对客户,都是比较大的心智负担

业务应用本质上都应该是有状态的,不过它可以借助中间件、运维 API、BaaS、Serverless 的能力把有状态转嫁到了中间件上。而能够被转嫁成无状态应用的有状态应用又叫做“伪有状态应用”

通过中间件改造为无状态:大部分业务应用可以使鼡公有云上的中间件产品来实现计算、存储、网络的能力。例如 Web 应用可以使用 RDS 等数据库产品,通过 BaaS 能力开通和依赖 RDS 实例只实现核心的業务逻辑即可。

通过运维 API 改造为无状态:有特殊运维逻辑的应用可以调用运维 API 转嫁运维的复杂性例如 MetaQ 需要主备切换,这时候利用 Kubernetes 上的 etcd 提供的选主 API 给 MetaQ 实例进行打标 MetaQ 开发者就可以像无状态应用一样运维 MetaQ 了。

通过 Serverless 改造为无状态:对于业务逻辑非常简单的应用不一定需要打包鏡像,可直接通过各种 Serverless 平台进行开发交给平台来进行运维。

为了更好的识别伪有状态我们应该从应用的本质而非状态去定义是否有无狀态。而对于 ZooKeeper、etcd、MySQL 这种完全依赖自身应用代码进行运维的中间件就算是比较彻底的有状态应用了,很难进行改造

那么有状态到无状态嘚转化,有状态是消失了吗有状态其实是本质存在的,其实面向终态不是说不去做一些运维操作,而是根据状态变化把这些运维操作交给平台来处理,以期达到的期望状态这个过程就是生命周期的运维了。不是有状态减少了而是有状态不给用户暴露而已。Kubernetes 其实帮夶家解决了 Pod 的有状态而对于有状态应用,我们需要关注 Pod 的生命周期把业务的 Operator 变成平台的 Operator ,就是有状态改造为无状态的主要工作量了

茬云原生生物的名词解释体系下,我们要尽量试着把有状态应用转为无状态应用这样可以尽最大能力地使用云原生生物的名词解释的福利,把可观测和高可用都交给云平台去保障而开发同学只需关心离客户最近的业务。

随着技术的进步有状态应用会不断变成无状态应鼡,只有少数缓存、消息、存储相关的中间件需要进行有状态运维并且慢慢下沉到底层,后面一般人根本不需要了解二者的区别

云原苼生物的名词解释中的应用如果按职能来区分,可以包含业务应用和运维应用两种

业务应用就是业务开发工程师通过 Java、Go、Python 等语言来开发業务代码,然后打包为镜像后部署的应用业务应用主要用来解决业务问题,实现特定的业务功能业务应用的交付物主要是镜像。

在 Serverless 平囼中业务应用也可以是一些函数代码,可以打镜像;也可以不打镜像直接部署到多语言运行环境中。

由于云原生生物的名词解释重点需要解决应用运维自动化的问题而业务应用无法解决自身运维的问题,即自己无法管理自己所以需要运维应用来管理业务应用。

运维應用就是运维开发工程师用 YAML、Helm 等开发的运维代码然后下发到 Kubernetes 上部署的应用。运维应用主要用来解决运维问题实现特殊的运维逻辑。运維应用的交付物主要是 YAML

其实从 DevOps 到 AIOps 之间,还有个 DataOpsKubernetes 的面向终态就像是一个黑盒,让人不知道运行状态如何就像同样能跑到终点,你跑得赽还是我跑得快没人知道所以相对于面向终态又出现了可观测,用来衡量达到终态的过程是否完善是否健康。

因此我们在平时的设計中必须具有数据思维,进行更多的数据建模否则可观测也是无米之炊。我们来看看云原生生物的名词解释的各个环节中都有哪些数據?

  • 我们需要编辑资源的配置并通过 GitOps 或者 K8s 命令进行下发,也叫数据驱动即一切皆配置数据。
  • 资源的各种逻辑都需要执行一系列动作執行动作可以有多种触发方式,即一切皆执行数据
  • 资源内部的生命周期需要编排,资源之间的依赖关系也需要编排本质是编排执行动莋,即一切皆编排数据
  • K8s 是基于事件驱动的架构,K8s 上各种资源状态的变化都会产生事件,即一切皆事件数据
  • 事件流即日志,业务记录即日志动作变化即日志,结构化的日志是可观测的根本即一切皆日志。
  • 无论是配置指令、还是依赖编排亦或者是事件,都是围绕资源进行的所有的 API 都是以资源这个主体进行调用,即一切皆资源数据

经常有人跟我说,云原生生物的名词解释的技术搞得如此火热整忝让我们上云,除了节省成本外为啥我没看出来对业务的快速交付有什么明显帮助呢?我认为可能是你还没找到一套特别适合云原生生粅的名词解释时代的业务架构

有人说汉语是世界上最优秀的表意语言,因为汉语是二维语言基础词汇 2000 多个,其他触类旁通千变万化,形神俱佳思维面广阔。而英语只是一维语言出现一个新事物,就得创造一个新单词没有声调,同类事物的单词也看不出关联但茬表达非海量信息的领域比较擅长,比如编程、数理化表达式等从这里可以类比得出结论,底层的技术用机器语言 0-1 比较便捷而上层的業务就需要一个多维的业务模型。

可以这么说云原生生物的名词解释带来的是不仅技术的发展,更是业务的深刻变革那么我们现今有沒有一套业务模型能指导云原生生物的名词解释时代的复杂业务呢?

典型的如微服务架构事件驱动架构、中台架构,但貌似都无法解决問题笔者也进行了一些探索,发明出一套多维业务组合论并以纵横图的方式来表征。

  • 纵横图:以纵横交错的线条和面积块来细分各个領域
  • 点:业务功能业务组装的最小单位
  • 横向线:微平台,PaaS服务主体单一
  • 纵向线:业务软件,SaaS
  • 圆柱体:业务领域或者技术领域
  • 面积块:解决方案或一站式工作台可按租户、产品、服务控制权限。

我们可以从图中看出每个领域的隔离区域和拓展范围纵横层会变得越来越哆,领域也会分割地越来越细

举个例子,有一个交易系统的应用需要依赖消息队列和数据库,并且想部署到公有云的 Kubernetes 中假设今天没囿这些分层,那么负责这个交易系统的同学需要自己买公有云的机器,然后部署 Kubernetes 再然后部署中间件,接着再部署交易系统并且需要解决各种网络和稳定性问题,结果可想而知

另外,我们还可以从技术的发展来看纵横图的价值技术发展得越快,业务同学感觉事情并沒有以前那么简单了因为业务的复杂度在增加,同时对迭代速度要求更高微服务、容器、中台很多概念都是为了加速创新。解耦是为叻更好的组合那如何来把控粒度呢?这其实可以从物理学的发展看出一二理论上人类文明进化得越高,微观会更微宏观会更宏,例洳量子力学和相对论所以粒度的大小是跟当今社会的创新能力相匹配的。

未来我们要打技术生态对于技术点的组合编排创新必然成为主旋律。可以这么说单点技术很难发挥价值和沉淀下来,也极易被替换靠做单点被集成去获得生态,这条路很难长久一个好的平台,其中的任何一个技术点在都是可替换的技术编排的时代到来了,云原生生物的名词解释的最终目标是解交付而非成本,为了更快创噺

面向终态论,有点类似数据驱动论让软件系统更加接近人类指令的终极理论。K8s 中的面向终态响应式编程中的数据驱动,让事件交給系统来管理我们只需要知道自己想要什么,而不用关心如何实现

可以说,在整个 Kubernetes 设计理念中面向终态是其核心理念,是运维自动囮的关键比如我的应用需要 10 个实例,这机器故障时帮我自动跟换一台等,这些需求通过声明后提交给系统,系统会自动化的完成这些用户期望的事情而这种方式,就是一种面向终态的设计面向终态设计的核心手段就是使用“声明式 API”。

下面主要以 Deployment 为例核心逻辑昰把自定义 CR(MyApp)当做终态,把 Deployment 当做运行态通过比对属性的不一致,编写相关的 Reconcile 逻辑

一张图解释各种资源和 Controller 的关系:

从图中可以得出如丅结论:

但是 Kubernetes 中的面向终态设计还不够完整,它并没有设计各类资源整个生命周期的终态定义例如如何定义资源状态机,如何依赖 BaaS 和 Config 洳何插入钩子,如何订阅事件并处理如何设计完成度和健康度。

运维的本质是面向过程的所以过程也需要定义。如同人的一生的终态昰走向死亡终态真的是我们向往的吗?我们需要去拓宽生命的宽度寻找幸福的意义。云原生生物的名词解释中的运维也是类似的所囿资源都有生命周期,有生命周期就有过程有过程就有状态,有状态就有状态机

云原生生物的名词解释的本质在于连接业务或者数据,比如为了不被云厂商锁定就需要跨云;为了异地多活,就需要跨 Region ;边缘计算中为了简化管理或者组成逻辑集群就需要跨 Kubernetes 集群。在这些场景下中心化就是必然需要解决的问题。

可以这么说大到一个国家,小到一个 ZooKeeper 选主所谓的跨 XXX ,就必然有一个中心化的管理组织┅般来说,我们的物理隔离主要隔离的是数据中心数据分为很多种,我们主要关心用于调度的数据调度的数据都是比较简单表征用户嘚指令,我们把它叫做配置所以云原生生物的名词解释中的中心化管理需要一个全局的调度中心,全局配置中心在复杂的场景下,可鉯在每一个物理集群中加一个可接收和解析到指令的客户端 Agent 即可例如 Prometheus 监控的设计就是如此,我们需要在每一个 node 节点加一个监控的 Agent 进行系統监控并搜集数据上报

自己无法编排和管理自己,自身一定是自闭环的所以总有更上一层的对象编排自己。例如所有的集群调度系统嘚架构都是无法横向扩展的如果需要管理更多的服务器,唯一的办法就是创建多个集群;还有容器无法编排自己所以出现了 Kubernetes ;再有就昰在分布式选主中,master 只能有一个如果有两个 master,就不知道用哪个实例管理了;又比如在同一个团队只能有一个主管要是有两个主管,必嘫这两个主管上面还必须出现一个主管做最终的裁定

另外,每一层的位置不是一成不变的业务堆栈在逐渐上移,今天我们认为复杂的倳未来会全部自动化掉。

解耦的关键在于自闭环组合的关键在于编排,自动化的关键在于调度和调协

在云原生生物的名词解释中还囿一个现象,就是很多功能都能引用到资源编排上去例如云服务申请叫资源编排,运维调度叫资源编排应用部署也叫资源编排。资源佷大编排也很大,资源+编排就是大上加大Kubernetes 里一切皆资源,机器是资源存储和计算是资源,服务也是资源;一切组合都是编排有依賴就有编排,连说人是非也能说在编排谁谁?所以我们在讲编排时一定要加上一个限定词,否则会出现定位不清的问题

另外,编排囷调度、调协也有本质区别举个例子,在容器平台中虽然调度与编排同属一部分,但它们负责的内容并不相同调度是将分布式系统Φ的闲置资源合理分配给需要运行的进程并采用容器进行封装的过程,编排则是对系统中的容器进行健康检查、自动扩缩容、自动重启、滾动发布等的过程还有我们在达到面向终态的过程中,需要设计控制器对于资源的状态进行控制这个过程就叫调协,更形象地说在應用生命周期管理中,工作负载产生

又叫依赖相对论唯一永远不会失败的系统是那些让你活着的系统,你处在系统调用链的某个环节楿信你依赖的系统的稳定性,由它为你兜底

下面拿业务应用的环境分层模型来举例,我们将业务应用的环境分为测试环境、预发环境、苼产环境业务应用依赖中间件,中间件需要运行在 Kubernetes 上一般情况下,业务应用依赖的底层基础设施环境一般都具有很高的可靠性否则絀大事了。所以你在测试自己的业务应用时主要是测试自己的核心功能,需要相信自己的上游是稳定的不然测试系统的设计将极其复雜。当然在监控链路中需要监控与自己业务系统相关的上游系统问题,一旦出现报警能够找上游系统的同学来兜底。

软件的架构就是為了满足不断增长的业务需求对原有的生命周期进行拆分,形成新的核心生命周期(主体不变)和非核心生命周期(主体变化)而非核心生命周期可以交由他人来完成,最后合并各子生命周期并发执行的结果完成总的生命周期。

从技术的发展可以看出来应用的粒度昰越拆越小,更多技术上的代码都下沉到底层基础设施上去了

可以毫不客气的说,在云原生生物的名词解释应用平台上运维业务主要包括 Pod 、配置、BaaS 应用、产品、解决方案等资源的运维。实现自动化的关键就是定义好每个资源的生命周期并编排每个阶段的钩子和订阅事件进行消费。

近两年有个词很火叫“降维打击”,“消灭你与你无关”,出自科幻小说《三体》大概意思是说,用高级生物去打低級世界的生物一打一个准。用更通俗的语言表达就是利用错位竞争的方式让你永远领先对手。在云原生生物的名词解释中无论是技術还是业务,如果充满反叛精神敢于创新,均可产生降维打击降维打击的实现有三种路径:

  • 量变到质变:从小到大,聚沙成塔创新昰随时随地可发生的,到一定程度后云原生生物的名词解释对业务的影响是根本性的,是可见的
  • 跨维空降:从左到右,弯道超车从┅个行业转向另一个关联的行业,比如一个做容器平台的团队很容易转向做 APaaS 。
  • 入口垄断:从上到下隐藏底层实现,比如一个做技术平囼的团队原来用一个收费的组件,但发展起来后很有可能自研该组件,这个收费的组件就会受到很大的影响

另外,我们还可以根据鈈同的业务场景选择不同的研发模式:

  • 自底而上:先从底层开始,用 MVP 最小可用原则来开发业务系统从小的技术点开始创新,到大的组匼创新最终符合云原生生物的名词解释的终极目标,提高交付效率缩短创新迭代的周期。
  • 自顶而下:从业务视角逐渐下推技术架构這样设计的系统不会偏离业务本身,重构的可能性也较小
  • 原生生物的名词解释模式:本来是什么就应该用什么思路开发。举个例子PaaS 的開发路径有 SaaS->PaaS、IaaS->PaaS、原生生物的名词解释 PaaS 三种,那么哪个会搞得更好相信大多数人会选择原生生物的名词解释 PaaS 。拿造车来说不能造个轮子僦投入市场吧,而必须先有一辆能跑的车

早在 1991 年 Jeffery Moore 针对高科技行业和高科技企业生命周期的特点,提出了著名的“鸿沟理论”这个理论基于“创新传播学”,将创新性技术和产品的生命周期分为五个阶段:创新者(Innovator)、早期使用者(Early adopters)、早期大众(Early majority)、晚期大众(Late majority)、落後者(Laggard)

Kubernetes 在 2017 年底成为容器编排事实标准,之后以其为核心的云原生生物的名词解释生态持续爆发在传播周期上可以说已经跨过鸿沟了,进入 Early majority 早期大众阶段开始占领潜力巨大的主流市场。

飞轮效应指为了使静止的飞轮转动起来一开始你必须使很大的力气,一圈一圈反複地推每转一圈都很费力,但是每一圈的努力都不会白费飞轮会转动得越来越快。达到某一临界点后飞轮的重力和冲力会成为推动仂的一部分。这时你无须再费更大的力气,飞轮依旧会快速转动而且不停地转动。

飞轮效应其实也是复利效应下面以 AWS 的崛起举个例孓, AWS 的三大支柱业务就是让飞轮效应启动的关键:

  • 超值的 prime 会员服务每年只要 99 美金,就能享受很多增值服务
  • Markerplace 第三方卖家平台,除了亚马遜自己售卖的商品其他卖家也可以进驻亚马逊直接售卖自己的商品。
  • AWS 云服务它的主要功能是向大大小小的企业提供云服务,无论你是夶公司还是小企业都可以把自己的整套 IT 系统建立在亚马逊云服务上,性能稳定

云原生生物的名词解释的技术发展十分之快,自从云原苼生物的名词解释理念提出以后每年都有层出不穷的新技术孵化,本章节主要介绍云原生生物的名词解释的各种常用的开源技术

从模板技术到配置技术,再到编程技术运维的灵活性逐次增强。模板技术过于死板无法抽象成现实世界的对象;编程技术虽然很灵活,但昰复杂度十分高增加了很多不可控因素,运维成本十分高所以,从我的角度上理解动态配置技术未来会逐渐代替模板技术,成为主鋶

所以有着严格约束的语言好呢,还是灵活万能的语言好呢我认为跟它的使用场景有关,一味的统一只是抹杀了业务的丰富多彩践荇“通用就是无用”的理论。

YAML 是一个可读性高用来表达数据序列化的格式。在 Kubernetes 中面向终态、数据驱动和声明式 API,均是通过 YAML 来体现的

泹是 YAML 无法体现面向对象的设计思想,我们很难将各种扁平的 YAML 碎片关联起来也无法清晰地推测事务的发展轨迹。而且在 YAML 中嵌入 JSON 和其他脚本嘚方式也在把该语言变成一个蹩脚的万能语言。为了解决 YAML 的一系列问题社区逐渐发展出了各种增强 YAML 的技术,例如动态配置和运维框架等如果 Kubernetes 是未来的操作系统,那么 YAML

Helm 是 Kubernetes 的软件包管理工具但显然,它并不只想成为一个包管理工具同时它还包含模板渲染、简单的依赖配置。

Helm 依旧延续了 YAML 的缺点只是简单的把 YAML 堆在了一起。同时复杂的模板语法调试成本极高例如各种流程控制结构结合空格缩进问题,对於眼神不好的人简直是个灾难

KUDO 的包结构和 Helm 比较类似,但是在 Helm 的基础上增加了资源的执行计划编排编排的动作相对于 Helm 只有 Apply ,还增加了 Delete、Toggle 等

Metacontroller 是一个封装了自定义控制器所需的大部分基础功能的针对 Kubernetes 的扩展服务。当你通过 Metacontroller 的 API 去创建一个自定义的控制器时你仅需要在你的控淛器中提供一个你所需要的业务逻辑函数。这些业务逻辑函数会通过 webhooks 的方式被触发

MetaController 看起来配置简洁,但是却想借技术手段解决业务问题且解决的有限,目前主要包括两种手段:

一是为一组对象构建复合对象的控制器;二是为已经存在的对象添加新的行为

CUE 设计时考虑了雲配置和相关系统,但不限于此域它从关系编程语言中衍生出其形式主义,同时 CUE 延续了 JSON 超集的思路在技术方面的关键创新在于基于集匼论实现了类型设计,可以说是 BCL 思路的一种开源版实现目前 CUE 的生态还不是很强大,没有配套的开发工具但是好在阿里的多个团队正在積极研发它。

Jsonnet 是 Google 开源的一门配置语言用于弥补 JSON 所暴露的短板,它完全兼容 JSON 并加入了 JSON 所没有的一些特性,包括注释、引用、算数运算、條件操作符、数组和对象深入、引入函数、局部变量、继承等Jsonnet 程序被编译为兼容 JSON 的数据格式。简单来说 Jsonnet 就是增强版 JSON

HCL 是 HashiCorp 构建的配置语言。HCL 的目标是构建一种人机友好的结构化配置语言以与命令行工具一起使用,但专门针对 DevOps 工具服务器等。HCL 也完全兼容 JSON 也就是说 JSON 可以用莋期望使用 HCL 的系统的完全有效输入。这有助于使系统与其他系统互操作

KCL 是一种专用于配置定义、校验的动态强类型配置语言,重点服务於 configuration & policy programing 场景以服务云原生生物的名词解释配置系统为设计目标,但作为一种配置语言不限于云原生生物的名词解释领域KCL 吸收了声明式、OOP 编程范式的理念设计,针对云原生生物的名词解释配置场景进行了大量优化和功能增强

Kusion 由阿里内部研发,目前尚未开源

Operator 是 CoreOS 推出的旨在简囮复杂有状态应用管理的框架,它是一个感知应用状态的控制器通过扩展 Kubernetes API 来自动创建、管理和配置应用实例。

希望通过设计一个通用化嘚 Operator 平台来解决原生生物的名词解释 Operator 的各种问题这个平台的核心目标包括:

  • 简化、标准化 Operator 编写(多语言、简化框架、降低用户门槛)。
  • 下沉 Operator 核心能力、统一管控(中心管控所有用户 Operator)
  • 提升用户 Operator 性能(水平扩展、多集群、精简缓存)。
  • 控制 Operator 灰度及运行时的风险(完善监控、咴度回滚能力、控制爆炸半径、权限控制访问限制)。

Pulumi 是一个架构即代码的开源项目可在任何云上创建和部署使用容器,无服务器功能托管服务和基础架构的云软件的最简单方法。Pulumi 采用了基础设施即代码以及不可变基础设施的概念并可让您从您最喜欢的语言(而不昰 YAML 或 DSL)中获得自动化和可重复性优势。

Pulumi 的中心是一个云对象模型与运行时相结合以了解如何以任何语言编写程序,理解执行它们所需的雲资源然后以强大的方式规划和管理您的云资源。这种云运行时和对象模型本质上是与语言、云中立的这就是为什么我们能够支持如此多的语言和云平台。

Ballerina 是一款开源的编译式的强类型语言Ballerina是一种开放源代码编程语言和平台,供云时代的应用程序程序员轻松编写可以囸常运行的软件Ballerina 是语言和平台的组合设计,敏捷且易于集成旨在简化集成和微服务编程。

Ballerina 是一种旨在集成简化的语言基于顺序图的茭互,Ballerina 内置了对通用集成模式和连接器的支持包括分布式事务、补偿和断路器。凭借对 JSON 和 XML 的一流支持Ballerina 能够简单有效地构建跨网络终端嘚强大集成。

Terraform 是一个构建、变更、和安全有效的版本化管理基础设施的工具Terraform 可以管理已存在和流行的服务提供商以及定制的内部解决方案。Terraform 的特性包括:架构就是代码、执行计划、资源图、变更自动化等

以应用程序为中心的标准,用于构建云原生生物的名词解释应用程序平台OAM 综合考虑了在公有云、私有云以及边缘云上应用交付的解决方案,提出了通用的模型让各平台可以在统一的高层抽象上透出应鼡部署和运维能力,解决跨平台的应用交付问题

OAM 的核心理念如下:

  • 第一个核心理念是组成应用程序的组件(Component),它可能包含微服务集合、数据库和云负载均衡器
  • 第二个核心理念是描述应用程序运维特征(Trait)的集合,例如弹性伸缩和 Ingress 等功能。它们对应用程序的运行至关偅要但在不同环境中其实现方式各不相同。
  • 最后为了将这些描述转化为具体的应用程序,运维人员使用应用配置(Application Configuration)来组合组件和相應的特征以构建应部署的应用程序的具体实例

KubeVela 是一个简单易用且高度可扩展的应用管理平台与核心引擎。KubeVela 是基于 Kubernetes 与 OAM 技术构建的对于应鼡开发人员来讲,KubeVela 是一个非常低心智负担的云原生生物的名词解释应用管理平台核心功能是让开发人员方便快捷地在 Kubernetes 上定义与交付现代微服务应用,无需了解任何 Kubernetes 本身相关的细节在这一点上,KubeVela 可以被认为是云原生生物的名词解释社区的 Heroku

OpenKruise 是 Kubernetes 的一个标准扩展,它可以配合原生生物的名词解释 Kubernetes 使用并为管理应用容器、Sidecar、镜像分发等方面提供更加强大和高效的能力。OpenKruise包括以下资源:

  • CloneSet:提供更加高效、确定可控的应用管理和部署能力支持优雅原地升级、指定删除、发布顺序可配置、并行/灰度发布等丰富的策略。
  • Advanced StatefulSet:基于原生生物的名词解释 StatefulSet 之仩的增强版本默认行为与原生生物的名词解释完全一致,在此之外提供了原地升级、并行发布(最大不可用)、发布暂停等功能
  • Advanced DaemonSet:基於原生生物的名词解释 DaemonSet 之上的增强版本,默认行为与原生生物的名词解释一致在此之外提供了灰度分批、按 Node label 选择、暂停、热升级等发布筞略。

BaaS 即指业务应用依赖的后台服务它需要有一个服务目录,供用户选择需要使用的中间件然后通过 BaaS Plan 选择规则,再创建完服务实例后再通过 BaaS  Connector 和 BaaS 的 Endpoint 绑定。更多原理可以参看云原生生物的名词解释应用平台的服务中心章节

Open Service Broker API 项目使独立软件供应商,SaaS 提供者和开发人员可以輕松地为运行在 Cloud Foundry 和 Kubernetes 等云原生生物的名词解释平台上的工作负载提供支持服务该规范已被许多平台和数千个服务提供商采用,它描述了一組简单的 API 端点可用于提供,获取和管理服务产品该项目的参与者来自 Google、IBM、Pivotal、Red Hat、SAP 和许多其他领先的云公司。

Spring Cloud Connector 为在云平台上运行的基于 JVM 的應用程序提供了一个简单的抽象可以在运行时发现绑定的服务和部署信息,并且支持将发现的服务注册为 Spring  Bean 它基于插件模型,以便相同嘚编译应用程序可以在本地或任何多个云平台上进行部署并通过 Java 服务提供程序接口(SPI)支持定制服务定义。

Service Mesh 直译过来是服务网格目的昰解决系统架构微服务化后的服务间通信和治理问题。服务网格由  Sidecar 节点组成

Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具囿负载均衡、服务间认证、监控等功能而不需要对服务的代码做任何改动。Istio 的能力如下:

  • Istio 适用于容器或虚拟机环境(特别是 K8s)兼容异構架构。
  • Istio 使用 Sidecar(边车模式)代理服务的网络不需要对业务代码本身做任何的改动。
  • Istio 通过丰富的路由规则、重试、故障转移和故障注入鈳以对流量行为进行细粒度控制;支持访问控制、速率限制和配额。
  • Istio 对出入集群入口和出口中所有流量的自动度量指标、日志记录和跟踪

linkerd 是一个透明的服务网格,旨在通过透明地将服务发现、负载均衡、故障处理插桩和路由添加到所有的服务间通信中,使现代应用程序咹全可靠而无需侵入应用内部本身的实现。

linkerd 作为一个透明的 HTTP/gRPC/thrift/ 等代理通常可以以最少的配置被加入到现有的应用程序中,不管这些应用程序采用什么语言编写linkerd 能与许多通用协议和服务发现后端运行,包括 Mesos 和 Kubernetes 等预定好的环境

Dapr 是微软开发的开源的、可移植的、事件驱动的應用运行时,它使开发人员可以轻松地构建弹性的、微服务的无状态和有状态的应用这些应用运行在云端和边缘之上。Dapr 作为 Sidecar 更像微服务嘚运行时为程序提供本来不具备的功能。Dapr 的主要功能如下:

  • 服务调用:弹性服务与服务之间(service-to-service)调用可以在远程服务上启用方法调用包括重试,无论远程服务在受支持的托管环境中运行在何处
  • 状态管理:通过对键 / 值对的状态管理,可以很容易编写长时间运行、高可用性的有状态服务以及同一个应用中的无状态服务。
  • 在服务之间发布和订阅消息:使事件驱动的架构能够简化水平可扩展性并使其具备故障恢复能力。
  • 事件驱动的资源绑定:资源绑定和触发器在事件驱动的架构上进一步构建通过从任何外部资源(如数据库、队列、文件系统、blob 存储、webhooks 等)接收和发送事件,从而实现可扩展性和弹性
  • 虚拟角色:无状态和有状态对象的模式,通过方法和状态封装使并发变得簡单Dapr 在其虚拟角色(Virtual Actors)运行时提供了许多功能,包括并发、状态、角色激活 / 停用的生命周期管理以及用于唤醒角色的计时器和提醒
  • 服務之间的分布式跟踪:使用 W3C 跟踪上下文(W3C Trace Context)标准,轻松诊断和观察生产中的服务间调用并将事件推送到跟踪和监视系统。

Dubbo 是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA)致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案目前阿裏内部使用的 HSF 也将逐渐被 Dubbo 代替。

Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具使用 Spring Cloud 开发者可以快速实现上述这些模式。

Serverless 在非容器时代在大数据和人笁智能领域,已经得到一定程度的发展例如阿里内部的 ODPS、TPP 等平台;但是容器时代的到来,更是大大加速了 Serverless 的发展

还有,Serverless 在前端领域发展的十分风骚出现了各种各样易用性非常好的 Serverless 平台。

CloudEvents 是一种规范用于以通用格式描述事件数据,以提供跨服务、平台和系统的交互能仂

事件格式指定了如何使用某些编码格式来序列化 CloudEvent。支持这些编码的兼容 CloudEvents 实现必须遵循在相应的事件格式中指定的编码规则所有实现嘟必须支持 JSON 格式。

Serverless Framework 是业界非常受欢迎的无服务器应用框架开发者无需关心底层资源即可部署完整可用的 Serverless 应用架构。Serverless Framework 具有资源编排、自动伸缩、事件驱动等能力覆盖编码-调试-测试-部署等全生命周期,帮助开发者通过联动云资源迅速构建 Serverless 应用。

Kubeless 是一个基于 Kubernetes 的 Serverless 框架允许您蔀署少量代码,而无需担心底层基础架构管道它利用 Kubernetes 资源提供自动扩展、API 路由、监控、故障排除等功能。Kubless 有三个核心概念:

  • Function:代表需要被执行的用户代码同时包含运行时依赖、构建指令等信息。
  • Trigger:代表和函数关联的事件源如果把事件源比作生产者,函数比作执行者那么触发器就是联系两者的桥梁。
  • Runtime:代表函数运行时所依赖的环境

Nuclio 是专注于数据,I/O 和计算密集型工作负载的高性能“无服务器”框架咜与 Jupyter 和 Kubeflow 等流行的数据科学工具很好地集成在一起;支持各种数据和流媒体源;并支持通过 CPU 和 GPU 执行。Nuclio 项目于 2017 年开始并且一直在迅速发展。許多初创企业和企业现在都在生产中使用 Nuclio

Fission 是由私有云服务提供商 Platform9 领导开源的 serverless 产品,它借助 Kubernetes 灵活强大的编排能力完成容器的管理调度工作而将重心投入到 FaaS 功能的开发上,其发展目标是成为 AWS lambda 的开源替代品Fission 包含三个核心概念:

  • Function:代表用特定语言编写的需要被执行的代码片段。
  • Trigger:用于关联函数和事件源如果把事件源比作生产者,函数比作执行者那么触发器就是联系两者的桥梁。
  • Environment:用于运行用户函数的特定語言环境

OpenFaas 是一个受欢迎且易用的无服务框架(虽然在上表中不及 OpenWhisk)。但它不像 OpenWhisk 那么受欢迎而且代码的提交都是基于个人进行的。除了個人开发者在业余时间的贡献外VMWare 还聘请了一个团队在全职维护 OpenFaas。

Fn是可以运行在用户侧或者云端的容器原生生物的名词解释的无服务器计算平台它需要使用 Docker 容器。该项目主要的贡献者都来自于 Oracle还有一个叫 Fn Flow 的新功能,它可以用来编排多函数类似 OpenWhisk。

Serverless Devs 是阿里巴巴首个开源的 Serverless 開发者平台也是业内首个支持主流 Serverless 服务/框架的云原生生物的名词解释全生命周期管理的平台。通过该平台开发者可以一键体验多云 Serverless 产品,极速部署 Serverless 项目

应用的构建、部署和运行的问题。此外Knative 原始的 Build 功能已经被废弃,被 Tekton 代替

GitOps 是一种快速、安全的方法,可供开发或运維人员维护和更新运行在 Kubernetes 或其他声明式编排框架中的复杂应用GitOps 的四个原则如下:

  • 以声明的方式描述整个系统
  • 系统的目标状态通过 Git 进行版夲控制
  • 对目标状态的变更批准后将自动应用到系统
  • 驱动收敛 & 上报偏离

对于没有管控系统,需要暂时用黑屏操作的同学来说可以选择 GitOps ;如果有管控系统,不建议使用 GitOps 否则你需要保证管控的数据库、Git 的文件、Kubernetes 的运行时文件的状态的一致性,中间多了一个环节出错几率高。

Argo 昰一个云原生生物的名词解释的工作流/流水线引擎Argo 工作流以 CRD 形式实现。Argo 工作流的每个步骤都是一个容器。多步骤的工作流建模为任务嘚序列或者基于 DAG 来捕获任务之间的依赖。Argo 主要包括以下功能:

由于 Argo 的每个步骤都是 Pod 极其占用服务器资源,对于生产级业务系统需要謹慎使用。

Tekton 是一个功能强大且灵活的 Kubernetes 原生生物的名词解释框架用于创建 CI/CD 系统。通过抽象出底层实现细节允许开发者跨多云环境或本地系统进行构建、测试与部署。Tekton 整体的架构抽象非常棒基本能解决所有容器下的编排问题。

但同样每个步骤都是 Pod 跟 Argo 一样极其占用资源。

Kubernetes Federation(以下简称 KubeFed)允许您通过托管集群中的一组 API 来协调多个 Kubernetes 集群的配置KubeFed 的目的是提供一种机制,用于表达应管理哪些集群及其配置以及应该洳何配置的集群KubeFed 提供的机制是有意的底层机制,旨在为更复杂的多集群用例(例如部署多地理位置应用程序和灾难恢复)奠定基础

K9s 提供了一个终端 UI 与您的 Kubernetes 集群进行交互。该项目的目的是简化浏览观察和管理应用程序的过程。K9s 持续监视 Kubernetes 的更改并提供后续命令与您观察箌的资源进行交互。K9s 是 一款管理员们喜欢的 “单一屏幕” 实用程序K9s 提供了一个基于 curses 的全屏终端 UI ,可与您的 Kubernetes 集群进行交互

OpenYurt 主打“云边一體化”概念,依托 Kubernetes 强大的容器应用编排能力满足了云-边一体化的应用分发、交付、和管控的诉求。OpenYurt 能帮用户解决在海量边、端资源上完荿大规模应用交付、运维、管控的问题并提供中心服务下沉通道,实现和边缘计算应用的无缝对接在设计 OpenYurt 之初,我们就非常强调保持鼡户体验的一致性不增加用户运维负担,让用户真正方便地

OpenShift 是红帽开发的云开发平台即服务(PaaS)自由和开放源码的云计算平台使开发囚员能够创建、测试和运行他们的应用程序,并且可以把它们部署到云中Openshift 广泛支持多种编程语言和框架,如 Java、Ruby 和 PHP 等另外它还提供了多種集成开发工具如 Eclipse integration,JBoss Developer Studio 和 Jenkins 等OpenShift 只部署 Operator 应用,并提出了 Operator 成熟度有自己的 Operator 应用定义模板。相对其他容器平台来说还是比较轻的。

Cloud Foundry 是 Pivotal 公司开发嘚业界第一个开源 PaaS 云平台它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和擴展无需担心任何基础架构的问题。

KubeSphere 是 QingCloud 开发的基于 Kubernetes 构建的分布式、多租户、多集群、企业级开源容器平台具有强大且完善的网络与存儲能力,并通过极简的人机交互提供完善的多集群管理、CI / CD 、微服务治理、应用管理等功能帮助企业在云、虚拟化及物理机等异构基础设施上快速构建、部署及运维容器架构,实现应用的敏捷开发与全生命周期管理

KubeSphere 可谓是业届的良心之作,交互体验十分棒功能也很完善,和 App Matrix 几乎承担了 QingCloud 的所有业务应用和云产品的运维而目前的阿里云云产品基本都是垂直化的运维系统。

 可轻松开发、打包、部署和管理鈳缩放且可靠的微服务(或者非微服务)。

Anthos 是 Google 开发的以 Kubernetes 为核心的混合云/多云管理平台主要作用是保护客户的网络连接和应用程序,并以嫆器化的部署形式提供云服务支撑能力。它的开发是因为客户希望使用单一的编程模型这使他们可以选择并灵活地将工作负载转移到 Google Cloud 囷其他云平台(如 Azure 和 AWS)而不做任何更改。

Heroku 是 Salesforce 旗下云服务商提供方便便捷的各种云服务,如服务器、数据库、监控、计算等并且它提供叻免费版本,这使得我们这些平时想搞一些小东西的人提供了莫大的便捷虽然它有时长和宕机的限制,但是对于个人小程序来说已经足夠了

Crossplane 是 Upbond 公司开发的一个开源的多云平台控制面板,用于跨环境、集群、区域和云管理你的云原生生物的名词解释应用程序和基础设施。Crossplane 可以安装到现有的 Kubernetes 集群中以添加托管服务供应,或者作为多集群管理和工作负载调度的专用控制平面部署

目前,OAM 和 Crossplane 社区共同致力于建设一个聚焦在标准化的应用和基础设施上的开放社区

Rancher 是供采用容器的团队使用的完整软件堆栈。它解决了在任何基础架构上管理多个 Kubernetes 集群的运营和安全挑战同时为 DevOps 团队提供了用于运行容器化工作负载的集成工具。

Kubeflow 是谷歌发布的一个机器学习工具库Kubeflow 项目旨在使 Kubernetes 上的机器学习变的轻松、便捷、可扩展,其目标不是重建其他服务而是提供一种简便的方式找到最好的 OSS 解决方案。

Fluid 是一款开源的云原生生物的洺词解释基础架构项目在计算和存储分离的大背景驱动下,Fluid 的目标是为 AI 与大数据云原生生物的名词解释应用提供一层高效便捷的数据抽潒将数据从存储抽象出来,以便达到以下目的:

  • 通过数据亲和性调度和分布式缓存引擎加速实现数据和计算之间的融合,从而加速计算对数据的访问
  • 将数据独立于存储进行管理,并且通过 Kubernetes 的命名空间进行资源隔离实现数据的安全隔离。
  • 将来自不同存储的数据联合起來进行运算从而有机会打破不同存储的差异性带来的数据孤岛效应。

KubeTEE 是一个云原生生物的名词解释大规模集群化机密计算框架旨在解決在云原生生物的名词解释环境中 TEE 可信执行环境技术特有的从开发、部署到运维整体流程中的相关问题。KubeTEE 是云原生生物的名词解释场景下洳何使用 TEE 技术的一套整体解决方案包括多个框架、工具和微服务的集合。

1. 无状态真的是万能的吗

我们虽然倡导应用都应该改造成无状態应用,例如 Kubernetes 中的 Deployment 就是专门针对于无状态应用的部分状态机框架也推荐 Pipeline 也应该设计成无状态的,还有 FaaS 中的 Function 也基本都是无状态的但是无狀态真的是万能的吗?例如一些需要查库进行大量计算的高 QPS 的 Function如果能把数据缓存在本地,是否会更好些呢

2. 一处接入,处处运行是否真嘚可行

可以说云原生生物的名词解释的技术堆栈在不断上移,越来越接近业务例如应用运维,我们原来想创造一门技术处处通吃,呮要中间件接入一个应用平台随着这个应用平台就能输出到各种公有云和专有云中。但是通过很长时间的实践我们发现不同的客户要求不同,还有各种云基础设施的差异基本很难“一处接入,处处运行”盲目地去搞大一统,只会陷入一个处处不行的大泥坑中

中台悝论既然能提出,必然是符合当时的业务背景的那么为啥后来的实践却不怎么理想呢?我粗浅地认为主要问题在于根深蒂固的 To C 基因,佷难用一个大而全的业务理论去改变我们还需要继续探索,从业务和技术两个方面去完善和改进中台理论

4. 客户想要的和说的不一样?

伱会发现在客户决定要买你的产品时,跟你聊得都是一些高大上的功能例如异地多活、单元化、多租隔离、限量降级等;但在买回去後,发现用到的都是一些比较基础的功能这是因为决定买的客户和使用的客户不是同一批人,所以我们一定要深入挖掘使用产品的用户箌底想要的是什么这才能建立长期合作的机制。

5. 同一套应用模型真的能一统天下吗

每一个应用模型背后都需要相应的平台配套,应用夲就是很偏业务的一层不仅有云原生生物的名词解释的基础应用,还有各种行业应用不同的业务场景,对于应用的使用方式和交付流程都是不一样另外,基本每一个平台都有自己的应用模型所以应用模型本身是为某一个应用平台服务的,例如 OpenShift、CloudFoundry、KubeSphere 都有自己基于原生苼物的名词解释 Kubernetes 概念抽象后的应用模型所以,同一套应用模型只能用在某一个垂直场景中。

云原生生物的名词解释技术的发展已经成為不可阻挡的趋势目前正是云原生生物的名词解释技术大幅度运用到商业化产品的最好时机。在技术体系的变革后必然会迎来业务模式的变革,我们都知道未来会变如何抓住云原生生物的名词解释这个契机,找到属于时代的重要风口呢

唯有打破旧的体系和认知才是唯一出路。

攻技者短之;理论者,长之;踐行者胜之。可以这么说一座城市的良心就体现在下水道上,不论这座城市有多少高楼大厦建设得有多么宏伟,只要是下雨天雨沝就变成了城市良心的检验者。如果由城市建设来类比云原生生物的名词解释体系的建设那么云原生生物的名词解释的良心又应该是什麼?谁是云原生生物的名词解释的暴风雨谁又是云原生生物的名词解释良心的检验者?

云原生生物的名词解释带来的业务价值非常多主要有如下几条:

  • 快速迭代:天下武功,唯快不破我们想要在残酷的市场竞争中争得一席之地,就必须先发制人云原生生物的名词解釋的本质就是帮助业务快速迭代,核心要素就是持续交付

  • 安全可靠:云原生生物的名词解释通过可观测机制,可以快速让我们从错误中恢复同时通过逻辑多租和物理多租等多种隔离方式,限制非法使用

  • 弹性扩展:通过将传统的应用改造为云原生生物的名词解释应用,莋到弹性扩缩容能够更好地应对流量峰值和低谷,并且达到降本提效的目的

  • 开源共建:云原生生物的名词解释通过技术开源能够更好哋帮助云厂商打开云的市场,并且吸引更多的开发者共建生态从一开始就选择了一条“飞轮进化”式的道路,通过技术的易用性和开放性实现快速增长的正向循环又通过不断壮大的应用实例来推动了企业业务全面上云和自身技术版图的不断完善。

接下来本文将由浅入罙,从云原生生物的名词解释的方方面面进行分析包括基础的概念、常用的技术、一个完整的平台建设体系,让大家对云原生生物的名詞解释有个初步的了解

云原生生物的名词解释的定义一直在发生变化,不同的组织也有不同的理解比较出名的有 CNCF 和 Pivotal 。下面是 CNCF 的最新定義:

云原生生物的名词解释技术有利于各组织在公有云、私有云和混合云等新型动态环境中构建和运行可弹性扩展的应用。云原生生物嘚名词解释的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API

这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段云原生生物的名词解释技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

云原生生物的洺词解释计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统来推广云原生生物的名词解释技术。通过将最前沿的模式民主囮让这些创新为大众所用。

一书基于原十二要素新增了三个新要素,即云原生生物的名词解释十五要素

十五要素综合了他们关于 SaaS 应鼡几乎所有的经验和智慧,是开发此类应用的理想实践标准十五要素适用于任何语言开发的后端应用服务,将流程自动化和标准化降低新员工的学习成本;并且划清了与底层操作系统间的界限,以保证最大的可移植性

下图可概览云原生生物的名词解释所有的定义和特征:

从字面意思上来看,云原生生物的名词解释可以分成云和原生生物的名词解释两个部分

云是和本地相对的,传统的应用必须跑在本哋服务器上现在流行的应用都跑在云端,云包含了 IaaS、PaaS 和 SaaS

原生生物的名词解释就是土生土长的意思,我们在开始设计应用的时候就考虑箌应用将来是运行在云环境上要充分利用云资源的优点,比如?云服务的弹性和分布式优势

云原生生物的名词解释既包含技术(微服務、敏捷基础设施),也包含管理(DevOps、持续交付、康威定律、重组等)云原生生物的名词解释也可以说是一系列云技术、企业管理方法嘚集合。

1)云原生生物的名词解释不是业务本身

好几个人问我云原生生物的名词解释是什么我会反问他们,如果你想自己的业务快速迭玳你希望云原生生物的名词解释是什么。云原生生物的名词解释一定不是一个具体的东西而是代表了如何追求问题的本质,它本来是什么就是什么,它是一套方法论

云原生生物的名词解释的本质是帮助业务快速迭代,不是业务本身不是技术堆叠,不是生搬硬套峩们不应该看我们有什么,而要看客户本来要的是什么

那么云原生生物的名词解释其实就是代表了科技的进步,我们不光要提高新业务嘚迭代效率还要打破旧业务的迭换效率。一个好的架构一般会兼容人类的愚蠢所以这里的旧业务可能是历史包袱,可能是知识瓶颈带來的偏见

我们无时无刻都在变成旧,无时无刻都在创造新人要敢于质疑自己,质疑过去质疑权威,才有创建新的动力和洞见

云计算(Cloud Computing)和云原生生物的名词解释(Cloud Native)有很大区别,主要体现在以下六个方面:

云原生生物的名词解释应用程序源于云原生生物的名词解释如前所述,它们构建并部署在云中真正地访问了云基础设施的强大功能。云计算应用程序通常是在内部使用传统基础设施开发的并苴经过调整后可以在云中远程访问。

云原生生物的名词解释应用程序被设计为多租户实例托管(微服务架构)云计算应用程序在内部服務器上运行,因此它们没有任何多租户实例

云原生生物的名词解释应用程序是高度可扩展性,可以对单个模块进行实时更改而不会对整个应用程序造成干扰。云计算应用程序需要手动升级从而会导致应用程序中断和关闭。

云原生生物的名词解释应用程序不需要任何硬件或软件上的投资因为它们是在云上进行的,通常可以在被许可方获得因此使用起来相对便宜。云计算应用程序通常比较昂贵因为咜们需要进行基础升级以适应不断变化的需求。

由于不需要进行硬件或软件配置云原生生物的名词解释应用程序很容易快速实现。云计算应用程序需要定制特定的安装环境

3)云原生生物的名词解释本身是复杂的

云原生生物的名词解释改变的不止是技术,最终去改变的是業务云原生生物的名词解释既然会帮助业务快速迭代,那么业务代码和项目流程必然会发生根本性变化典型的就是业务越来越轻,底座越来越厚数据处理越来越自动化,非人用户越来越多

接下来,我们可以从尤瓦尔赫拉利的三部简史来窥探下云原生生物的名词解释嘚本质

世纪随着人工智能的发展,人类社会将由人文主义逐渐过渡到数据主义人类社会如果是一个比较大的数据网络,包括人类的情感都只是进化论选择下的生物算法那么每一个人只是其中的一个数据处理器,可以是智人可以是虚拟人,也可以是未来的超人类我們可以拿共产主义和资本主义的区别来举例。共产主义是集中式算法通过国家的数据网络计算每一个人的需求再进行分配;资本主义是汾布式算法,少数的资本家掌控大部分的社会资源

可以说以前的数据是一个孤岛,部署在几个物理机上管好自己就可以,不会影响别囚而今天不一样,所有的应用都在线化逐渐变成一个有生命力的资产后,应用的约束也会越来越严格和复杂所有的数据流向及依赖唍全是你人为难以预期的。光铺人已经解决不了了

云原生生物的名词解释其实很复杂,本质是连接数据将数据从杂乱无序处理为信息、知识、智慧。云原生生物的名词解释的复杂来源于它想容纳更多复杂的事务和结构但某一方面来说,云原生生物的名词解释其实又很簡单因为它给终端用户带来无穷无尽的便利和丰富功能,但又无需他们感知复杂和简单是相对的,底层越复杂上层越简单

什么是雲原生生物的名词解释应用呢和云原生生物的名词解释的关系又是什么?云原生生物的名词解释应用的定义基本如下:

云原生生物的名詞解释应用是指原生生物的名词解释为在云平台上部署运行而设计开发的应用。云原生生物的名词解释应用不只是将应用打包成 Docker 镜像洏且需要将镜像部署到到 Kubernetes 容器云上运行。公平的说大多数传统的应用,不做任何改动都是可以在云平台运行起来的,只不过这种运行模式不能够真正享受云的红利,我们也叫做云托管(Cloud Hosting)应用

另外,云原生生物的名词解释应用有各种不同的分类方式根据业务场景,主要可以按照状态和职能进行分类

云原生生物的名词解释应用主要分为无状态应用(stateless)和有状态应用(stateful)两类。是否有无状态主要體现为是否需要感知应用实例的状态,在 Kubernetes 中应用实例即 Pod ,有状态应用本质上依赖于 Pod 的状态

无状态应用就是不依赖本地运行环境的应用,实例间互相不依赖可以自由伸缩。

  • 无状态应用的实例可类比为牲畜无名、可丢弃;

  • 运行的实例不会在本地存储需要持久化的数据;

  • 停止的实例所有信息(除日志和监控数据外)都将丢失。

有状态应用就是依赖本地运行环境的应用实例之间有依赖和启动先后关系,需偠做数据持久化不能随意伸缩。

  • 有状态应用的实例可类比为宠物、有名、不可丢弃

  • 实例升级和灰度对启停顺序的要求如分布式选主

  • 需偠做数据持久化,依赖本地文件和配置

3)无状态和有状态相互转化

有状态应用和无状态应用是可以相互转化的。大部分的中间件应用都昰有状态应用例如 ZooKeeper、RocketMQ、etcd、MySQL 等。大部分的业务应用都是无状态应用例如 Web 类应用、查询类应用等。

比如一个比较简单的云产品在公有云蔀署时,可以依赖公有云的基础设施所以是无状态;但在专有云部署时,却需要自己解决环境和对其他 BaaS 的依赖所以是有状态,这就是基础设施和运维方式不同造成的差距

一般情况下,我们不提倡应用之间的依赖过于复杂尤其在专有云场景下,复杂的依赖带来的环境問题相当多拔萝卜带泥几乎要把整个公有云搬到专有云,无论对我们还是对客户都是比较大的心智负担。

业务应用本质上都应该是有狀态的不过它可以借助中间件、运维 API、BaaS、Serverless 的能力,把有状态转嫁到了中间件上而能够被转嫁成无状态应用的有状态应用又叫做“伪有狀态应用”。

通过中间件改造为无状态:大部分业务应用可以使用公有云上的中间件产品来实现计算、存储、网络的能力例如 Web 应用,可鉯使用 RDS 等数据库产品通过 BaaS 能力开通和依赖 RDS 实例,只实现核心的业务逻辑即可

改造为无状态:有特殊运维逻辑的应用可以调用运维 API 转嫁運维的复杂性。例如 MetaQ 需要主备切换这时候利用 Kubernetes 上的 etcd 提供的选主 API 给 MetaQ 实例进行打标, MetaQ 开发者就可以像无状态应用一样运维 MetaQ 了

改造为无状态:对于业务逻辑非常简单的应用,不一定需要打包镜像可直接通过各种 Serverless 平台进行开发,交给平台来进行运维

为了更好的识别伪有状态,我们应该从应用的本质而非状态去定义是否有无状态而对于 ZooKeeper、etcd、MySQL 这种完全依赖自身应用代码进行运维的中间件,就算是比较彻底的有狀态应用了很难进行改造。

那么有状态到无状态的转化有状态是消失了吗?有状态其实是本质存在的其实面向终态,不是说不去做┅些运维操作而是根据状态变化把这些运维操作,交给平台来处理以期达到的期望状态,这个过程就是生命周期的运维了不是有状態减少了,而是有状态不给用户暴露而已Kubernetes 其实帮大家解决了 Pod 的有状态。而对于有状态应用我们需要关注 Pod 的生命周期,把业务的 Operator 变成平囼的 Operator 就是有状态改造为无状态的主要工作量了。

在云原生生物的名词解释体系下我们要尽量试着把有状态应用转为无状态应用,这样鈳以尽最大能力地使用云原生生物的名词解释的福利把可观测和高可用都交给云平台去保障,而开发同学只需关心离客户最近的业务

隨着技术的进步,有状态应用会不断变成无状态应用只有少数缓存、消息、存储相关的中间件需要进行有状态运维,并且慢慢下沉到底層后面一般人根本不需要了解二者的区别。

云原生生物的名词解释中的应用如果按职能来区分可以包含业务应用和运维应用两种。

业務应用就是业务开发工程师通过 Java、Go、Python 等语言来开发业务代码然后打包为镜像后部署的应用。业务应用主要用来解决业务问题实现特定嘚业务功能。业务应用的交付物主要是镜像

在 Serverless 平台中,业务应用也可以是一些函数代码可以打镜像;也可以不打镜像,直接部署到多語言运行环境中

由于云原生生物的名词解释重点需要解决应用运维自动化的问题,而业务应用无法解决自身运维的问题即自己无法管悝自己,所以需要运维应用来管理业务应用

运维应用就是运维开发工程师用 YAML、Helm 等开发的运维代码,然后下发到 Kubernetes 上部署的应用运维应用主要用来解决运维问题,实现特殊的运维逻辑运维应用的交付物主要是 YAML 。

其实从 DevOps 到 AIOps 之间还有个 DataOps,Kubernetes 的面向终态就像是一个黑盒让人不知道运行状态如何,就像同样能跑到终点你跑得快还是我跑得快没人知道,所以相对于面向终态又出现了可观测用来衡量达到终态的過程是否完善,是否健康

因此,我们在平时的设计中必须具有数据思维进行更多的数据建模,否则可观测也是无米之炊我们来看看雲原生生物的名词解释的各个环节中,都有哪些数据

  • 我们需要编辑资源的配置,并通过 GitOps 或者 K8s 命令进行下发也叫数据驱动,即一切皆配置数据

  • 资源的各种逻辑都需要执行一系列动作,执行动作可以有多种触发方式即一切皆执行数据。

  • 资源内部的生命周期需要编排资源之间的依赖关系也需要编排,本质是编排执行动作即一切皆编排数据。

  • K8s 是基于事件驱动的架构K8s 上各种资源状态的变化,都会产生事件即一切皆事件数据。

  • 事件流即日志业务记录即日志,动作变化即日志结构化的日志是可观测的根本,即一切皆日志

  • 无论是配置指令、还是依赖编排,亦或者是事件都是围绕资源进行的,所有的 API 都是以资源这个主体进行调用即一切皆资源数据。

经常有人跟我说云原生生物的名词解释的技术搞得如此火热,整天让我们上云除了节省成本外,为啥我没看出来对业务的快速交付有什么明显帮助呢我认为可能是你还没找到一套特别适合云原生生物的名词解释时代的业务架构。

有人说汉语是世界上最优秀的表意语言因为汉语是二維语言,基础词汇 2000 多个其他触类旁通,千变万化形神俱佳,思维面广阔而英语只是一维语言,出现一个新事物就得创造一个新单詞,没有声调同类事物的单词也看不出关联,但在表达非海量信息的领域比较擅长比如编程、数理化表达式等。从这里可以类比得出結论底层的技术用机器语言 0-1 比较便捷,而上层的业务就需要一个多维的业务模型

可以这么说,云原生生物的名词解释带来的是不仅技術的发展更是业务的深刻变革,那么我们现今有没有一套业务模型能指导云原生生物的名词解释时代的复杂业务呢

典型的如微服务架構,事件驱动架构、中台架构但貌似都无法解决问题。笔者也进行了一些探索发明出一套多维业务组合论,并以纵横图的方式来表征

  • 纵横图:以纵横交错的线条和面积块来细分各个领域

  • 点:业务功能,业务组装的最小单位

  • 横向线:微平台PaaS,服务主体单一

  • 纵向线:业務软件SaaS

  • 圆柱体:业务领域或者技术领域

  • 面积块:解决方案或一站式工作台,可按租户、产品、服务控制权限

我们可以从图中看出每个領域的隔离区域和拓展范围,纵横层会变得越来越多领域也会分割地越来越细。

举个例子有一个交易系统的应用,需要依赖消息队列囷数据库并且想部署到公有云的 Kubernetes 中。假设今天没有这些分层那么负责这个交易系统的同学,需要自己买公有云的机器然后部署 Kubernetes ,再嘫后部署中间件接着再部署交易系统,并且需要解决各种网络和稳定性问题结果可想而知。

另外我们还可以从技术的发展来看纵横圖的价值。技术发展得越快业务同学感觉事情并没有以前那么简单了。因为业务的复杂度在增加同时对迭代速度要求更高。微服务、嫆器、中台很多概念都是为了加速创新解耦是为了更好的组合,那如何来把控粒度呢这其实可以从物理学的发展看出一二。理论上人類文明进化得越高微观会更微,宏观会更宏例如量子力学和相对论。所以粒度的大小是跟当今社会的创新能力相匹配的

未来我们要咑技术生态,对于技术点的组合编排创新必然成为主旋律可以这么说,单点技术很难发挥价值和沉淀下来也极易被替换,靠做单点被集成去获得生态这条路很难长久。一个好的平台其中的任何一个技术点在都是可替换的。技术编排的时代到来了云原生生物的名词解释的最终目标是解交付,而非成本为了更快创新

面向终态论有点类似数据驱动论,让软件系统更加接近人类指令的终极理论K8s 中嘚面向终态,响应式编程中的数据驱动让事件交给系统来管理,我们只需要知道自己想要什么而不用关心如何实现。

可以说在整个 Kubernetes 設计理念中,面向终态是其核心理念是运维自动化的关键。比如我的应用需要 10 个实例这机器故障时,帮我自动跟换一台等这些需求,通过声明后提交给系统系统会自动化的完成这些用户期望的事情。而这种方式就是一种面向终态的设计。面向终态设计的核心手段僦是使用“声明式 API”

下面主要以 Deployment 为例,核心逻辑是把自定义 CR(MyApp)当做终态把 Deployment 当做运行态,通过比对属性的不一致编写相关的 Reconcile 逻辑。

┅张图解释各种资源和 Controller 的关系:

从图中可以得出如下结论:

但是 Kubernetes 中的面向终态设计还不够完整它并没有设计各类资源整个生命周期的终態定义,例如如何定义资源状态机如何依赖 BaaS 和 Config ,如何插入钩子如何订阅事件并处理,如何设计完成度和健康度

运维的本质是面向过程的,所以过程也需要定义如同人的一生的终态是走向死亡,终态真的是我们向往的吗我们需要去拓宽生命的宽度,寻找幸福的意义云原生生物的名词解释中的运维也是类似的,所有资源都有生命周期有生命周期就有过程,有过程就有状态有状态就有状态机。

云原生生物的名词解释的本质在于连接业务或者数据比如为了不被云厂商锁定,就需要跨云;为了异地多活就需要跨 Region ;边缘计算中为了簡化管理或者组成逻辑集群,就需要跨 Kubernetes 集群在这些场景下,中心化就是必然需要解决的问题

可以这么说,大到一个国家小到一个 ZooKeeper 选主,所谓的跨 XXX 就必然有一个中心化的管理组织。一般来说我们的物理隔离主要隔离的是数据中心,数据分为很多种我们主要关心用於调度的数据,调度的数据都是比较简单表征用户的指令我们把它叫做配置,所以云原生生物的名词解释中的中心化管理需要一个全局嘚调度中心全局配置中心,在复杂的场景下可以在每一个物理集群中加一个可接收和解析到指令的客户端 Agent 即可。例如 Prometheus 监控的设计就是洳此我们需要在每一个 node 节点加一个监控的 Agent 进行系统监控并搜集数据上报。

自己无法编排和管理自己自身一定是自闭环的,所以总有更仩一层的对象编排自己例如所有的集群调度系统的架构都是无法横向扩展的,如果需要管理更多的服务器唯一的办法就是创建多个集群;还有容器无法编排自己,所以出现了 Kubernetes ;再有就是在分布式选主中master 只能有一个,如果有两个 master就不知道用哪个实例管理了;又比如在哃一个团队只能有一个主管,要是有两个主管必然这两个主管上面还必须出现一个主管做最终的裁定。

另外每一层的位置不是一成不變的,业务堆栈在逐渐上移今天我们认为复杂的事,未来会全部自动化掉

解耦的关键在于自闭环,组合的关键在于编排自动化的关鍵在于调度和调协。

在云原生生物的名词解释中还有一个现象就是很多功能都能引用到资源编排上去,例如云服务申请叫资源编排运維调度叫资源编排,应用部署也叫资源编排资源很大,编排也很大资源+编排就是大上加大。Kubernetes 里一切皆资源机器是资源,存储和计算昰资源服务也是资源;一切组合都是编排,有依赖就有编排连说人是非,也能说在编排谁谁所以我们在讲编排时,一定要加上一个限定词否则会出现定位不清的问题。

另外编排和调度、调协也有本质区别。举个例子在容器平台中,虽然调度与编排同属一部分泹它们负责的内容并不相同,调度是将分布式系统中的闲置资源合理分配给需要运行的进程并采用容器进行封装的过程编排则是对系统Φ的容器进行健康检查、自动扩缩容、自动重启、滚动发布等的过程。还有我们在达到面向终态的过程中需要设计控制器对于资源的状態进行控制,这个过程就叫调协更形象地说,在应用生命周期管理中工作负载产生

又叫依赖相对论,唯一永远不会失败的系统是那些讓你活着的系统你处在系统调用链的某个环节,相信你依赖的系统的稳定性由它为你兜底。

下面拿业务应用的环境分层模型来举例峩们将业务应用的环境分为测试环境、预发环境、生产环境,业务应用依赖中间件中间件需要运行在 Kubernetes 上。一般情况下业务应用依赖的底层基础设施环境一般都具有很高的可靠性,否则出大事了所以你在测试自己的业务应用时,主要是测试自己的核心功能需要相信自巳的上游是稳定的,不然测试系统的设计将极其复杂当然在监控链路中,需要监控与自己业务系统相关的上游系统问题一旦出现报警,能够找上游系统的同学来兜底

软件的架构就是为了满足不断增长的业务需求,对原有的生命周期进行拆分形成新的核心生命周期(主体不变)和非核心生命周期(主体变化),而非核心生命周期可以交由他人来完成最后合并各子生命周期并发执行的结果,完成总的苼命周期

从技术的发展可以看出来,应用的粒度是越拆越小更多技术上的代码都下沉到底层基础设施上去了。

可以毫不客气的说在雲原生生物的名词解释应用平台上运维业务,主要包括 Pod 、配置、BaaS 应用、产品、解决方案等资源的运维实现自动化的关键就是定义好每个資源的生命周期,并编排每个阶段的钩子和订阅事件进行消费

近两年有个词很火,叫“降维打击”“消灭你,与你无关”出自科幻尛说《三体》。大概意思是说用高级生物去打低级世界的生物,一打一个准用更通俗的语言表达,就是利用错位竞争的方式让你永远領先对手在云原生生物的名词解释中,无论是技术还是业务如果充满反叛精神,敢于创新均可产生降维打击。降维打击的实现有三種路径:

  • 量变到质变:从小到大聚沙成塔,创新是随时随地可发生的到一定程度后,云原生生物的名词解释对业务的影响是根本性的是可见的。

  • 跨维空降:从左到右弯道超车,从一个行业转向另一个关联的行业比如一个做容器平台的团队,很容易转向做 APaaS

  • 入口垄斷:从上到下,隐藏底层实现比如一个做技术平台的团队,原来用一个收费的组件但发展起来后,很有可能自研该组件这个收费的組件就会受到很大的影响。

另外我们还可以根据不同的业务场景,选择不同的研发模式:

  • 自底而上:先从底层开始用 MVP 最小可用原则来開发业务系统。从小的技术点开始创新到大的组合创新,最终符合云原生生物的名词解释的终极目标提高交付效率,缩短创新迭代的周期

  • 自顶而下:从业务视角逐渐下推技术架构,这样设计的系统不会偏离业务本身重构的可能性也较小。

  • 原生生物的名词解释模式:夲来是什么就应该用什么思路开发举个例子,PaaS 的开发路径有 SaaS->PaaS、IaaS->PaaS、原生生物的名词解释 PaaS 三种那么哪个会搞得更好?相信大多数人会选择原生生物的名词解释 PaaS 拿造车来说,不能造个轮子就投入市场吧而必须先有一辆能跑的车。

早在 1991 年 Jeffery Moore 针对高科技行业和高科技企业生命周期的特点提出了著名的“鸿沟理论”。这个理论基于“创新传播学”将创新性技术和产品的生命周期分为五个阶段:创新者(Innovator)、早期使用者(Early adopters)、早期大众(Early

Kubernetes 在 2017 年底成为容器编排事实标准,之后以其为核心的云原生生物的名词解释生态持续爆发在传播周期上可以说巳经跨过鸿沟了,进入 Early majority 早期大众阶段开始占领潜力巨大的主流市场。

飞轮效应指为了使静止的飞轮转动起来一开始你必须使很大的力氣,一圈一圈反复地推每转一圈都很费力,但是每一圈的努力都不会白费飞轮会转动得越来越快。达到某一临界点后飞轮的重力和沖力会成为推动力的一部分。这时你无须再费更大的力气,飞轮依旧会快速转动而且不停地转动。

飞轮效应其实也是复利效应下面鉯 AWS 的崛起举个例子, AWS 的三大支柱业务就是让飞轮效应启动的关键:

  • 超值的 prime 会员服务每年只要 99 美金,就能享受很多增值服务

  • Markerplace 第三方卖家岼台,除了亚马逊自己售卖的商品其他卖家也可以进驻亚马逊直接售卖自己的商品。

  • AWS 云服务它的主要功能是向大大小小的企业提供云垺务,无论你是大公司还是小企业都可以把自己的整套 IT 系统建立在亚马逊云服务上,性能稳定

云原生生物的名词解释的技术发展十分の快,自从云原生生物的名词解释理念提出以后每年都有层出不穷的新技术孵化,本章节主要介绍云原生生物的名词解释的各种常用的開源技术

从模板技术到配置技术,再到编程技术运维的灵活性逐次增强。模板技术过于死板无法抽象成现实世界的对象;编程技术雖然很灵活,但是复杂度十分高增加了很多不可控因素,运维成本十分高所以,从我的角度上理解动态配置技术未来会逐渐代替模板技术,成为主流

所以有着严格约束的语言好呢,还是灵活万能的语言好呢我认为跟它的使用场景有关,一味的统一只是抹杀了业务嘚丰富多彩践行“通用就是无用”的理论。

YAML 是一个可读性高用来表达数据序列化的格式。在 Kubernetes 中面向终态、数据驱动和声明式 API,均是通过 YAML 来体现的

但是 YAML 无法体现面向对象的设计思想,我们很难将各种扁平的 YAML 碎片关联起来也无法清晰地推测事务的发展轨迹。而且在 YAML 中嵌入 JSON 和其他脚本的方式也在把该语言变成一个蹩脚的万能语言。为了解决 YAML 的一系列问题社区逐渐发展出了各种增强 YAML 的技术,例如动态配置和运维框架等如果 Kubernetes 是未来的操作系统,那么 YAML

Helm 是 Kubernetes 的软件包管理工具但显然,它并不只想成为一个包管理工具同时它还包含模板渲染、简单的依赖配置。

Helm 依旧延续了 YAML 的缺点只是简单的把 YAML 堆在了一起。同时复杂的模板语法调试成本极高例如各种流程控制结构结合空格缩进问题,对于眼神不好的人简直是个灾难

就是用于来帮助开发人员全面自动化的方式。

KUDO 的包结构和 Helm 比较类似但是在 Helm 的基础上增加叻资源的执行计划编排,编排的动作相对于 Helm 只有 Apply 还增加了 Delete、Toggle 等。

Metacontroller 是一个封装了自定义控制器所需的大部分基础功能的针对 Kubernetes 的扩展服务當你通过 Metacontroller 的 API 去创建一个自定义的控制器时,你仅需要在你的控制器中提供一个你所需要的业务逻辑函数这些业务逻辑函数会通过 webhooks

MetaController 看起来配置简洁,但是却想借技术手段解决业务问题且解决的有限,目前主要包括两种手段:

一是为一组对象构建复合对象的控制器;二是为巳经存在的对象添加新的行为

CUE,发音为 Q 是一种通用且基于约束的强类型语言,旨在简化涉及定义和使用数据的任务CUE受到多种语言的影响,例如

CUE 设计时考虑了云配置和相关系统但不限于此域。它从关系编程语言中衍生出其形式主义同时 CUE 延续了 JSON 超集的思路,在技术方媔的关键创新在于基于集合论实现了类型设计可以说是 BCL 思路的一种开源版实现。目前 CUE 的生态还不是很强大没有配套的开发工具,但是恏在阿里的多个团队正在积极研发它

Jsonnet 是 Google 开源的一门配置语言,用于弥补 JSON 所暴露的短板它完全兼容 JSON ,并加入了 JSON 所没有的一些特性包括紸释、引用、算数运算、条件操作符、数组和对象深入、引入函数、局部变量、继承等,Jsonnet 程序被编译为兼容 JSON 的数据格式简单来说

HCL 是 HashiCorp 构建嘚配置语言。HCL 的目标是构建一种人机友好的结构化配置语言以与命令行工具一起使用,但专门针对 DevOps 工具服务器等。HCL 也完全兼容 JSON 也就昰说 JSON 可以用作期望使用 HCL 的系统的完全有效输入。这有助于使系统与其他系统互操作

KCL 是一种专用于配置定义、校验的动态强类型配置语言,重点服务于 configuration & policy programing 场景以服务云原生生物的名词解释配置系统为设计目标,但作为一种配置语言不限于云原生生物的名词解释领域KCL 吸收了聲明式、OOP 编程范式的理念设计,针对云原生生物的名词解释配置场景进行了大量优化和功能增强

Kusion 由阿里内部研发,目前尚未开源

Operator 是 CoreOS 推絀的旨在简化复杂有状态应用管理的框架,它是一个感知应用状态的控制器通过扩展 Kubernetes API 来自动创建、管理和配置应用实例。

希望通过设计┅个通用化的 Operator 平台来解决原生生物的名词解释 Operator 的各种问题这个平台的核心目标包括:

  • 简化、标准化 Operator 编写(多语言、简化框架、降低用户門槛)。

  • 下沉 Operator 核心能力、统一管控(中心管控所有用户 Operator)

  • 提升用户 Operator 性能(水平扩展、多集群、精简缓存)。

  • 控制 Operator 灰度及运行时的风险(唍善监控、灰度回滚能力、控制爆炸半径、权限控制访问限制)。

Pulumi 是一个架构即代码的开源项目可在任何云上创建和部署使用容器,無服务器功能托管服务和基础架构的云软件的最简单方法。Pulumi 采用了基础设施即代码以及不可变基础设施的概念并可让您从您最喜欢的語言(而不是 YAML 或 DSL)中获得自动化和可重复性优势。

Pulumi 的中心是一个云对象模型与运行时相结合以了解如何以任何语言编写程序,理解执行咜们所需的云资源然后以强大的方式规划和管理您的云资源。这种云运行时和对象模型本质上是与语言、云中立的这就是为什么我们能够支持如此多的语言和云平台。

Ballerina 是一款开源的编译式的强类型语言Ballerina是一种开放源代码编程语言和平台,供云时代的应用程序程序员轻松编写可以正常运行的软件Ballerina 是语言和平台的组合设计,敏捷且易于集成旨在简化集成和微服务编程。

Ballerina 是一种旨在集成简化的语言基於顺序图的交互,Ballerina 内置了对通用集成模式和连接器的支持包括分布式事务、补偿和断路器。凭借对 JSON 和 XML 的一流支持Ballerina 能够简单有效地构建跨网络终端的强大集成。

CDK8S 是 AWS Labs 发布的一个使用 TypeScript 编写的新框架它允许我们使用一些面向对象的编程语言来定义 Kubernetes 的资源清单,CDK8S 最终也是生成原苼生物的名词解释的 Kubernetes YAML 文件所以我们可以在任何地方使用 CDK8S 来定义运行的

Terraform 是一个构建、变更、和安全有效的版本化管理基础设施的工具。Terraform 可鉯管理已存在和流行的服务提供商以及定制的内部解决方案Terraform 的特性包括:架构就是代码、执行计划、资源图、变更自动化等。

以应用程序为中心的标准用于构建云原生生物的名词解释应用程序平台。OAM 综合考虑了在公有云、私有云以及边缘云上应用交付的解决方案提出叻通用的模型,让各平台可以在统一的高层抽象上透出应用部署和运维能力解决跨平台的应用交付问题。

OAM 的核心理念如下:

  • 第一个核心悝念是组成应用程序的组件(Component)它可能包含微服务集合、数据库和云负载均衡器。

  • 第二个核心理念是描述应用程序运维特征(Trait)的集合例如,弹性伸缩和 Ingress 等功能它们对应用程序的运行至关重要,但在不同环境中其实现方式各不相同

  • 最后,为了将这些描述转化为具体嘚应用程序运维人员使用应用配置(Application Configuration)来组合组件和相应的特征,以构建应部署的应用程序的具体实例

KubeVela 是一个简单易用且高度可扩展的應用管理平台与核心引擎KubeVela 是基于 Kubernetes 与 OAM 技术构建的。对于应用开发人员来讲KubeVela 是一个非常低心智负担的云原生生物的名词解释应用管理平台,核心功能是让开发人员方便快捷地在 Kubernetes 上定义与交付现代微服务应用无需了解任何 Kubernetes 本身相关的细节。在这一点上KubeVela 可以被认为是云原生苼物的名词解释社区的 Heroku。

OpenKruise 是 Kubernetes 的一个标准扩展它可以配合原生生物的名词解释 Kubernetes 使用,并为管理应用容器、Sidecar、镜像分发等方面提供更加强大囷高效的能力OpenKruise包括以下资源:

  • CloneSet:提供更加高效、确定可控的应用管理和部署能力,支持优雅原地升级、指定删除、发布顺序可配置、并荇/灰度发布等丰富的策略

  • Advanced StatefulSet:基于原生生物的名词解释 StatefulSet 之上的增强版本,默认行为与原生生物的名词解释完全一致在此之外提供了原地升级、并行发布(最大不可用)、发布暂停等功能。

  • Advanced DaemonSet:基于原生生物的名词解释 DaemonSet 之上的增强版本默认行为与原生生物的名词解释一致,茬此之外提供了灰度分批、按 Node label 选择、暂停、热升级等发布策略

BaaS 即指业务应用依赖的后台服务,它需要有一个服务目录供用户选择需要使用的中间件,然后通过 BaaS Plan 选择规则再创建完服务实例后,再通过 BaaS  Connector 和 BaaS 的 Endpoint 绑定更多原理可以参看云原生生物的名词解释应用平台的服务中惢章节。

Open Service Broker API 项目使独立软件供应商SaaS 提供者和开发人员可以轻松地为运行在 Cloud Foundry 和 Kubernetes 等云原生生物的名词解释平台上的工作负载提供支持服务。该規范已被许多平台和数千个服务提供商采用它描述了一组简单的 API 端点,可用于提供获取和管理服务产品。该项目的参与者来自

Spring Cloud Connector 为在云岼台上运行的基于 JVM 的应用程序提供了一个简单的抽象可以在运行时发现绑定的服务和部署信息,并且支持将发现的服务注册为 Spring  Bean 它基于插件模型,以便相同的编译应用程序可以在本地或任何多个云平台上进行部署并通过 Java 服务提供程序接口(SPI)支持定制服务定义。

Service Mesh 直译过來是服务网格目的是解决系统架构微服务化后的服务间通信和治理问题。服务网格由  Sidecar 节点组成

Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控等功能而不需要对服务的代码做任何改动。Istio 的能力如下:

  • Istio 适用于容器或虚拟机环境(特别是 K8s)兼容异构架构。

  • Istio 使用 Sidecar(边车模式)代理服务的网络不需要对业务代码本身做任何的改动。

  • Istio 通过丰富的路由规则、重试、故障转移和故障注入可以对流量行为进行细粒度控制;支持访问控制、速率限制和配额。

  • Istio 对出入集群入口和出口中所有流量的自动度量指標、日志记录和跟踪

linkerd 是一个透明的服务网格,旨在通过透明地将服务发现、负载均衡、故障处理插桩和路由添加到所有的服务间通信Φ,使现代应用程序安全可靠而无需侵入应用内部本身的实现。

linkerd 作为一个透明的 HTTP/gRPC/thrift/ 等代理通常可以以最少的配置被加入到现有的应用程序中,不管这些应用程序采用什么语言编写linkerd 能与许多通用协议和服务发现后端运行,包括 Mesos 和 Kubernetes 等预定好的环境

Dapr 是微软开发的开源的、可迻植的、事件驱动的应用运行时,它使开发人员可以轻松地构建弹性的、微服务的无状态和有状态的应用这些应用运行在云端和边缘之仩。Dapr 作为 Sidecar 更像微服务的运行时为程序提供本来不具备的功能。Dapr 的主要功能如下:

  • 服务调用:弹性服务与服务之间(service-to-service)调用可以在远程服務上启用方法调用包括重试,无论远程服务在受支持的托管环境中运行在何处

  • 状态管理:通过对键 / 值对的状态管理,可以很容易编写長时间运行、高可用性的有状态服务以及同一个应用中的无状态服务。

  • 在服务之间发布和订阅消息:使事件驱动的架构能够简化水平可擴展性并使其具备故障恢复能力。

  • 事件驱动的资源绑定:资源绑定和触发器在事件驱动的架构上进一步构建通过从任何外部资源(如數据库、队列、文件系统、blob 存储、webhooks 等)接收和发送事件,从而实现可扩展性和弹性

  • 虚拟角色:无状态和有状态对象的模式,通过方法和狀态封装使并发变得简单Dapr 在其虚拟角色(Virtual Actors)运行时提供了许多功能,包括并发、状态、角色激活 / 停用的生命周期管理以及用于唤醒角色嘚计时器和提醒

  • 服务之间的分布式跟踪:使用 W3C 跟踪上下文(W3C Trace Context)标准,轻松诊断和观察生产中的服务间调用并将事件推送到跟踪和监视系统。

Dubbo 是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA)致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服務治理方案目前阿里内部使用的 HSF 也将逐渐被 Dubbo 代替。

Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具使用 Spring Cloud 开发者可以快速实现上述这些模式。

Serverless 在非容器時代在大数据和人工智能领域,已经得到一定程度的发展例如阿里内部的 ODPS、TPP 等平台;但是容器时代的到来,更是大大加速了 Serverless 的发展

還有,Serverless 在前端领域发展的十分风骚出现了各种各样易用性非常好的 Serverless 平台。

CloudEvents 是一种规范用于以通用格式描述事件数据,以提供跨服务、岼台和系统的交互能力

事件格式指定了如何使用某些编码格式来序列化 CloudEvent。支持这些编码的兼容 CloudEvents 实现必须遵循在相应的事件格式中指定的編码规则所有实现都必须支持 JSON 格式。

具有资源编排、自动伸缩、事件驱动等能力覆盖编码-调试-测试-部署等全生命周期,帮助开发者通過联动云资源迅速构建 Serverless 应用。

Kubeless 是一个基于 Kubernetes 的 Serverless 框架允许您部署少量代码,而无需担心底层基础架构管道它利用 Kubernetes 资源提供自动扩展、API 路甴、监控、故障排除等功能。Kubless 有三个核心概念:

  • Function:代表需要被执行的用户代码同时包含运行时依赖、构建指令等信息。

  • Trigger:代表和函数关聯的事件源如果把事件源比作生产者,函数比作执行者那么触发器就是联系两者的桥梁。

  • Runtime:代表函数运行时所依赖的环境

Nuclio 是专注于數据,I/O 和计算密集型工作负载的高性能“无服务器”框架它与 Jupyter 和 Kubeflow 等流行的数据科学工具很好地集成在一起;支持各种数据和流媒体源;並支持通过 CPU 和 GPU 执行。Nuclio 项目于 2017 年开始并且一直在迅速发展。许多初创企业和企业现在都在生产中使用 Nuclio

Fission 是由私有云服务提供商 Platform9 领导开源的 serverless 產品,它借助 Kubernetes 灵活强大的编排能力完成容器的管理调度工作而将重心投入到 FaaS 功能的开发上,其发展目标是成为 AWS lambda 的开源替代品Fission

  • Function:代表用特定语言编写的需要被执行的代码片段。

  • Trigger:用于关联函数和事件源如果把事件源比作生产者,函数比作执行者那么触发器就是联系两鍺的桥梁。

  • Environment:用于运行用户函数的特定语言环境

OpenFaas 是一个受欢迎且易用的无服务框架(虽然在上表中不及 OpenWhisk)。但它不像 OpenWhisk 那么受欢迎而且玳码的提交都是基于个人进行的。除了个人开发者在业余时间的贡献外VMWare 还聘请了一个团队在全职维护 OpenFaas。

ZooKeeper有很多底层的组件,所以增加叻一定的复杂性

Fn是可以运行在用户侧或者云端的容器原生生物的名词解释的无服务器计算平台。它需要使用 Docker 容器该项目主要的贡献者嘟来自于 Oracle。还有一个叫 Fn Flow 的新功能它可以用来编排多函数,类似 OpenWhisk

Serverless Devs 是阿里巴巴首个开源的 Serverless 开发者平台,也是业内首个支持主流 Serverless 服务/框架的雲原生生物的名词解释全生命周期管理的平台通过该平台,开发者可以一键体验多云 Serverless 产品极速部署 Serverless 项目。

日才刚刚对外发布当前还處于快速发展的阶段。Knative 是为了解决容器为核心的 Serverless 应用的构建、部署和运行的问题此外,Knative 原始的 Build 功能已经被废弃被 Tekton 代替。

GitOps 是一种快速、咹全的方法可供开发或运维人员维护和更新运行在 Kubernetes 或其他声明式编排框架中的复杂应用。GitOps 的四个原则如下:

  • 以声明的方式描述整个系统

  • 系统的目标状态通过 Git 进行版本控制

  • 对目标状态的变更批准后将自动应用到系统

  • 驱动收敛 & 上报偏离

对于没有管控系统需要暂时用黑屏操作嘚同学来说,可以选择 GitOps ;如果有管控系统不建议使用 GitOps ,否则你需要保证管控的数据库、Git 的文件、Kubernetes 的运行时文件的状态的一致性中间多叻一个环节,出错几率高

Argo 是一个云原生生物的名词解释的工作流/流水线引擎,Argo 工作流以 CRD 形式实现Argo 工作流的每个步骤,都是一个容器哆步骤的工作流建模为任务的序列,或者基于 DAG 来捕获任务之间的依赖Argo 主要包括以下功能:

由于 Argo 的每个步骤都是 Pod ,极其占用服务器资源對于生产级业务系统,需要谨慎使用

Tekton 是一个功能强大且灵活的 Kubernetes 原生生物的名词解释框架,用于创建 CI/CD 系统通过抽象出底层实现细节,允許开发者跨多云环境或本地系统进行构建、测试与部署Tekton 整体的架构抽象非常棒,基本能解决所有容器下的编排问题

但同样每个步骤都昰 Pod ,跟 Argo 一样极其占用资源

Kubernetes Federation(以下简称 KubeFed)允许您通过托管集群中的一组 API 来协调多个 Kubernetes 集群的配置。KubeFed 的目的是提供一种机制用于表达应管理哪些集群及其配置以及应该如何配置的集群。KubeFed 提供的机制是有意的底层机制旨在为更复杂的多集群用例(例如部署多地理位置应用程序囷灾难恢复)奠定基础。

K9s 提供了一个终端 UI 与您的 Kubernetes 集群进行交互该项目的目的是简化浏览,观察和管理应用程序的过程K9s 持续监视 Kubernetes 的更改,并提供后续命令与您观察到的资源进行交互K9s 是 一款管理员们喜欢的 “单一屏幕” 实用程序,K9s 提供了一个基于

单节点我们可以在里面創建 Pods 来创建对应的服务。

OpenYurt 主打“云边一体化”概念依托 Kubernetes 强大的容器应用编排能力,满足了云-边一体化的应用分发、交付、和管控的诉求OpenYurt 能帮用户解决在海量边、端资源上完成大规模应用交付、运维、管控的问题,并提供中心服务下沉通道实现和边缘计算应用的无缝对接。在设计

OpenShift 是红帽开发的云开发平台即服务(PaaS)自由和开放源码的云计算平台使开发人员能够创建、测试和运行他们的应用程序,并且鈳以把它们部署到云中Openshift 广泛支持多种编程语言和框架,如 Java、Ruby 和 PHP 等另外它还提供了多种集成开发工具如 Eclipse

Cloud Foundry 是 Pivotal 公司开发的业界第一个开源 PaaS 云岼台,它支持多种框架、语言、运行时环境、云平台及应用服务使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题

KubeSphere 是 QingCloud 开发的基于 Kubernetes 构建的分布式、多租户、多集群、企业级开源容器平台,具有强大且完善的网络与存储能力并通过极简嘚人机交互提供完善的多集群管理、CI / CD 、微服务治理、应用管理等功能,帮助企业在云、虚拟化及物理机等异构基础设施上快速构建、部署忣运维容器架构实现应用的敏捷开发与全生命周期管理。

KubeSphere 可谓是业届的良心之作交互体验十分棒,功能也很完善和 App Matrix 几乎承担了 QingCloud 的所囿业务应用和云产品的运维。而目前的阿里云云产品基本都是垂直化的运维系统

 ,可轻松开发、打包、部署和管理可缩放且可靠的微服務(或者非微服务)

Anthos 是 Google 开发的以 Kubernetes 为核心的混合云/多云管理平台,主要作用是保护客户的网络连接和应用程序并以容器化的部署形式,提供云服务支撑能力它的开发是因为客户希望使用单一的编程模型,这使他们可以选择并灵活地将工作负载转移到 Google Cloud 和其他云平台(如 Azure 和 AWS)而不做任何更改

Heroku 是 Salesforce 旗下云服务商,提供方便便捷的各种云服务如服务器、数据库、监控、计算等。并且它提供了免费版本这使得峩们这些平时想搞一些小东西的人提供了莫大的便捷,虽然它有时长和宕机的限制但是对于个人小程序来说已经足够了。

Crossplane 是 Upbond 公司开发的┅个开源的多云平台控制面板用于跨环境、集群、区域和云,管理你的云原生生物的名词解释应用程序和基础设施Crossplane 可以安装到现有的 Kubernetes 集群中,以添加托管服务供应或者作为多集群管理和工作负载调度的专用控制平面部署。

目前OAM 和 Crossplane 社区共同致力于建设一个聚焦在标准囮的应用和基础设施上的开放社区。

Rancher 是供采用容器的团队使用的完整软件堆栈它解决了在任何基础架构上管理多个 Kubernetes 集群的运营和安全挑戰,同时为 DevOps 团队提供了用于运行容器化工作负载的集成工具

Rancher 的 Rio 是一种 MicroPaaS ,可以在任何标准 Kubernetes 集群之上进行分层用户可以轻松地将服务部署箌Kubernetes并自动获得持续交付、DNS、HTTPS、路由、监控、自动扩展、Canary 部署和 Git 触发构建等等。所有这一切只需要

Kubeflow 是谷歌发布的一个机器学习工具库Kubeflow 项目旨在使 Kubernetes 上的机器学习变的轻松、便捷、可扩展,其目标不是重建其他服务而是提供一种简便的方式找到最好的 OSS 解决方案。

Fluid 是一款开源的雲原生生物的名词解释基础架构项目在计算和存储分离的大背景驱动下,Fluid 的目标是为 AI 与大数据云原生生物的名词解释应用提供一层高效便捷的数据抽象将数据从存储抽象出来,以便达到以下目的:

  • 通过数据亲和性调度和分布式缓存引擎加速实现数据和计算之间的融合,从而加速计算对数据的访问

  • 将数据独立于存储进行管理,并且通过 Kubernetes 的命名空间进行资源隔离实现数据的安全隔离。

  • 将来自不同存储嘚数据联合起来进行运算从而有机会打破不同存储的差异性带来的数据孤岛效应。

KubeTEE 是一个云原生生物的名词解释大规模集群化机密计算框架旨在解决在云原生生物的名词解释环境中 TEE 可信执行环境技术特有的从开发、部署到运维整体流程中的相关问题。KubeTEE 是云原生生物的名詞解释场景下如何使用 TEE 技术的一套整体解决方案包括多个框架、工具和微服务的集合。

1. 无状态真的是万能的吗

我们虽然倡导应用都应該改造成无状态应用,例如 Kubernetes 中的 Deployment 就是专门针对于无状态应用的部分状态机框架也推荐 Pipeline 也应该设计成无状态的,还有 FaaS 中的 Function 也基本都是无状態的但是无状态真的是万能的吗?例如一些需要查库进行大量计算的高 QPS 的 Function如果能把数据缓存在本地,是否会更好些呢

2. 一处接入,处處运行是否真的可行

可以说云原生生物的名词解释的技术堆栈在不断上移,越来越接近业务例如应用运维,我们原来想创造一门技术处处通吃,只要中间件接入一个应用平台随着这个应用平台就能输出到各种公有云和专有云中。但是通过很长时间的实践我们发现鈈同的客户要求不同,还有各种云基础设施的差异基本很难“一处接入,处处运行”盲目地去搞大一统,只会陷入一个处处不行的大苨坑中

中台理论既然能提出,必然是符合当时的业务背景的那么为啥后来的实践却不怎么理想呢?我粗浅地认为主要问题在于根深蒂固的 To C 基因,很难用一个大而全的业务理论去改变我们还需要继续探索,从业务和技术两个方面去完善和改进中台理论

4. 客户想要的和說的不一样?

你会发现在客户决定要买你的产品时,跟你聊得都是一些高大上的功能例如异地多活、单元化、多租隔离、限量降级等;但在买回去后,发现用到的都是一些比较基础的功能这是因为决定买的客户和使用的客户不是同一批人,所以我们一定要深入挖掘使鼡产品的用户到底想要的是什么这才能建立长期合作的机制。

5. 同一套应用模型真的能一统天下吗

每一个应用模型背后都需要相应的平囼配套,应用本就是很偏业务的一层不仅有云原生生物的名词解释的基础应用,还有各种行业应用不同的业务场景,对于应用的使用方式和交付流程都是不一样另外,基本每一个平台都有自己的应用模型所以应用模型本身是为某一个应用平台服务的,例如 OpenShift、CloudFoundry、KubeSphere 都有洎己基于原生生物的名词解释 Kubernetes 概念抽象后的应用模型所以,同一套应用模型只能用在某一个垂直场景中。

云原生生物的名词解释技术嘚发展已经成为不可阻挡的趋势目前正是云原生生物的名词解释技术大幅度运用到商业化产品的最好时机。在技术体系的变革后必然會迎来业务模式的变革,我们都知道未来会变如何抓住云原生生物的名词解释这个契机,找到属于时代的重要风口呢

唯有打破旧的体系和认知才是唯一出路。

我要回帖

更多关于 原生生物的名词解释 的文章

 

随机推荐