从小白快速入门爆火的“云原生”

文章目录

    • 云原生概念
      • 云原生四要素
      • 微服务
      • 持续交付
      • DevOps
      • 容器

云原生概念

云原生这个词最初来源于谷歌牵头成立的一个基金会——云原生计算基金会(CNCF,业内大厂基本都在里面),根据这个基金会的定义,云原生是一套技术体系和方法论。
要想了解云原生,我们可以把其分解为两部分,“云”“原生”;云则代表应用所处的环境并不是传统的物理服务器,而是在“云”上,“云”可以是公有云,私有云,混合云甚至多云或者托管云;原生则代表应用开发应用的设计之初就考虑到应用所处的环境是在云环境之上,所以需要结合云的特点(分布式,弹性,动态)再进行开发。原生为云而设计,在云上以最佳的状态运行。

云原生四要素

微服务

微服务是云原生重要特征之一,它可以把原来庞然大物的单体软件,分解成多个可以独立存活的小模块,每个模块都可以完成一个功能需求;举个例子,某个软件系统包含财务系统,报表系统,税务系统,人力系统等诸多系统,在云原生上可以把这些模块单独地进行开发维护,但是这些模块又可以互相耦合共同完成一个软件系统
从以上可以发现,微服务的优势:简单,灵活,开放,松耦合。

持续交付

传统的交付模式存在以下几个缺点:
1.业务软件测试需要纯手工去测而并非通过自动化手段,不自动化的部署过程既不可重复也不可靠,会在调试部署错误的过程中浪费很多时间。
2.开发完成之后才向类生产环境部署,开发团队认为“开发完成了”,才第一次把软件部署到类生产环境(比如试运行环境),这就可能导致环境不一致的问题。
3.环境经常需要变化,容易造成部署失败。
4.迭代版本的时候用户感知明显,可能影响用户使用
持续交付可以很好地解决以上问题,它的核心思想就是“将几乎所有事情自动化”,以一套机械化自动化的标准去执行,那么软件发布的风险和压力就会大大降低,因为规则的出错大多是因为规则自身,只需要一个匹配的自动化标准,那么出错率理论上来说是0,并且测试生产环境始终一致,所以持续交付可以在不影响用户使用服务的前提下频繁把新功能发布给用户使用。

DevOps

DevOps=开发(Development)+运维(Operations),是打通开发与运维之间的壁垒,促进开发、运营和质量保障(QA)等部门之间的沟通协作,以便对产品进行小规模、快速迭代式地开发和部署,快速响应客户的需求变化。强调的是开发运维一体化,加强团队间的沟通和快速反馈,达到快速交付产品和提高交付质量的目的。
云原生DevOps就是充分利用云原生基础设施,借助云原⽣技术构建的⼀体化研发赋能平台,从软件的需求,设计规划,代码编写,⾃动化测试到持续交付,实现研发全流程一站式自动化,敏捷化,从而做到比传统DevOps更高的服务质量、更低的开发运维成本,让研发专注于业务的快速迭代。

容器

我们都知道,VM是通过Hypervisor虚拟化技术来模拟cpu等硬件资源,这样就可以模拟出一个Guest OS,软件开发在这种环境中隔离效果是很好的,但是这样的隔离效果需要付出一定代价,比如主机需要消耗资源消耗在虚拟化中,并且系统的安装需要占用大量的存储资源,同时这种方式启动比较慢,影响开发效率;
容器是通过Cgroups的资源管理能力和Namespace的资源隔离能力结合在一起实现进程级别的隔离,本质上容器就是一个视图隔离、资源可限制并且具备独立文件系统的进程集合。
而K8S就是当前最常见的容器编排系统,主要围绕 pods 进行工作。 Pods 是 k8s 生态中最小的调度单位,可以包含一个或多个容器。
K8S全称是Kubernetes,由Google 基于 Borg 开源的容器编排调度系统,是一种基于容器技术的分布式架构领先方案。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等功能,用户不需要再过度的关注资源的管理问题,降低操作的复杂度,提高了大规模容器集群管理的便捷性。

补充下官方的定义:
Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。
k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

你可能感兴趣的:(云计算,云原生,cloud,native,云计算)