云原生是一个组合词,可以拆分为“云”和“原生”两个词,“云”我们都知道,即在线网络,传统的应用原本都跑在本地服务器上,很有可能需要停机更新,且无法动态扩展,“云”表示应用程序运行在分布式的云环境中,可以频繁变更,持续交付。 “原生”表示应用程序在设计前期就考虑到了云平台的弹性和分布式特性,也就是为云设计的。 可以简单理解为:云原生=微服务+DevOps+持续交付+容器化| 微服务 |即软件架构,使用微服务架构可以将一个大型的应用程序按照功能模块拆分成多个独立自治的微服务,每个微服务仅仅实现一种功能,具有很明确的边界。 带来的好处有哪些?1)服务的独立部署每个服务都是独立的项目,可以独立部署,不依赖于其他服务,耦合性低。 2)服务的快速启动拆分之后服务启动的速度要比拆分之前快很多,因为依赖的库少了,代码量也少了。 3)更加适合敏捷开发。 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。 服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。 4)职责专一,由专门的团队负责专门的服务。 业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。 5)服务可以动态按需扩容当某个服务的访问量较大时,我们只需要将这个服务扩容即可。 6)代码的复用每个服务都提供REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。 | 容器化 |是云原生的核心技术,它是一种相对于虚拟机来说更加轻量的虚拟化技术。 能为我们提供一种可移植、可重用的方式来打包、分发和运行程序。 容器的基本思想就是将需要执行的所有软件打包到一个可执行程序包。 例如,将一个Java虚拟机、Tomcat服务器以及应用程序本身打包进一个容器镜像。 用户可以在基础设施环境中使用这个容器镜像启动容器并运行应用程序。 而Docker是目前应用最为广泛的容器引擎,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,Docker和K8s都采用Go编写,(K8s全称Kubernetes,由首字母K,结尾字母s以及中间的8个字母组成,所以简称为K8s)。 | DevOps |是软件开发人员和IT运维人员之间的合作过程,是一种工作环境、文化和实践的集合,目标是高效地自动执行软件交付和基础架构更改流程。 开发和运维人员通过持续不断的沟通和协作,可以以一种标准化和自动化的方式快速、频繁且可靠地交付应用。 | 持续交付 |就是不误时开发,不停机更新,是一种软件开发方法,它利用自动化来加快新代码的发布。 在持续交付流程中,开发人员对应用所做的更改可通过自动化被推送至代码存储库或容器镜像仓库。
云原生从字面意思上来看可以分成 云 和 原生 两个部分。
云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。
原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如️云服务的 弹性 和 分布式 优势。
那具体要怎么利用呢,请参考下图:
微服务 微服务解决的是我们软件开发中一直追求的 低耦合+高内聚 ,记得有一次我们系统的接口出了问题,结果影响了用户的前台操作,于是黎叔拍案而起,灵魂发问:“为啥这两个会互相影响?!”
微服务可以解决这个问题,微服务的本质是把一块大饼分成若干块低耦合的小饼,比如一块小饼专门负责接收外部的数据,一块小饼专门负责响应前台的操作,小饼可以进一步拆分,比如负责接收外部数据的小饼可以继续分成多块负责接收不同类型数据的小饼,这样每个小饼出问题了,其它小饼还能正常对外提供服务。
DevOps DevOps的意思就是 开发和运维 不再是分开的两个团队,而是你中有我,我中有你的一个团队。 我们现在开发和运维已经是一个团队了,但是运维方面的知识和经验还需要持续提高。
持续交付 持续交付的意思就是在不影响用户使用服务的前提下频繁把新功能发布给用户使用,要做到这点非常非常难。 我们现在两周一个版本,每次上线之后都会给不同的用户造成不同程度的影响。
容器化 容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了,每个服务都被无差别地封装在容器里,可以被无差别地管理和维护,现在比较流行的工具是docker和k8s。
所以你也可以简单地把云原生理解为: 云原生 = 微服务 + DevOps + 持续交付 + 容器化
这里还隐藏了一个词——“计算”(Computing),因为云原生本质上是一种与云计算(CloudComputing)相同的计算方式,因此通常我们在说云原生的时候,实际上是暗指云原生计算(CloudNativeComputing)。
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。 云原生的英文为CloudNative,是一个组合词:Cloud+Native。
云原生是基于分布部署和统一运管的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。
容器技术和云原生好比一对螺旋体,容器技术催生了云原生思潮,云原生生态推动了容器技术发展。 从2013年Docker技术诞生,到2015年CNCF这个云原生领域重量级联盟成立,这不是历史的巧合而是历史的必然。
云原生从字面意思上来看可以分成云和原生两个部分。 云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。
云原生包含哪些技术?云原生技术以微服务、DevOps、容器、多云业务管理为代表,目前已经成为了加速企业数字化业务高效创新、实现企业数字化转型的最佳技术支撑。
本文地址:http://www.hyyidc.com/article/35712.html