若是你研究过云原生应用程序和相关技术,大几率你遇到过 CNCF 的云原生全景图。这张全景图技术之多规模之大无疑会让人感到震惊,该如何去理解这张图呢?数据库
若是把它拆开来一次只分析一小块内容,你会发现整个全景图没有那么复杂。事实上,该全景图按照功能有序地组织在一块儿,一旦你了解了每一个类别表明的内容,你就能够轻松游走于全景图中。安全
首先,咱们剥离掉全部单个的技术,仅查看类别(以下图)。图中有不一样的“行”,像建筑的不一样层,每层都有本身的子类别。最底层提供了构建云原生基础设施的工具。往上,你能够开始添加运行和管理应用程序所需的工具,好比运行时和调度层。在最上层,有定义和开发应用程序的工具,好比数据库、镜像构建和 CI/CD 工具(咱们将在后文讨论)。网络
好了,如今你应该记住了云原生全景图始于基础设施,往上的每一层都更接近实际的应用程序。这就是每层表明的意思(后面咱们会讨论上图右边的两“列”)。下面咱们就从最底层开始,逐层进行解析。架构
供应指的是为云原生应用准备标准基础环境所涉及的工具。它包含了基础设施的建立、管理、配置流程的自动化,以及容器镜像的扫描、签名和存储等。供应层经过提供设置和实施策略,在应用程序和平台中构建身份验证和受权,以及处理密钥分发等等的工具,也拓展到了安全领域。框架
供应层包括:分布式
接下来是运行时层。这个词可能会让你感到迷惑。像不少 IT 术语同样,运行时没有严格的定义,且能够根据语境有不一样的用法。狭义上讲,运行时是特定机器上准备运行应用程序的沙盒——也就是保障应用程序正常运行所需的最低配置。广义上讲,运行时是运行一个应用程序所需的全部工具。工具
在 CNCF 云原生全景图中,运行时保障了容器化应用程序组件的运行和通讯, 包括:性能
一旦按照安全和合规性标准(供应层)自动化基础设施供应,并安装了应用程序运行所需的工具(运行时层),工程师就须要弄清楚如何编排和管理应用程序。编排和管理层将全部容器化服务(应用程序组件)做为一个群组管理。这些容器化服务须要相互识别和通讯,并须要进行协调。这一层可为云原生应用提供自动化和弹性能力,使云原生应用自然具备可扩展性。测试
这一层包含:加密
如今,咱们来到了最顶层。应用定义和开发层,顾名思义,汇集了让工程师构建和运行应用程序的工具。上述全部内容都是关于构建可靠、安全的环境,以及提供所有所需的应用程序依赖。
这一层包括:
贯穿全部层的工具
接下来咱们将进入到云原生全景图右侧贯穿全部层的两列。可观察性和分析(Observability&analysis)是监控各层的工具,平台则将各层中不一样的技术捆绑为一个解决方案。
为了限制服务中断并下降解决问题的平均时间(MRRT),你须要监控和分析应用层序的方方面面,以便在出现异常时可当即发现并纠正。复杂环境中容易出现故障,这些工具可快速识别并解决故障,从而下降故障带来的影响。因为这一类别贯穿并监控各层,所以它在侧面,而不是嵌入到某一层中。
这这一类别你将发现:
能够看到,图中每个模块解决一个特定的问题。但咱们知道,仅有存储并不能提供应用程序所需的所有功能。你还须要编排工具,容器运行时,服务发现,网络,API 网关等等。平台覆盖多层,将不一样的工具组合在一块儿,以解决更大的问题。
配置和微调不一样的模块使其安全可靠,并确保它利用的技术都能及时更新、全部漏洞都打了补丁,这并非一件容易的事情。使用平台时,用户不用额外担忧这些细节问题。
你可能会注意到,全部的类别都围绕着 Kubernetes 展开。这是由于 Kubernetes 虽然只是云原生景观图这张拼图中的一块,但它倒是云原生技术栈的核心。顺便说一下,CNCF 刚建立时,Kubernetes 就是其中的第一个种子项目,后来才有了其余项目。
平台可分为四类:
在每一个类别中,针对相同或类似的问题,都有不一样的工具可选择。有一些是适用于新现实的预云原生技术,还有一些则是全新的。区别在于它们的实现和设计方法。没有完美的技术符合你的全部需求。大多数状况下,技术受设计和架构选择的限制——始终须要权衡取舍。
在选择技术栈时,工程师必须仔细考虑每种能力和须要权衡取舍的地方,以肯定最合适的选项。虽然这样会让状况变得更复杂,但在选择应用程序所需的最适合的数据存储、基础设施管理、消息系统等方案时,这样作是最可行的办法。如今,构建一个系统比云原生以前的时代容易多了。若是构建恰当,云原生技术将提供更强大的灵活性。在现现在快速变化的技术生态中,这多是最重要的能力之一。(文章来自CSDN,鸣谢)