所以"云原生"可以简单的理解为:“一个应用系统借助云计算相关的周边技术进行设计研发,从而使该应用能完美的适配云上环境”。



上文提到过云原生是一种理念,一个技术栈的集合。那么相对应的技术栈主要有:容器、服务网格、微服务、不可变基础设施和声明式API。
容器:容器是与系统其他部分隔开的一系列进程。运行这些进程所需的所有文件都由一个镜像提供,这意味着从开发到测试再到生产的整个过程中,容器都具有可移植性和一致性。简单的说容器就是存放应用和应用相关依赖的“独立集装箱”,根据运送的货物的不同特性可以制定多种集装箱类型(即容器镜像)。 服务网格:服务网格简单的说可以看做是我们平时用的代理软件,但这个代理软件又更加的智能。Service Mesh可以看做是传统代理的升级版,用来解决现在微服务框架中出现的问题,可以把 Service Mesh看做是分布式的微服务代理。 微服务:将应用程序构造为一组松散耦合的服务。在微服务体系结构中,服务是细粒度的,协议是轻量级的。简单的说就是其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。 不可变基础设施:这里基础设施可以理解为一个应用运行所需要的基本需求,不可变性最基本的就是指运行服务的服务器在完成部署后,就不在进行更改。这里指代容器镜像。 声明式API:描述最终运行环境的状态,而由系统来决定如何来创建这个环境。例如,你的描述就变成“创建一个有三个Nginx的集群”,而不是把创建Nginx的命令运行三次组成一个集群。这样的好处是当运行环境与描述不符合时,系统能检测到差异,并自动修复,这样系统就有了自动容错的功能。
在微服务化方面:云原生将应用程序代码解耦成独立模块化单元,降低微服务的部属时间与互依性,提高应用的扩展性等。
在容器化包装方面:过去程序开发者可能需要创建多个虚拟机好让不同的应用程序运作,但程序容器化让多个应用程序得以存在同一操作环境中,开发人员将代码、微服务放置在可复制、搬移的容器中,轻松地复制、发布到任意云平台,多个容器间不会互相干扰(沙盒机制),不仅减少管理工作还能更有效地利用硬件资源,实现更快的持续集成、交付与发布。
在动态管理方面:通过集中的编排调度系统进行动态管理和调度,达到高速、低风险、迅速扩展和部署的方式,进行应用或服务的构建、测试、部署。
根据CNCF的统计自2016年以来,生产中使用容器的数量增加了300%。根据这个规模来看若是在大型应用云化部署后(这里假设都是以容器实例在运行),那么这个应用数以百计或者千计的容器该如何做好全生命周期的管理,如:监控日志的采集告警、调度、以及应用模块与模块之间链路调用追踪等将会是我们即将面临的最大的挑战之一。
相关参考链接:
https://github.com/cncf/toc/blob/master/DEFINITION.md
https://www.singtel.com/business/articles/what-can-born-in-the-cloud-bring-us
https://martinfowler.com/bliki/InfrastructureAsCode.html
https://builtin.com/cloud-computing/what-is-cloud-native

更多技术交流方式

想面对面的进行技术交流吗?可扫码加入钉钉群“袋鼠云开源框架技术交流群”(群号:30537511)

想体验更多的数栈开源项目吗?可以在Github社区搜索“FlinkX”开源项目
FlinkX开源项目地址:
https://github.com/DTStack/flinkx

点击“阅读原文”,一键到达FlinkX开源项目!
文章转载自数栈研习社,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






