• 云原生简述


    云原生简述:

    1 云原生的定义

    云原生的概念最早是由来自Pivotal公司的Matt Stine于2013年首次提出,这是他根据自身多年的架构和咨询经验总结出来的一个思想集合。随后,这个概念得到了开源社区的认可和不断完善,并被一直延续使用至今。

    Pivotal公司的产品包括JAVA的Spring框架、Redis缓存、RabbitMQ队列、Greeplum MPP数据库等,同时,该公司是DevOps理论和云原生理念的提出者。
    Matt Stine的思想可以参考其2015年的书籍《迁移到云原生应用架构》(https://jimmysong.io/migrating-to-cloud-native-application-architectures/)

    云原生计算基金会总经理Priyanka Sharma对云原生的解释为:“云原生技术是指工程师和软件人员利用云计算构建更快、更有弹性应用系统的技术,这样做可以快速满足客户的需求”。

    云原生计算基金会(CNCF)的官方释意为:云原生技术使组织能够在公共、私有和混合云等现代动态环境中,构建和运行可伸缩的应用程序。例如,容器服务网格微服务不可变基础设施声明性API就是算是云原生技术。
    这些技术使弹性、可管理和可观察的松散耦合系统成为可能。结合健壮的自动化工具,它们将能让工程师以最少的工作量,高强度、可预测地进行更改。

    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.

    信通院在2021年的《云计算白皮书》中,提出了云原生的5大特征:弹性高可用自动化自愈性可观测性

    2 云原生的代表技术

    云原生的代表技术如下:

    • 容器:容器是与系统其他部分隔开的一系列进程。运行这些进程所需的所有文件都由一个镜像提供,这意味着从开发到测试再到生产的整个过程中,容器都具有可移植性和一致性。简单的说容器就是存放应用和应用相关依赖的“独立集装箱”,根据运送的货物的不同特性可以制定多种集装箱类型(即容器镜像)
    • 服务网格:服务网格简单地看做是我们平时用的代理软件,但这个代理软件又更加的智能。Service Mesh可以看做是传统代理的升级版,用来解决现在微服务框架中出现的问题,可以把 Service Mesh看做是分布式的微服务代理
    • 微服务:将应用程序构造为一组松散耦合的服务。在微服务体系结构中,服务是细粒度的,协议是轻量级的。简单的说就是其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
    • 不可变基础设施:这里基础设施可以理解为一个应用运行所需要的基本需求,不可变性最基本的就是指运行服务的服务器在完成部署后,就不在进行更改。这里指代容器镜像。
      • 传统的可变服务器基础架构中,服务器会不断更新和修改。使用此类基础架构的工程师和管理员可以通过SSH连接到他们的服务器,手动升级或降级软件包,逐个服务器地调整配置文件,以及将新代码直接部署到现有服务器上。换句话说,这些服务器是可变的,它们可以在创建后进行更改。在许多手动修改之后,服务器的不同配置往往变得不清楚,因此更新或更改任何配置可能会产生意想不到的副作用
      • 不可变基础架构是另一种基础架构范例,其中服务器在部署后永远不会被修改。如果需要以任何方式更新,修复或修改某些内容,则会根据具有相应更改的公共映像构建新服务器以替换旧服务器。经过验证后,它们就会投入使用,而旧的则会退役。不可变基础架构的好处包括基础架构中更高的一致性和可靠性,以及更简单,更可预测的部署过程。它可以缓解或完全防止可变基础架构中常见的问题,例如配置漂移和雪花服务器。但是,有效地使用它通常包括全面的部署自动化,云计算环境中的快速服务器配置,以及处理状态或短暂数据(如日志)的解决方案
      • 可变基础和不可变基础设施之间最根本的区别在于:前者的组件旨在在部署后进行更改;后者的组成部分旨在保持不变并最终被替换。
    • 声明式API:描述最终运行环境的状态,而由系统来决定如何来创建这个环境。例如,你的描述就变成“创建一个有三个Nginx的集群”,而不是把创建Nginx的命令运行三次组成一个集群。这样的好处是当运行环境与描述不符合时,系统能检测到差异,并自动修复,这样系统就有了自动容错的功能。

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

    3 云原生的好处

    在去年IDC(互联网数据中心)对企业的调研中,有将近70%已经将云策略落地,却只有3%能带来明显的获利突破差异就在技术面的“云实践成熟度”——云原生化

    而云原生化的云服务平台,不仅能够显着的降低基础建设与管理成本、提高布署灵活性与可扩充性,而且还有较高的安全性。其好处主要体现在以下方面:

    • 在微服务化方面:云原生将应用程序代码解耦成独立模块化单元,降低微服务的部属时间与互依性,提高应用的扩展性等。
    • 在容器化包装方面:过去程序开发者可能需要创建多个虚拟机好让不同的应用程序运作,但程序容器化让多个应用程序得以存在同一操作环境中,开发人员将代码、微服务放置在可复制、搬移的容器中,轻松地复制、发布到任意云平台,多个容器间不会互相干扰(沙盒机制),不仅减少管理工作还能更有效地利用硬件资源,实现更快的持续集成、交付与发布。
    • 在动态管理方面:通过集中的编排调度系统进行动态管理和调度,达到高速、低风险、迅速扩展和部署的方式,进行应用或服务的构建、测试、部署。

    借助以上优势以及相对一致的实践方式,云原生能快速的打通各家云环境的壁垒,企业可以对市场变化做出最快的反应,使得新创云原生企业拥有能不断颠覆传统企业的威力。

    4 云原生的挑战

    根据CNCF的统计自2016年以来,生产中使用容器的数量增加了300%。若后续大规模地进行应用云化部署(这里假设都是以容器实例在运行),那么这些数以百计或者千计的容器该如何做好全生命周期的管理,如:监控日志的采集告警、调度、以及应用模块与模块之间链路调用追踪等,将会是我们即将面临的最大的挑战之一。


    参照资料:

    1. 《弄不懂什么是云原生?看完这篇文章就够了!》
      https://www.cnblogs.com/DTinsight/archive/2021/03/12/14522296.html
    2. 《Cloud Native Computing Foundation (“CNCF”) Charter》
      https://github.com/cncf/foundation/blob/master/charter.md
    3. 《什么是不可变的基础设施?》
      https://cloud.tencent.com/developer/news/329406
    4. 《云原生定义解析—不可变基础设施 (immutable infrastructure)》
      https://blog.csdn.net/chaocai2004/article/details/103827372
  • 相关阅读:
    泛型
    HDU 4917 Permutation
    OC本学习笔记Foundation框架NSString与NSMutableString
    HDU 5095 Linearization of the kernel functions in SVM(模拟)
    大约Java有点感悟---开发商根本上感悟学习
    Codeforces 442B Andrey and Problem(贪婪)
    mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)
    mysql数据库优化课程---14、常用的sql技巧
    mysql数据库优化课程---13、mysql基础操作(mysql如何复制表)
    mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)
  • 原文地址:https://www.cnblogs.com/autopenguin/p/15429449.html
Copyright © 2020-2023  润新知