云原生的核心概念有哪些
云原生的核心概念有:1.微服务;2.容器云;3.DevOps;4.服务网格;5.无服务器架构;6.声明式API;7.不可变基础设施。微服务是一种云原生架构方法,也被称为“微服务架构”,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
1.微服务
微服务是一种用于构建应用的架构方案,它有两个核心:一是大的单体要拆小,二是拆小的微服务之间相互协同。微服务拆分是一个纵向的拆分,需要做到枞底层的IT设施,到数据库,到应用中间件到软件程序部署包,都能够做到完全独立独立,可以从单独从需求、设计、开发、打包不熟完全独立,实现各微服务之间彻底的松耦合。同时各个微服务之间又能够通过轻量的HTTP REST接口进行交互和系统。
2.容器云
容器云有两个核心,一个是Docker容器,一个是Kurernetes的容器资源调度和编排。单独来看,Docker是一个IaaS资源层的组件,是基于虚拟机之上的更轻量化的资源隔离单元,虚拟机是独享一个操作系统,容器是架在操作系统之上的,多个容器可以共享一个操作系统,容器本身的体积会比虚拟机小很多。容器本身的创建销毁和调度的速度比虚拟机更快。
3.DevOps
Devops的核心可以理解为持续集成和持续交付。需要将软件生命周期过程中从需求开始到设计程序的开发,编译构建,打包部署,从测试环境到生产环境整个过程能够实现全部的自动化,这是Devops核心之一。同时基于Devops本身的发展,又进一步和敏捷研发和自动化测试相关的一些优异实践做了协同和集成,这是Devops另外一个核心内容。
4.服务网格
服务网格指的是用于微服务应用的可配置基础架构层。在使用服务网格时通常会提供一个sidecar代理实例,主要处理 service 间的通信、监控、以及一些安全相关的考量,每个serivce里面都会有一个sidecar,同样也提供了服务发现、负载均衡、授权等功能。
5.无服务器架构
无服务器架构(ServerLess)是指构建和运行不需要服务器管理的应用程序的概念,即开发人员无需关注底层的基础设施,只需要关注应用程序的业务本身就行,且该服务是可以自动扩展。ServerLess希望达到的理想效果是:开发者无需关注开发框架,开发环境,多层架构等这些内容。任何一个需求的实现核心就是一个个代码片段,通过各个代码片段去实现功能,通过代码片段的组装去实现复杂的业务流程。
6.声明式API
声明式API是一种比命令式API更高级的接口设计方式。简单来说,命令式API提供给用户怎么做的能力,而声明式API给用户提供了做什么的能力。在声明式API中,任何对生产环境,对软件的修改,都不是直接去操作命令,都是先写好yaml文件后纳入到配置管理,集中做管理。这样在生产环境出问题的时候,可以快速的进行追溯和定位,方便进行回滚操作。
7.不可变基础设施
不可变基础设施是指任何一个应用部署到生产环境,形成一个容器实例以后,这个容器实例本生不需要再做任何的变化,是不可变的。如果程序配置发生修改,应基于新配置重新生成实例,将旧实例销毁。
延伸阅读
云原生的好处有哪些
云原生是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以优异姿势运行,充分利用和发挥云平台的弹性+分布式优势。使用云原生化的云服务平台,主要有以下好处:
名列前茅,在微服务化方面,云原生将应用程序代码解耦成独立模块化单元,降低微服务的部属时间与互依性,提高应用的扩展性等。
第二,在容器化包装方面,过去程序开发者可能需要创建多个虚拟机好让不同的应用程序运作,但程序容器化让多个应用程序得以存在同一操作环境中,开发人员将代码、微服务放置在可复制、搬移的容器中,轻松地复制、发布到任意云平台,多个容器间不会互相干扰(沙盒机制),不仅减少管理工作还能更有效地利用硬件资源,实现更快的持续集成、交付与发布。
第三,在动态管理方面,通过集中的编排调度系统进行动态管理和调度,达到高速、低风险、迅速扩展和部署的方式,进行应用或服务的构建、测试、部署。
整体而言,云原生不仅能够显着的降低基础建设与管理成本、提高布署灵活性与可扩充性,而且还有较高的安全性。

