系统架构设计师【第14章】: 云原生架构设计理论与实践 (核心总结)

文章目录

    • 14.1 云原生架构产生背景
    • 14.2 云原生架构内涵
      • 14.2.1 云原生架构定义
      • 14.2.2 云原生架构原则
      • 14.2.3 主要架构模式
      • 14.2.4 典型的云原生架构反模式
    • 14.3 云原生架构相关技术
      • 14.3.1 容器技术
      • 14.3.2 云原生微服务
      • 14.3.3 无服务器技术
      • 14.3.4 服务网格
    • 14.4 云原生架构案例分析
      • 14.4.1 某旅行公司云原生改造
      • 14.4.2 云原生技术助力某汽车公司数字化转型实践
      • 14.4.3 某快递公司核心业务系统云原生改造
      • 14.4.4 某电商业务云原生改造
      • 14.4.5 某体育用品公司基于云原生架构的业务中台构建

14.1 云原生架构产生背景

云原生(Cloud Native)是近几年云计算领域炙手可热的话题,云原生技术已成为驱动业务增 长的重要引擎。同时,作为新型基础设施的重要支撑技术,云原生也逐渐在人工智能、大数据、边 缘计算、5G 等新兴领域崭露头角。

14.2 云原生架构内涵

14.2.1 云原生架构定义

云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化地剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。

技术部分依赖于传统云计算的3层概念,即 基础设施即服务 (IaaS)、 平台即服务 (PaaS) 和软件即服务 (SaaS)

云原生的代码通常包括三部分: 业务代码、三方软件、处理非功能特性的代码

基于云原生架构的应用特点包括:

  • (1)代码结构发生巨大变化: 不再需要掌握文件及其分布式处理技术,不再需要掌握各种复杂的网络技术,简化让业务开发变得更敏捷、更快速。
  • (2)非功能性特性大量委托给云原生架构来解决: 比如高可用能力、容灾能力、安全特性、可运维性、易用性、可测试性、灰度发布能力等。
  • (3)高度自动化的软件交付: 基于云原生的自动化软件交付可以把应用自动部署到成千上万的节点上。

14.2.2 云原生架构原则

云原生具有以下原则:

  • (1)服务化原则: 通过服务化架构把不同生命周期的模块分离出来,分别进行业务迭代。
  • (2)弹性原则: 弹性是指系统的部署规模可以随着业务量的变化而自动伸缩。
  • (3)可观测原则: 通过日志、链路跟踪和度量等手段,使得多次服务调用的耗时、返回值和参数都清晰可见。
  • (4)韧性原则: 软件所依赖的软硬件组件出现各种异常时,软件表现出来的抵御能力。
  • (5)所有过程自动化原则: 让自动化工具理解交付目标和环境差异,实现整个软件交付和运维的自动化。
  • (6)零信任原则: 不应该信任网络内部和外部的任何人/设备/系统,需要基于认证和授权重构访问控制的信任基础。
  • (7)架构持续演进原则: 架构具备持续演进能力。

14.2.3 主要架构模式

云原生涉及的主要架构模式有:

(1)服务化架构模式:
要求以应用模块为颗粒度划分一个应用软件,以接口契约(例如 IDL)定义彼此业务关系,以标准协议(HTTP、gRPC 等)确保彼此的互联互通,结合领域模型驱动(Domain Driven Design,DDD)、测试动开发(Test Driven Design,TDD)、容器化部署提升每个接口的代码 质量和迭代速度。

(2)Mesh 化架构模式:
Mesh 化架构是把中间件框架(如 RPC、缓存、异步消息等)从业务 进程中分离,让中间件 SDK 与业务代码进一步解耦,从而使得中间件升级对业务进程没有影响, 甚至迁移到另外一个平台的中间件也对业务透明。

(3)Serverless 模式:
业务流量到来/业务事件发生时,云会启动或调度一个已启动的业务进 程进行处理,处理完成后云自动会关闭/调度业务进程,等待下一次触发。开发者不用关心应用运行地点、操作系统、网络配置、CPU 性能等,将应用的整个运行都委托给云。Serverless 模式适合事件驱动的数据计算任务、计算时间短的请求/响应应用、没有复杂相互调用的长周期任务。

