云原生架构-架构师之路(十九)

一、云原生架构内涵

云原生架构 基于云原生技术,指将 云应用中的非业务代码部分进行最大化的剥离,让 云设施接管项目中大量非功能特性(如弹性、韧性、安全、可观测性和灰度等)。把质量属性 和 业务功能完全分离,我们自己的公司只关注业务代码,至于质量属性交给云。

云原生包含:业务代码、三方软件 和 处理非功能特性的代码。把这些交给IaaS和PaaS完成。

二、主要架构模式

1、服务化架构模式:典型的 微服务和小服务。把 代码模块关系和部署关系进行分离,每个接口可以部署不同的数量实例。

2、服务网格Mesh化架构模式:把 中间件框架(如缓存、异步mq)从业务从分离。

3、Serverless模式:将“部署”这个动作从运维手里拿走。我们不需要关注运行地点,部署地点等。

4、存储计算分离模式:在云环境中,把各类暂态数据(如:session)给云服务保存。

5、分布式事务模式:访问多个微服务,必然带来分布式事务问题。

6、可观测架构:如Logging、Tracing等。

7、事件驱动架构:应用/组件集成的架构,适合数据变化通知等场景。

三、主要技术

1、容器技术:容器不受环境限制,可靠运行。发挥云弹性优势。

2、Kubernetes:提供分布式应用管理核心能力,包括:部署与管理,资源调度,自动修复,负载均衡可扩展等。

3、云原生微服务:单体拆分为多个子应用。

微服务约束:

1)微服务 个体约束:功能独立,低耦合,单一职责。

2)微服务与微服务 横向关系:服务与服务之间需要服务注册中心。

3)微服务与数据层 纵向约束: 数据是微服务的资产,只能通过微服务提供的api访问,有隔离原则。

4)微服务分布式约束:故障发现时效性和精确开发维护人员核心述求。

无服务器技术(Server less)因为屏蔽了服务器的各种运维难度。有以下特点:

1、全托管的计算服务。

2、通用性。

3、自动弹性伸缩。

4、按量计费。

函数计算(FasS)最具有代表性的产品。把应用逻辑拆分为多个函数,每个函数通过事件方式触发。

无服务器主要关注:计算资源弹性调度、负载均衡和流控、安全性。

服务网格ServiceMesh是分布式应用在微服务软件架构之上发展起来的新技术(中间件技术),实现应用于平台基础设施的解耦。意味着开发者无需关注微服务相关问题而聚焦于业务逻辑本身。

四、案例分析

旅行公司云原生改造项目

面临问题:公司主体两个公司合并,技术体系不同,需要合二为一。节假日高并发流量。

改造第一阶段:

将多套旧系统合并,收拢到一套以云原生应用为核心的私有化云平台上,通过IaaS和PaaS等实现虚拟化封装、切割。

随着服务器集群的扩大,这时候机器频繁出现故障。

改造第二阶段:

基于共有云、私有云和离线专属云集群等新型计算环境,构建成具有弹性的云原生技术。

改造第三阶段:

通过基础组件、服务的云原生改造、服务依赖梳理和定义,应用不需要考虑底层资源、机房、运行等因素。

最底层则是 硬件基础设置层。

往上则是操作系统这一层:linux和windows。(现在还可以基础安卓,IOS)

操作系统层网上则是IaaS基础层:计算(CPI/GPU),容器网络,存储,运行时。

之后则是云原生技术,通过api接口调用云原生平台。