云原生

作者: allenhaozi | 来源:发表于2019-12-06 17:02 被阅读0次

CNCF Cloud Native Definition v1.0

  • Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. + Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
  • These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
  • The Cloud Native Computing Foundation seeks to drive adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects. We democratize state-of-the-art patterns to make these innovations accessible for everyone.

CNCF 云原生定义 v1.0

  • 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
  • 云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
  • 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
  • 云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

云原生应用程序的10个关键属性

  1. 包装成轻量级容器:

云原生应用程序是一组独立自主的服务,这些服务打包为轻量级容器。与虚拟机不同,容器可以快速伸缩。由于扩展单元转移到容器,基础设施利用率得到了优化。

  1. 使用最好的语言和框架开发:

云原生应用程序的每个服务都使用最适合该功能的语言和框架开发。云原生应用程序是多语言的;服务使用多种语言、运行时和框架。例如,开发人员可以基于Node中开发的WebSockets构建实时流服务。同时选择Python和Flask来公开API。开发微服务的细粒度方法允许他们为特定的工作选择最佳的语言和框架。

  1. 设计为松散耦合的微服务:

属于同一应用程序的服务通过应用程序运行时发现彼此。它们独立于其他服务而存在。弹性基础设施和应用程序体系结构如果正确集成,可以高效、高性能地扩展。
松散耦合的服务允许开发人员独立对待每个服务。通过这种解耦,开发人员可以专注于每个服务的核心功能,以交付细粒度的功能。这种方法可以有效地对整个应用程序进行生命周期管理,因为每个服务都是独立维护的,并且具有明确的所有权。

  1. 以用于交互和协作的api为中心:

云原生服务使用轻量级api,这些api基于协议,如representational state transfer (REST)、谷歌的开源远程过程调用(open source remote procedure call, gRPC)或NATS。REST用作在超文本传输协议(HTTP)上公开api的最低公分母。为了提高性能,gRPC通常用于服务之间的内部通信。NATS具有发布-订阅功能,支持应用程序中的异步通信。

  1. 采用无状态和有状态服务的清晰分离进行架构:

持久和持久的服务遵循不同的模式,确保更高的可用性和弹性。无状态服务独立于有状态服务而存在。这里有一个关于存储如何在容器使用中发挥作用的连接。持久性是一个必须越来越多地在状态、无状态和(有些人认为)微存储环境的上下文中考虑的因素。

  1. 与服务器和操作系统依赖关系隔离:

云本地应用程序与任何特定的操作系统或单个机器没有亲缘关系。它们在更高的抽象级别上运行。唯一的例外是,当微服务需要某些功能时,包括固态驱动器(ssd)和图形处理单元(gpu),而这些功能可能只由机器的子集提供。

  1. 部署在自助服务、弹性、云基础设施上:

云原生应用程序部署在虚拟、共享和弹性基础设施上。它们可能与底层基础设施保持一致,以便动态地增长和收缩——调整自己以适应不断变化的负载。

  1. 通过敏捷DevOps流程进行管理:

云原生应用程序的每个服务都经历一个独立的生命周期,该生命周期通过敏捷DevOps流程进行管理。多个持续集成/持续交付(CI/CD)管道可以协同工作来部署和管理云本地应用程序。

  1. 自动化功能:

云本地应用程序可以高度自动化。它们很好地适应了将基础设施作为代码的概念。实际上,仅仅为了管理这些大型和复杂的应用程序,就需要一定程度的自动化。

  1. 定义的、策略驱动的资源分配:

云本地应用程序与通过一组策略定义的治理模型保持一致。它们遵循中央处理器(CPU)和存储配额等策略,以及将资源分配给服务的网络策略。例如,在企业场景中,central IT可以定义策略来为每个部门分配资源。每个部门的开发人员和DevOps团队都可以完全访问和拥有他们共享的资源。

参考文献

相关文章

网友评论

      本文标题:云原生

      本文链接:https://www.haomeiwen.com/subject/wppegctx.html