(4)存储计算分离模式:
分布式环境中的 CAP 困难主要是针对有状态应用,由于一致性 (Consistency,C),可用性(Availability,A),分区容错性(Partition Tolerance,P)三者无法同时满足,最多满足其中两个。所以无状态应用不存在一致性这个维度,可以获得很好的可用性和分区容错性,因而获得更好的弹性。

(5)分布式事务模式
由于业务需要访问多个微服务,所以会带来分布式事务问题,否则数 据就会出现不一致。因此架构师需要根据不同的场景选择合适的分布式事务模式,常用的有:

  • XA模式(传统采用XA模式): 由于XA规范是实现分布式事务处理的标准,通常采用两 阶段提交(2 Prepare Commit,2PC)的方法,具有很强的一致性,但是由于需要两次网络 交互,所以性能差。
  • 基于消息的最终一致性(BASE): 在可用性和一致性相冲突的情况下,为了权衡二者, BASE 提出只要满足基本可用(BA)和最终一致性(E),接受数据的软状态或未确定状 态(S),来优先实现性能,所以这类系统通常具备很高的性能。但正是由于应用的特点, 选择可用性和一致性的妥协方案,导致通用性有限。
  • TCC模式: 采用Try-Confirm-Cancel二阶段模式,事务隔离性可控,高效,但需要应用代码将业务模型拆成二阶段,所以对业务侵入性强,设计开发维护等成本很高。
  • SAGA模式: 每个正向事务都对应一个补偿事务,若正向事务执行失败,则会执行补偿事务进行回滚。所以开发维护成本高。
  • 开源项目SEATA的AT模式: 它将TCC模式中的二阶段委托给底层代码框架,并且取消了行锁,所以非常高性能且无代码开发工作量,且可以自动执行回滚操作,但存在一些使用场景限制。

(6)可观测架构:
可观测架构包括 Logging、Tracing、Metrics,其中 Logging 提供多个级别跟踪,例如 INFO/ DEBUG/WARNING/ERROR;Tracing 收集一个请求从前端到后端的访问日志聚 合,形成完整调用链路跟踪;Metrics 则提供对系统量化的多维度度量,包括并发度、耗时、可用 时长、容量等。

(7)事件驱动架构:
事件驱动架构(Event Driven Architecture,EDA) 是一种应用/组件间的 集成架构模式。适用于增强服务韧性、数据变化通知、构建开放式接口、事件流处理、命令查询的责任分离(Command Query Responsibility Segregation,CQRS)把对服务状态有影响的命令用事件来发起,而对服务状态没有影响的查询才使用同步调用的 API 接口等。

14.2.4 典型的云原生架构反模式

架构设计有时候需要根据不同的业务场景选择不同的方式,常见的云原生反模式有:

  • (1)庞大的单体应用: 缺乏依赖隔离,代码耦合,责任和模块边界不清晰,模块间接口缺乏治理,变更影响扩散,不同模块间的开发进度和发布时间要求难以协调,一个子模块不稳定导致整 个应用都变慢,扩容时只能整体扩容而不能对达到瓶颈的模块单独扩容等。

  • (2)单体应用“硬拆”为微服务: 强行把耦合度高、代码量少的模块进行服务化拆分;拆分后服务的数据是紧密耦合的;拆分后成为分布式调用,严重影响性能。

  • (3)缺乏自动化能力的微服务: 人均负责模块数上升,人均工作量增大,也增加了软件开发 成本。

14.3 云原生架构相关技术

14.3.1 容器技术

容器作为标准化软件基础单元,它将应用及其所有依赖项打包发布,由于依赖项齐备,应用不再受环境限制,在不同计算环境间快速、可靠地运行。传统、虚拟化、容器部署模式的比较如图:
在这里插入图片描述

容器编排技术包括 资源调度、应用部署与管理、自动修复、服务发现与负载均衡、弹性伸缩、 声明式 API、可扩展性架构、可移植性

14.3.2 云原生微服务

