美文网首页
云原生的理解

云原生的理解

作者: 宏势 | 来源:发表于2022-03-18 15:54 被阅读0次

    云原生到底是什么

    云原生这个概念相信大家多多少少都有听说过,应该可以算是目前互联网行业最火的技术之一,对于从事互联网行业人来说,如果你还不懂云原生是多少,那就有点out了。

    那么云原生到底是什么呢?跟我们平时说的云计算又有什么区别?
    我们先从字面意义上来说,云原生可以拆成 原生两个部分

    云是什么

    简单来说:通过网络把各类计算和存储等资源集合在一起,通过软件自动化管理可以快速提供资源,按需付费,对用户来说,好像资源是取之不尽,用之不竭。

    云的概念最早可以追溯到20世纪60年代,约翰·麦卡锡教授在1961年麻省理工学院的百年庆典上说:" 计算机也许有一天会被组织成一种公用事业,就像电话系统是一样,每个订阅者只需为实际使用的容量付费,就可以访问到具有非常庞大的系统的计算资源....."

    直到2006年,亚马逊首次推出弹性计算云(EC2)服务,真正开启云计算的新时代。

    到了2010年,Rackspace和NASA联手创建了OpenStack开源云计算平台,业界大厂也相继发布相关云产品,云市场步入快速发展期。

    直到现在,云计算进入成熟期,出现各种形态的云服务:

    • 按服务类型划分:Iaas(基础设施即服务),PaaS(平台即服务),SaaS (软件即服务)三大类
    • 按部署方式划分:公有云,私有云和混合云 三大类
    • 按行业类别划分:金融云、政企云、医疗云、教育云等等

    我们熟悉的阿里云,腾讯云,百度云都是公有云,行业解决方案云厂商有华为云,金山云等等。大部分大云厂商都是可以提供多样化,多形态的云服务。

    云原生

    云原生的概念最早是Pivotal公司的高级产品经理Matt Stine 在2013年提出的: 云原生是一种利用云计算交付模型的优势来构建和运行应用程序的方法。

    Pivotal公司是在2013年由EMC和VMwar联合成立的一家新公司,定位是一家下一代 云计算和大数据应用相结合的公司,是一家开源商业公司

    2015年时候 Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;与此同时云原生计算基金会(CNCF)成立,加快了云原生的发展,当时把云原生定义为包括:容器化封装+自动化管理+面向微服务

    2017年 Matt Stine接收InfoQ采访把云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质

    2018年,CNCF又更新了云原生的定义,把服务网格(Service Mesh)和声明式API给加了进来
    目前Pivotal最新官网对云原生概阔为:DevOps+持续交付+微服务+容器

    个人的理解

    其实云原生之所以解释不清楚,是因为云原生没有确切的定义,云原生一直在发展变化之中,解释权不归某个人或组织所有。简单来说 云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论;比如哪天又出现一项新的构建或者运行程序的技术,也会把它加到云原生范畴内。那为叫云原生呢?而不叫其它名字,原生表示应用程序从设计之初即考虑到云的环境,原生为云而设计,充分利用和发挥云平台的弹性+分布式优势,所以有人说云原生是伴随云计算的滚滚浪潮应运而生,因云而生。

    从技术发展的角度看,我们可以云原生理解为云计算所关注的重心从“资源”逐渐转向“应用”的必然结果。以“资源”为中心的云计算技术关注资源如何虚拟化,多租化,典型代表是计算、网络、存储的三大基础设施的云华,以及相关硬件资源、操作系统和控制面等技术;而以“引用”为中心的云原生技术则关注应用如何更好使用云环境,使用户能够在云环境下快速开发部署和交付云原生应用。

    CNCF对云原生的定义

    云原生技术使组织能够在公有、私有和混合云等现代动态环境中构建和运行可扩展的应用程序。容器、服务网格、微服务、不可变基础设施和声明式 API 就是这种技术的例证。这些技术支持具有弹性、可管理和可观察的松散耦合系统。结合强大的自动化,它们使工程师能够以最少的工作频繁且可预测地进行高影响力的更改(谷歌官网翻译)

    CNCF 全称[Cloud Native Computing Foundation(云原生计算基金会

    2015年7月21日Google主导成立了云原生计算基金会,其最初的口号是坚持和整合开源技术来让编排容器作为微服务架构的一部分,致力于云原生应用推广和普及。CNCF作为一个厂商中立的基金会,致力于Github上的快速成长的开源技术的推广,如Kubernetes、Prometheus、Envoy等,帮助开发人员更快更好的构建出色的的产品

    云原生代表技术

    云原生技术栈主要有:容器、服务编排、服务网格、DevOps、微服务、不可变基础设施和声明式API

    • 容器:一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行,Docker是容器的一种

    • 服务编排:主要Kubernetes 简称k8s,DockerSwarm,Mesos

    • 服务网格:用于微服务应用的可配置基础架构层,为微服务提供诸如服务发现、负载均衡、加密、身份鉴定、授权、支持熔断器模式等一系列功能,实现方式通常是一种代理实例,我们也叫"sidecar",目前主流技术Istio。

    • DevOps:这是个组合词,Dev+Ops,就是开发和运维合体,实际上DevOps应该还包括测试,DevOps是一个敏捷思维,是一个沟通文化,也是组织形式,为云原生提供持续交付能力

    • 微服务:一种用于构建应用的架构方案,.简单的说就是其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。

    • 不可变基础设施:这里基础设施可以理解为一个应用运行所需要的基本需求,不可变性最基本的就是指运行服务的服务器在完成部署后,就不在进行更改。通过公共镜像修改,快速构建和部署应用

    • 声明式API:用户描述最终运行环境的状态,由系统来决定如何来创建这个环境。例如,你的描述就变成“创建一个有三个Nginx的集群”,而不是把创建Nginx的命令运行三次组成一个集群。这样的好处是当运行环境与描述不符合时,系统能检测到差异,并自动修复,这样系统就有了自动容错的功能。

    云原生好处

    1.基础建设与管理成本降低
    统一管理基础设施,实现多个数据中心平台化统一管理,合理利用分配资源,提高资源利用率

    2.提高布署灵活性与可扩充性
    程序容器化让多个应用程序得以存在同一操作环境中,开发人员将代码、微服务放置在可复制、搬移的镜像中,轻松地复制、发布到任意云平台,多个容器间不会互相干扰(沙盒机制),不仅减少管理工作还能更有效地利用硬件资源,实现更快的持续集成、交付与发布

    3.较高的安全性
    云资源对使用者透明化,支持容错自动调度,提升应用稳定安全

    随着虚拟化技术的成熟和分布式框架的普及,在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势

    云原生的挑战

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

    相关文章

      网友评论

          本文标题:云原生的理解

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