前言
最近老是看到云原生这个概念,闲暇之余也去了解了一下!看了很多文章,对云原生的解释总是迷迷糊糊,看完云里雾里,经过博主的大量查阅,用我的理解总结一下。

云原生的概念
云原生(Cloud Native)是一个组合词。我们把它拆分为云和原生两个词来看。
“云”即在线网络,我们都知道传统的应用都跑在本地服务器上,而本地部署的传统应用可能需要停机更新,且无法动态扩展等,而‘云’表示应用程序运行在分布式的云环境中,支持频繁变更,持续交付。
‘原生’表示应用程序在设计之初就考虑到了云平台的弹性和分布式特性,就是为云设计的。

那么随着云原生的技术的不断发展,他的定义也在不断地迭代和更新,不同的社区和公司对云原生有着不同的理解和定义,感兴趣的可以去看一下云原生的发展历程。

云原生的四大要点
可以简单地把云原生理解为:云原生 = 微服务 + DevOps + 持续交付 + 容器化

微服务
微服务就是一种软件架构,使用微服务架构可以将一个大型的应用程序按照功能模块拆分成多个独立自治的微服务,每个微服务仅仅实现一种功能,具有很明确的边界。

使用微服务架构能够为我们带来如下好处:
1)服务的独立部署。
每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
2)服务的快速启动。
拆分之后服务启动的速度要比拆分之前快很多,因为依赖的库少了,代码量也少了。
3)更加适合敏捷开发。
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。
4)职责专一,由专门的团队负责专门的服务。
业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。
5)服务可以动态按需扩容。
当某个服务的访问量较大时,我们只需要将这个服务扩容即可。
6)代码的复用。
每个服务都提供 REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。

容器化
容器技术是云原生的核心技术,容器是一种相对于虚拟机来说更加轻量的虚拟化技术。能为我们提供一种可移植、可重用的方式来打包、分发和运行程序。

容器的基本思想就是将需要执行的所有软件打包到一个可执行程序包。例如,将一个 Java 虚拟机、 Tomcat 服务器以及应用程序本身打包进一个容器镜像。用户可以在基础设施环境中使用这个容器镜像启动容器并运行应用程序。

而Docker是目前应用最为广泛的容器引擎,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,Docker和K8s都采用Go编写,(K8s全称Kubernetes,由首字母K,结尾字母s以及中间的8个字母组成,所以简称为K8s)。

容器技术好处如下。

应用程序的创建和部署过程更加敏捷:与虚拟机镜像相比,使用应用程序的容器镜像更简便和高效。
可持续开发、集成和部署:借助容器镜像的不可变性,可以快速更新或回滚容器镜像版本,进行可靠且频繁的容器镜像构建和部署。
提供环境一致性:标准化的容器镜像可以保证开发、测试和生产环境的一致性,不必为不同环境的细微差别而苦恼。
提供应用程序的可移植性:标准化的容器镜像可以保证应用程序运行于 Ubuntu 、 CentOS 等各种操作系统或云环境下。
为应用程序的松耦合架构提供基础设置:应用程序可以被分解成更小的独立组件,可以很方便地进行组合和分发。
资源利用率更高。
实现了资源隔离:容器应用程序与主机之间的隔离、容器应用程序之间的隔离可以为运行应用程序提供一定的安全保证。
容器大大简化了云原生应用程序的分发和部署,可以说容器是云原生应用发展的基石。

devops
DevOps ( Development & Operations ,开发和运维)是软件开发人员和 IT 运维人员之间的合作过程,是一种工作环境、文化和实践的集合,目标是高效地自动执行软件交付和基础架构更改流程。开发和运维人员通过持续不断的沟通和协作,可以以一种标准化和自动化的方式快速、频繁且可靠地交付应用。

云原生应用通常包含多个子功能组件,devops可以大大简化云原生应用从开发到交付的过程。实现了真正的价值交付。

持续交付
持续交付就是不误时开发,不停机更新,是一种软件开发方法,它利用自动化来加快新代码的发布。在持续交付流程中,开发人员对应用所做的更改可通过自动化被推送至代码存储库或容器镜像仓库。

结语
附上一张云原生图谱

 


————————————————
版权声明:本文为CSDN博主「馆主阿牛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_57421630/article/details/123137575

更多推荐