微服务模式将后端单体应用拆分为松耦合的多个子应用,每个子应用负责一组子功能。这些 子应用称为“微服务”,多个“微服务”共同形成了一个物理独立但逻辑完整的分布式微服务体 系。这些微服务相对独立,通过解耦研发、测试与部署流程,提高整体迭代效率。微服务设计约束如下:

  • (1) 微服务个体约束: 微服务应用的功能在业务领域划分上应是相互独立的。
  • (2) 微服务与微服务之间的横向关系: 在合理划分好微服务间的边界后,从可发现性和可交互性处理微服务间的横向关系。可发现性是指当服务 A 发布和扩/缩容的时候,依赖服务 A 的服务B 在不重新发布的前提下,能够自动感知到服务 A 的变化。可交互性是指服务 A 采用什么样的方式可以调用服务 B。
  • (3) 微服务与数据层之间的纵向约束: 提倡数据存储隔离(Data Storage Segregation,DSS) 原则,对于数据的访问都必须通过相对应的微服务提供的 API 来访问。
  • (4) 全局视角下的微服务分布式约束: 高效运维整个系统,从技术上实现全自动化的 CI/CD 流水线满足对开发效率的诉求,并在这个基础上支持蓝绿、金丝雀等不同发布策略,以满足对业务发布稳定性的诉求。

14.3.3 无服务器技术

无服务器技术的特点:

  • (1)全托管的计算服务— 客户只需要编写代码构建应用,无须关注同质化的、负担繁重的基于服务器等基础设施的开发、运维、安全、高可用等工作。
  • (2)通用性— 结合云 BaaS(后端云服务)API 的能力,能够支撑云上所有重要类型的应用。
  • (3)自动弹性伸缩— 让用户无须为资源使用提前进行容量规划。
  • (4)按量计费— 让企业的使用成本有效降低,无须为闲置资源付费。

无服务器技术的关注点是: 计算资源弹性调度(容错、资源利用率、性能、数据驱动)、负载均衡和流控、安全性

14.3.4 服务网格

服务网格(Service Mesh)旨在将那些微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦。

服务网格的典型架构如图。服务 A 调用服务 B 的 所有请求,都被其下的服务代理截获,代理服务 A 完成到服务 B 的服务发现、熔断、限流等策略, 而这些策略的总控是在控制平面(Control Plane)上配置。
在这里插入图片描述

服务网格的主要技术: Istio、Linkerd、Consul

14.4 云原生架构案例分析

14.4.1 某旅行公司云原生改造

某旅行公司云原生平台架构图如图:
在这里插入图片描述

14.4.2 云原生技术助力某汽车公司数字化转型实践

