云原生技术及其未来发展趋势展望 | 趋势解读
云计算经过十几年的发展,从一开始讨论什么是云计算,到争论云计算是否是旧瓶装新酒,再到讨论如何建设云基础能力,到如何建设云平台上的应用,随着业界对云计算技术的不断探索,我们对云计算的理解和期望在日益提升。当前,大部分的企业已经确实体会到了云计算带来的竞争优势,并已经建成企业内部的私有云基础能力,或是将数据中心迁移到公有云上。应用如何使用好云计算基础设施,使云计算发挥最大能力,是目前云计算技术中最重要的议题。基于云计算平台设计的应用,业界称之为云原生应用。 一.云原生的定义 云原生(Cloud Native)是一种构建和运行应用程序的方法,是一套技术体系和方法论。Cloud Native是一个组合词,Cloud+Native。Cloud是适应范围为云平台,Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。 1、原生云的历史 2013年,Pivotal公司的Matt Stine于首次提出原生云(CloudNative)的概念,用于区分为云而设计的应用和云上部属传统应用。 2015年,Matt Stine在《迁移到云原生架构》一书中定义了符合原生云架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、抗脆弱性; 2015年云原生计算基金会(CNCF)成立,CNCF作为一个厂商中立的基金会,致力于云原生应用推广和普及。 2017年,Matt Stine将原生云架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器。 2、CNCF对云原生的定义 CNCF(Cloud Native Computing Foundation)于 2015 年 7 月成立,隶属于 Linux 基金会,初衷围绕“云原生”服务云计算。CNCF作为一个厂商中立的基金会,致力于Github上的快速成长的开源技术的推广,如Kubernetes、Prometheus、Envoy等,帮助开发人员更快更好的构建出色的产品。 原生计算基金会(CNCF)成立,是云计算的一个里程碑,标志着云计算的建设关注点从基础设施的建设向应用的云架构转变。CNCF对云原生的定义是个不断优化的过程。目前CNCF对于原生云的定义为: “云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。“ CNCF对云原生的描述,前半部分是给出了云原生的定义,并给出目前云原生最佳的技术实践。后半部分指出构建云原生应用的目标。 CNCF还给出了构建云原生的相关技术栈,已经基金会相关的孵化项目信息。 ▲CNCF 云原生全景图(Cloud Native Landscape)3、云原生的关键技术 CNCF在定义中给出了云原生的关键技术,容器、服务网格、微服务、不可变基础设施和声明式API,是目前云原生应用的最佳实践。 ▲云原生技术栈- 容器 容器技术是一种轻量级的虚拟化技术。通过操作系统内核的能力,对每个进程的资源使用(包括CPU、内存、硬盘I/O、网络等)进行隔离,达到容器里运行的进程与其他进程进行一定程度的隔离,同时避免了虚拟机(Virtual Machine)过高的额外消耗。 容器通常与容器编排系统一起工作,容器编排系统提供容器的部署和组织能力。容器编排系统通常可以将大量的机器(物理机或虚拟机)作为一个集群进行统一管理,通过设定的策略,将容器部署到这个集群的机器上;实现容器多实例的部署和应用路由的自动化配置;对基础设施和容器进行监控。 容器和容器编排技术对于云原生的意义巨大,容器为云原生应用提供了一个轻量级的运行平台, 首先相对于传统虚拟化技术,容器极其轻量,;可以实现秒级部署;同时容器应用易于移植,一次构建,随处部署。而容器编排技术可以将容器部署到一个很大的集群的同时,还能为应用提供弹性伸缩,故障转移的能力,实现了容器上应用的高可用。提升应用部署的自动化能力和快速部署的能力。 目前常见的容器技术有Linux Container(简称LXC)和runC等。runC是目前的被广泛认可的容器实现,他是基于根据 OCI 标准来创建和运行容器。而 OCI(Open Container Initiative)组织,旨在围绕容器格式和运行时制定一个开放的工业化标准。 目前最主流的容器编排实现就是Kubernetes了,Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。目前商用和开源的容器平台,基本都是基于Kubernetes的。 - 不可变基础设施 传统运维的基础设施通常是申请一台或一组服务器,运维人员通过SSH或是Agent的方式,将软件的二进制包的安装到服务器上并进行环境的配置。如果需要进行版本升级和参数变更等变更操作,就需要逐个服务器地调整配置文件,以及将新代码直接部署到现有服务器上。这些服务器承载的应用和参数是可以改变的,所以是可变基础设施。这种运维方式也被称为“雪花服务器( Snowflake Server)”,服务器像雪花一样,每一片都独特的与众不同。 不可变基础设施不同于传统的运维,服务器在部署后永远不会被修改。如果需要以任何方式更新,如版本升级或是参数配置,需要构建新服务器以替换旧服务器。在不可变基础设施中,服务器的构建通常是以镜像(Image)的方式提供的,任何一个更改都对应一个镜像。不可变基础设施又被称为“凤凰服务器(Phoenix Server)”,服务器应该像凤凰,能够从灰烬中重生。 不可变基础架构的好处包括基础架构中更高的一致性和可靠性,以及更简单,更可预测的部署过程。它可以减少或完全杜绝可变基础架构中常见的问题,例如配置漂移、集群配置一致性和环境复制问题。 不可变基础设施的一个实现方式就是被我们熟知的Docker。Docker通常被作为容器技术被人熟知,实际上Docker提供的是一种容器打包的技术。Docker的核心理念就是不可变基础设施,Docker通过镜像(Docker Images)或是Dockerfile来交付软件。每一次新的版本的发布都对整个运行环境进行重建,每一次更新都是一个新版本的Image。Docker利用容器的轻量化部署,可以达到最高的收益。 - 微服务 随着需求不断增加,单体应用可能会出现的诸多问题,比如每个小的变更都需要重新部署整个应用,一个小模块的代码缺陷可能导致所有业务不可用等问题。微服务是为解决这些问题的一种架构模式,微服务通过将业务应用由通过明确定义的 API 进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。 微服务将应用拆分为小的独立部署的服务的方式,和容器存在着天然的契合。云上的应用要求可以故障转移,弹性伸缩和快速启停,这些也是微服务应用的设计要求。可以说容器和容器编排技术的发展,大大的推动了微服务的发展;反过来,微服务应用的发展,也推动了容器技术的推广。 由于微服务是一种分布式系统,分布式系统设计的复杂性。为解决微服务系统设计复杂性,各种微服务治理框架层出不穷。比较流行的有Spring Cloud,Dubbo和Istio等。 Spring Cloud是基于微服务优秀开源项目的一个微服务治理全家桶。可以选择不同的解决方案和开源组件,比较完备的解决方案有Spirng cloud Neflix。Spring Cloud是目前全球用的最多的微服务治理框架,可以利用现有Spring的完整生态,和SpringBoot无缝写作文。 Dubbo是国内阿里巴巴提供的服务治理开源项目,同样和Spring整合。国内很多互联网公司选用Dubbo作为微服务框架。 Istio是一个服务网格的开源项目,我们会在下章介绍。 - 服务网格 前面我们讲了,Docker和Kubernetes已经解决了应用部署,调度和更新的问题。但是微服务应用作为一种分布式系统,运行时的很多问题都需要应用去处理,比如服务的发现、故障熔断和负载均衡等。为了解决这些问题,业界逐渐发展出了微服务治理框架。初期的微服务治理都是基于开发框架的,如Spring Cloud和Dubbo。这些开发框架很好的解决了微服务运行时的问题,但是存在开发语言锁定云计算技术发展,对应用存在侵入性、开发运维职责不清等弊端。服务网格(ServiceMesh)就是在这种环境下出现的。 服务网格是最近很火的一个概念,服务网格是用于控制和监控微服务应用程序中的内部服务到服务流量的软件基础结构层。它通常采取与应用程序代码一起部署,作为网络代理的 "数据平面" 和与这些代理交互的 "控制平面" 的形式。在此模型中,服务网格对于业务开发人员是透明的, 而平台运维人员也可以在不关心业务的情况下,有效的运维应用,确保应用的可靠性、安全性和可见性。而且服务网格对对业务应用开发过程的侵入性降到最低,对所有语言友好。 服务网格目前最主要的开源项目是Istio。Istio基于Kubernetes环境提供的一个完整的解决方案来满足微服务应用程序的各种需求。通过Kubernetes的Pod,Istio为每一个微服务实例注入一个Sidecar,代理(Proxy)业务实例的所有外部流量,从而实现微服务治理框架所需要的行为洞察和操作控制的能力,如服务注册发现、配置管理、熔断和链路追踪等。还可以提供灵活的灰度发布策略配置。 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |