云原生的架构的目标是解决特定的业务场景问题,随着云原生架构技术不断的进步,云原生的落地形式与能力边界也在不断演进中,为了更好让大家理解云原生,我们首先了解云原生的设计原则有哪些:

 

1.去中心化原则

去中心化是分布式系统设计的首要原则,目的是为了保证良好的线性扩展能力,避免单点故障,对于系统的服务能力,随着资源加入,微服务的性能和容量能够呈线性扩展。在微服务场景下,每个服务可以独立采用自己的技术方案或技术栈,每个微服务应用独立部署,服务之间进程隔离,每个服务都有独立的数据库,一个服务实例的失效不会导致大规模的故障。这也是微服务架构和SOA非常重要的区别之一。SOA一般有一个中心化的企业服务总线负责所有服务的注册发现以及调用路由; 微服务架构虽然也有一个服务注册中心,但服务注册中心只负责应用启动或者状态变更时做服务推送,真正在运行过程中微服务之间的相互调用都是点对点直接调用,即运行时是去中心化的。

 

2.松耦合原则

松耦合原则包含:实现的松耦合,是基本的松耦合,可以自由切换到其他服务;时间的松耦合典型的是异步消息队列系统;位置的松耦合可以通过注册中心查找服务来访问;版本的松耦合不依赖任何一个版本工作,要求在升级是保持兼容性。

 

3.面向失败设计原则

面向失败设计(design for failure)是为了保证系统的稳定性和高可用性,所有外部的信息输入、硬件基础设施服务以及系统间依赖的调用都可能发生异常,因此在设计服务时,应充分考虑异常情况,从使用者的角度出发,能够容忍故障的发生,最小化故障的影响范围。

应用系统的每一个层面都要考虑在系统架构设计中,任何一个层面都可能出现故障,所以应用系统架构设计上消除单一故障点,从而实现高可用性(HA)的系统架构。

 

4.无状态化原则

无状态是云原生应用服务设计的要求,业务流量在高峰期或者低峰期都具有自主扩展性,自动弹性扩容、缩容,满足业务需求。无状态指的是服务在处理请求时,不依赖除请求本身以外的其他内容,也不会有除响应请求之外的额外操作。添加负载均衡帮助服务节点进行横向扩展。实现无状态的过程,有以下两种方式:

(1)状态分离∶服务端所有的状态信息统一保存在外部独立的分布式存储中(如缓存、消息队列、数据库)。

(2)请求附带全部状态信息∶将状态信息前置,丰富请求的入参,将需要处理的数据尽可能都通过上游的客户端放到入参中传过来。

 

5.不变性原则

容器镜像技术实现了可编程的运行环境,实现了应用与运行环境的解耦,作为一种服务(laaS),云原生基础设施提供可编程式的需求描述,并实现记录版本变更,保证环境的一致性。根据软件生命周期管理开发人员可以根据情况进行构建不同的基础设置,在基础设置部分的任何一个服务和组件的安装都是自动化的,不需要人工进行安装。资源的使用根据业务需求随时增减,通过API方式提供弹性、按需的计算、存储能力。

 

6.自动化驱动原则

因业务需求变动频繁,可以通过快速迭代的方式,保证产品随时发布上线。持续集成、持续部署、持续交付是自动化驱动的重要原则,以保证需求、开发、迭代和快递的部署到生产环境中,随着应用服务的增多,运维工作增加,成本增加,这就要求我们在进行服务划分的时候,优先构自动化的环境和工具,简化开发、测试、部署、运维的流程,使用自动化工具完成以上步骤。

梯度自动化运维包含作业编排、脚本仓库、文件仓库、补丁仓库、执行记录、定时任务、SQL执行、远程终端等功能,梯度运维管理平台的自动化运维层,管理运维代理服务和执行具体任务分发动作。通过远程 SSH、RDP等方式访问服务器设备执行脚本执行、文件分发、文件采集、补丁分发、SQL执行、自动化配置、巡检及安全基线管理等操作。可通过图形化流程对运维任务进行灵活编排和定时执行。运维运维自动化最直接的作用是节约成本,特别是节约人力成本,不断提高运维效率,间接的成本受益是把很多运维经验固化成平台的经验,从而减少了整个交付链上的文档化内容的输出。