某汽车公司深度融合微服务治理体系,实现架构的革新和能力的沉淀,逐步形成支撑数字化应用的业务中台(其云平台架构如图。
在这里插入图片描述
通过领域设计、系统设计等关键步骤,对原来庞大的某云体系 应用进行微服务拆分,形成能量、社群、用户、车辆、订单等多共享业务服务,同步制定了设计与 开发规范、实施路径和配套设施,形成一整套基于微服务的分布式应用架构规划、设计方法论。

14.4.3 某快递公司核心业务系统云原生改造

综合考虑申通实际业务需求与技术特征,最终选择了“阿里云“阿里云 ACK + 神龙+云数据库”的 云原生解决方案,从而实现核心应用迁移上阿里云。图14-7展示了最终的上云架构。
在这里插入图片描述

14.4.4 某电商业务云原生改造

某与阿里云一起针对所面临问题以及未来业务规划进行了深度沟通与研讨。通过阿里云原生应用稳定性解决方案以解决业务问题。引入阿里云容器服务 ACK、Spring Cloud Alibaba、 PTS、AHAS、 链路追踪等配套产品,对应用进行容器化改造部署,优化配套的测试、容量评估、 扩缩容等研发环节,提升产研效率。某最终的核心应用架构方案如下图。
在这里插入图片描述

14.4.5 某体育用品公司基于云原生架构的业务中台构建

基于云原生中间件的技术架构示意图如下:
在这里插入图片描述
架构的关键点:

  • (1)应用侧: 新技术架构全面承载面向不同业务部门的相关应用,包括门店POS、 电商 OMS、 分销商管理供销存DRP、 会员客户管理CRM。此外,在全渠道管理方面也会有一些 智能分析应用,比如库存平衡,同时可以通过全渠道运营平台来简化全渠道的一些配置管理。 所有涉及企业通用业务能力比如商品、订单等,可以直接调用共享中心的能力,让应用“更 轻薄”。
  • (2)共享中心: 全渠道管理涉及参与商品品类、订单寻源、共享库存、结算规则等业务场 景,也涉及与全渠道相关的会员信息与营销活动等。这些通用业务能力全部沉淀到共享中心, 向不同业务部门输出实时、在线、统一、复用的能力。直接将某体育用品公司所有订单、商品、 会员等信息融合、沉淀到一起,从根本上消除数据孤岛,
  • (3)技术层: 为了满足弹性、高可用、高性能等需求,通过Kubernetes、EDAS、MQ、 ARMS、PTS等云原生中间件产品,目前某体育用品公司核心交易链路并发可支撑10w/tps且支 持无线扩容提升并发能力。采用阿里历经多年“双11”考验的技术平台,稳定性和效率都得到 了高规格保障,让开发人员能够更加专注在业务逻辑实现,再无后顾之忧。
  • (4)基础设施: 底层的计算、存储、网络等laaS层资源。
  • (5)后台系统: 客户内部的后台系统,比如SAP、 生产系统、 HR/OA等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/673870.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Arthas使用教程——JVM常用命令

JVM相关命令 dashboard——当前系统的实时数据面板 显示当前 tomcat 的实时信息。 使用方式:dashboard 数据说明 ID: Java 级别的线程 ID,注意这个 ID 不能跟 jstack 中的 nativeID 一一对应。 NAME: 线程名 GROUP: 线程组名 PRIORITY: 线程优先级…

网站入门:Flask用法讲解

Flask是一个使用Python编写的轻量级Web服务框架,旨在帮助开发人员快速构建和部署Web应用程序。下面将对Flask进行更为详细的解释说明,并展示其使用示例与注意事项: 1.解释说明 定义及特点: Flask以其简洁和灵活著称,允许开发者以…

一个弹出的虚假安全警告去除

虚假的安全警告 poratus.azurewebsites.net Pornographic spyware detected! Remove viruses with Avira Antivirus 通过 Microsoft Edge GPT-4 (OpenAI) 这个提示可能是一个虚假的安全警告,被称为“恐吓软件”(scareware),旨在…

直流输电系统氧化锌ZnO电阻设计方案

氧化锌限压器是超高压直流输电系统的主要过电压保护装置。现代直流输电系统的换流站都采用品闸元件作为换流阀,高压晶闸阀的绝缘是非自恢复的,对过电压一分敏感,耐压特性与波头关系很小,只要电压上升到某一定值时,将立即发生击穿,造成损坏。因此,往往将ZnO限压器直接跨接在桥阀…

Python量化交易学习——Part4:基于基本面的单因子选股策略

技术分析与基本面分析是股票价格分析最基础也是最经典的两个部分。技术分析是针对交易曲线及成交量等指标进行分析,基本面分析是基于公司的基本素质进行分析。 一般来说选股要先选行业,在选个股,之后根据技术分析选择买卖节点,因此针对行业及个股的基本面分析是选股的基础。…

【旧文更新】【优秀课设】基于FPGA的Verilog HDL自动售货机

【旧文更新】基于FPGA的Verilog HDL自动售货机 文章目录 关于旧文新发FPGACortex-M架构SysTick系统定时器阻塞和非阻塞延时 附录:压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换函…

HTTPS 为什么比 HTTP 更安全?

HTTPS 为什么比 HTTP 更安全? 在当今互联网环境中,安全性是至关重要的。无论是浏览网站还是进行在线交易,确保数据传输的安全性都是用户和企业的共同目标。HTTP 和 HTTPS 是两种用于传输网页数据的协议,但它们之间的安全性存在显…

常见算法(基本查找、二分查找、分块查找冒泡、选择、插入、快速排序和递归算法)

一、常见算法-01-基本、二分、插值和斐波那契查找 1、基本查找/顺序查找 需求1:定义一个方法利用基本查找,查询某个元素是否存在 数据如下:{131,127,147,81,103,23,7&am…

k8s学习--Secret详细解释与应用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Secret什么是Secret?Secret四种类型及其特点Secret应用案例(1)将明文密码进行base64编码(2)编写创建secret的YAML文…

如何设置让背景颜色不包括 padding 部分,顺带全面学习 background-clip 属性(可以实现文字渐变)

先解决需求 实现背景颜色不包括 padding 部分,直接给容器添加 css 属性:background-clip:content-box; 示例代码: .content-box-example {background-color: lightblue;padding: 20px;border: 1px solid black;background-clip: content-bo…

vue项目出现多次ElMessage弹框

问题: 解决方法: let message null if (message null) { message ElMessage.error(“登录过期,请重新登录”); } 最终效果:只出现一个弹框

AI大模型在穿戴设备健康中的心率深度融合与案例分析

文章目录 1. 架构设计2. 应用场景3. 实现步骤3.1 步骤1:数据预处理3.2 步骤2:边缘计算初步分析3.3 步骤3:数据上传到云端3.4 步骤4:云端复杂分析3.5 步骤5:深度学习模型训练与部署 4. 云端API设计4.1 安装Flask4.2 API…

centos7.8安装Mysql8.4

在集群中我们选择将Mysql安装在slave01节点上。 1.在官网下载mysql安装包MySQL :: Download MySQL Yum Repository 下载后上传到slave01节点的/opt/software目录下。 2.切换到root用户下(切换到root用户操作) 3.查看和删除安装的MySQL软件包和依赖包 r…

logback删除日志文件和文件夹

​​​​​一,事由和源码 logback版本1.2.11 网上找了很多都是无法删除文件夹的,原先使用的TimeBasedRollingPolicy无法删除日志的文件夹,有很多空的日期文件夹,于是查看TimeBasedRollingPolicy源码发现有校验不删除文件夹&#x…

k8s练习--StorageClass详细解释与应用

文章目录 前言StorageClass是什么 一、实验目的配置过程 二、实验环境实验步骤一、配置网络存储NFS:1.主机基础配置2.配置 NFS: 二、开启rbac权限:三、创建nfs-deployment.yaml四、创建storageclass资源五、验证:1.创建PVC验证2.创建一个pod验…

Pycharm SSH远程连接时出现报错,测试 SFTP 连接,连接到 ‘connect.westb.seetacloud.com‘ 失败

问题由来 很离谱!今天本来打算租借AutoDL的显卡完成一项深度学习的任务,很离谱的是同步文件夹的时候报了标题说的错。 就很莫名奇妙,一天都在网上找解决办法,结果都不对头。 其他报错 最后摸索着,在使用pycharm远程登…

基于django | 创建数据库,实现增、删、查的功能

1、在cmd中,输入指令进入mysql终端: mysql -u 用户名 -p 2、输入mysql的密码 3、输入指令,显示出所有的数据库 show databases; 4、输入指令创建表: create table 表名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 5、use …

Pr 2024下载安装,Adobe Premiere专业视频编辑软件安装包获取!

Premiere Pro,简称PR,无论是想要剪辑家庭录像,还是制作专业的影视作品,Premiere Pro都能为您提供强大的支持。 Premiere Pro以其卓越的编辑功能和强大的性能,助力用户在视频创作的道路上不断突破自我。 它具备丰富的视…

【python科学文献计量】关于中国知网检索策略的验证,以事故伤害严重程度检索为例

关于中国知网检索策略的验证,以事故伤害严重程度检索为例 1 背景2 文献下载3 数据处理1 背景 由于要进行相关研究内容的综述,需要了解当前我国对于事故伤害严重程度的研究现状,采用国内较为知名的检索网站(中国知网)进行文献数据集检索 由于最近知网出bug,检索的结果在…

521源码-源码下载-WordPress报错:Allowed memory size of 134217728 bytes exhausted错误解决方法

在wordpress中使用站内搜索或者打开一个页面时提示错误: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) 致命错误:允许耗尽内存大小为134217728字节(试图分配20480字节) 分析:经过检查发现&#x…