• 云原生概述


    1. 何谓云原生

    云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。

    云原生可以概括为4个要点:DevOps+持续交付+微服务+容器

    总而言之,符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。

    软件设计有两个关键目标:高内聚、低耦合

    2.云原生全景图

    在这里插入图片描述

    2.1 云原生全景图4 层

    在这里插入图片描述

    • 供应层 (Provisioning)
      供应指的是为云原生应用准备标准基础环境所涉及的工具。它包含了基础设施的创建、管理、配置流程的自动化,以及容器镜像的扫描、签名和存储等。

    • 运行时层(Runtime)
      在 CNCF 云原生全景图中,运行时保障了容器化应用程序组件的运行和通信, 包括:

    • 云原生存储:为容器化应用提供虚拟磁盘或持久化存储;

    • 容器运行时:为容器提供隔离、资源和安全;

    • 云网络:分布式系统的节点(机器或进程)通过其连接和通信。

    • 编排和管理层(Orchestration and Management)
      编排和管理层将所有容器化服务(应用程序组件)作为一个群组管理。这些容器化服务需要相互识别和通信,并需要进行协调。这一层可为云原生应用提供自动化和弹性能力,使云原生应用天然具有可扩展性。
      这一层包含:

    • 编排和调度:部署和管理容器集群,确保它们具有弹性伸缩能力,相互之间低耦合,并且可扩展。事实上,编排工具(绝大多数情况下就是 Kubernetes)通过管理容器和操作环境构成了集群;

    • 协调和服务发现:使得服务(应用程序组件)之间可以相互定位和通信;

    • 远程进程调用(RPC):使跨节点服务间通信的技术;

    • 服务代理:服务间通信的中介。服务代理的唯一目的就是对服务之间的通信进行更多控制,而不会对通信本身添加任何内容。服务代理对下面将提到的服务网格(Service Mesh)至关重要。

    • API 网关:一个抽象层,外部应用可通过 API 网关进行通信;

    • Service Mesh:某种程度上类似于 API 网关,它是应用程序进行通信的专用基础架构层,提供基于策略的内部服务间通信。此外,它还可能包含流量加密、服务发现、应用程序监控等内容。

    • 应用定义和开发层
      应用定义和开发层,顾名思义,聚集了让工程师构建和运行应用程序的工具。这一层包括:

    • 数据库:使应用程序能以有序的方式收集数据;

    • 流和消息传递:使应用程序能发送和接收消息(事件和流)。它不是网络层,而是让消息成为队列并处理消息的工具;

    • 应用程序定义和镜像构建:用于配置、维护和运行容器镜像(应用程序的可执行文件)的服务;

    • 持续集成和持续交付(CI/CD):使开发者可自动测试代码是否与代码库(应用程序的其余部分)兼容。如果团队足够成熟,甚至可以自动部署代码到生产环境。

    2.2 贯穿所有层的工具

    云原生全景图右侧有贯穿所有层的两列,可观察性和分析(Observability&analysis)是监控各层的工具,平台则将各层中不同的技术捆绑为一个解决方案。

    • 可观察性和分析(Observability and Analysis)
      为了限制服务中断并降低解决问题的平均时间(MRRT),你需要监控和分析应用层序的方方面面,以便在出现异常时可立即发现并纠正。复杂环境中容易出现故障,这些工具可快速识别并解决故障,从而降低故障带来的影响。由于这一类别贯穿并监控各层,因此它在侧面,而不是嵌入到某一层中。

    • 日志工具:收集事件日志(有关进程的信息);

    • 监控方案:收集指标(以数字表示的系统参数,例如 RAM 可用性);

    • 追踪工具:追踪比监控更进了一步,它们监控用户请求的传播,与服务网格相关。

    • 混沌工程(Chaos Engineering):在生产环境中测试软件的工具,可识别缺陷并进行修复,减少其对服务交付的影响

    • 平台类(Platform)
      可以看到,图中每一个模块解决一个特定的问题。但我们知道,仅有存储并不能提供应用程序所需的全部功能。你还需要编排工具,容器运行时,服务发现,网络,API 网关等等。平台覆盖多层,将不同的工具组合在一起,以解决更大的问题。
      你可能会注意到,所有的类别都围绕着 Kubernetes 展开。这是因为 Kubernetes 虽然只是云原生景观图这张拼图中的一块,但它却是云原生技术栈的核心。顺便说一下,CNCF 刚创建时,Kubernetes 就是其中的第一个种子项目,后来才有了其他项目。
      平台可分为四类:

    • Kubernetes 发行版:采用未经修改的开放源代码(尽管有人对其进行了修改),并根据市场需要增加了其他功能;

    • 托管的 Kubernetes:类似于 Kubernetes 发行版,但是由提供商托管;

    • Kubernetes 安装程序:自动执行 Kubernetes 的安装和配置过程;

    • PaaS/容器服务:类似于托管的 Kubernetes,但是包含了一套更广泛的应用部署工具(通常是来自云原生景观图)。

  • 相关阅读:
    偏向锁理论太抽象,实战了解下偏向锁如何发生以及如何升级【实战篇】
    jenkins安装-linux
    分库分表MySQL
    系分 - 系统测试与维护
    2024初三集训模拟测试1
    QT学习_15_线程间通信以及注意事项
    嵌入式系统开发笔记89:认识AVR微控制器系统架构
    C++中HANDLE句柄的概念
    3D模型格式汇总
    C#NPOI操作Excel,实现Excel数据导入导出(支持多个sheet)
  • 原文地址:https://blog.csdn.net/chengfangdong/article/details/133966438