【中项第三版】系统集成项目管理工程师 | 第 4 章 信息系统架构⑤ | 4.8 - 4.9

前言

第4章对应的内容选择题案例分析都会进行考查,这一章节属于技术相关的内容,学习要以教材为准。本章分值预计在4-5分。

目录

4.8 云原生架构

4.8.1 发展概述

4.8.2 架构定义

4.8.3 基本原则

4.8.4 常用架构模式

4.8.5 云原生案例

4.9 本章练习


4.8 云原生架构

“云原生”来自于Cloud Native的直译,Cloud就是指其应用软件和服务是在云端而非传统意义上的数据中心。Native代表应用软件从一开始就是基于云环境,专门为云端特性而设计,可充分利用和发挥云环境的弹性与分布式优势,最大化释放云环境生产力。

4.8.1 发展概述

DevOps出于协调开发和运维的“信息对称”问题而被推出。可以看作是开发、技术运营和质量保障三者的交集,促进他们之间的沟通、协作与整合,从而提高开发周期和效率。

4.8.2 架构定义

根据云原生技术、产品和上云实践,从技术的角度云原生架构是基于云原生技术的一组(架构原则)和(设计模式)的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(例如:弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备(轻量)、(敏捷)、(高度自动化)的特点。由于云原生是面向“云”而设计的应用,因此,技术部分依赖于云计算的3层概念,即(基础设施即服务IaaS)、(平台即服务PaaS)、(软件即服务SaaS)。

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

4.8.3 基本原则

云原生架构设计原则如下:

服务化原则:拆分为微服务架构。进行服务化拆分,包括拆分为微服务架构、小服务(MiniService)架构。

弹性原则:系统的部署规模可以根据业务量的变化而自动伸缩

观测原则:通过日志、链路跟踪和度量等手段,使得一次点击背后的多次服务调用的耗时、返回值和参数都清晰可见。

韧性原则:面对软硬件组件出现异常的抵御能力。核心目标是提升软件的平均无故障时间MTBF。

所有过程自动化原则:自动化交付工具。实现整个软件交付和运维的自动化

零信任原则:默认不信任网络内部和外部的任何人/设备/系统。需要基于认证和授权重构访问控制的信任基础。架构从“网络中心化”走向“身份中心化”,其本质诉求是以身份为中心进行访问控制

架构持续演进原则:业务高速迭代情况下的架构与业务平衡。架构具备持续演进的能力

4.8.4 常用架构模式

常用的架构模式主要有服务化架构、Mesh化架构、Serverless、存储计算分离、分布式事务、可观测、事件驱动等。

1 服务化架构模式

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

服务化架构的典型模式是微服务小服务模式,其中小服务可以看作是一组关系非常密切的服务的组合,这组服务会共享数据。小服务模式通常适用于非常大型的软件系统,避免接口的颗粒度太细而导致过多的调用损耗(特别是服务间调用和数据一致性处理)和治理复杂度

2 Mesh化架构模式

Mesh(网格)化架构是把中间件框架(如RPC、缓存、异步消息等)从业务进程中分离让中间件的软件开发工具包(Software Development Kit, SDK)与业务代码进一步解耦,从而使得中间件升级对业务进程没有影响,甚至迁移到另外一个平台的中间件也对业务透明。分离后在业务进程中只保留很“薄”的Client部分,Client通常很少变化,只负责与Mesh进程通信,原来需要在SDK中处理的流量控制、安全等逻辑由Mesh进程完成

3 Serverless模式

Serverless(无服务器)将“部署”这个动作从运维中“收走”,使开发者不用关心应用运行地点、操作系统、网络配置、CPU性能等。也就是把应用的整个运行都委托给云

Serverless并非适用任何类型的应用:如果应用是有状态的,由于Serverless的调度不会帮助应用做状态同步,因此云在进行调度时可能导致上下文丢失;如果应用是长时间后台运行的密集型计算任务,会无法发挥Serverless的优势;如果应用涉及频繁的外部I/O(包括网络或者存储,以及服务间调用等),也因为繁重的I/0负担、时延大而不适合

Serverless非常适合于:事件驱动的数据计算任务、计算时间短的请求/响应应用、没有复杂相互调用的长周期任务

4 存储计算分离模式

分布式环境中的CAP (一致性: Consistency;可用性: Availability;分区容错性:Partitiontolerance)困难主要是针对有状态应用,因为无状态应用不存在C (一致性)这个维度,因此可以获得很好的A (可用性)和P (分区容错性),因而获得更好的弹性。在云环境中,推荐把各类暂态数据(如session)结构化和非结构化持久数据都采用云服务来保存,从而实现存储计算分离。

5 分布式事务模式

微服务模式提倡每个服务使用私有的数据源,而不是像单体这样共享数据源,但往往大颗粒度的业务需要访问多个微服务,必然带来分布式事务问题,否则数据就会出现不一致。

架构师需要根据不同的场景选择合适的分布式事务模式。

①传统采用XA(扩展体系结构)模式,虽然具备很强的一致性,但是性能差

基于消息的最终一致性通常有很高的性能,但是通用性有限

TCC(Try—Confirm—Cancel,预留—确认—取消)模式完全由应用层来控制事务,事务隔离性可控比较高效但是对业务的侵入性非常强,设计开发维护等成本很高

SAGA模式(补偿模式)(指允许建立一致的分布式应用程序的故障管理模式)与TCC模式的优缺点类似但没有Try这个阶段,而是每个正向事务都对应一个补偿事务,也使开发维护成本高

开源项目SEATA的AT模式非常高性能,无代码开发工作量,且可以自动执行回滚操作,同时也存在一些使用场景限制

6 可观测架构

可观测架构包括Logging、Tracing、Metrics三个方面:

Logging(日志)提供多个级别的详细信息跟踪,由应用开发者主动提供;

Tracing(追踪)提供一个请求从前端到后端的完整调用链路跟踪,对于分布式场景尤其有用;

Metrics(度量)则提供对系统量化的多维度度量。

架构决策者需要选择合适的、支持可观测的开源框架。由于建立可观测性的主要目标是对服务SLO(Service Level Objective,服务级别目标)进行度量,从而优化SLA(Service Level Agreement,服务水平协议),因此架构设计上需要为各个组件定义清晰的SLO,包括并发度、耗时、可用时长、容量等。

7 事件驱动架构

事件驱动架构(Event Driven Architecture,EDA)本质上是一种应用/组件间的集成架构模式。事件驱动架构不仅用于(微)服务解耦,还可应用于下面的场景中:增强服务韧性CQRS(命令查询的责任分离)数据变化通知构建开放式接口事件流处理基于事件触发的响应

4.8.5 云原生案例

4.9 本章练习

 练习题

 练习题

 练习题

 练习题

 练习题

 练习题

 练习题

 练习题

 练习题

至此,本文分享的内容就结束啦!🌺🌺🌺🌺🌺🌺🌺🌺🌺

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DevOps】在云原生时代的角色与重要性探索

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是云原生 2、云原生的核心特性 3、什么是DevOps…

昇思25天学习打卡营第14天|基于MindNLP的文本解码原理

基于MindNLP的文本解码原理 文本解码 文本解码是自然语言处理中的一个关键步骤,特别是在任务如机器翻译、文本摘要、自动回复生成等领域。解码过程涉及将编码器(如语言模型、翻译模型等)的输出转换为可读的文本序列。以下是一些常见的文本解码方法和原理: 1. 自回归解码:…

安装nodejs | npm报错

nodejs安装步骤: 官网:https://nodejs.org/en/ 在官网下载nodejs: 双击下载下来的msi安装包,一直点next,我选的安装目录是默认的: 测试是否安装成功: 输入cmd打开命令提示符,输入node -v可以看到版本,说…

Django项目创建的基本准备工作【4】

【 一 】软件开发模式 官话下面 人话 瀑布开发就是将什东西都定义好了在进行开发对吧 敏捷就是进行模块化一样 分批进行 规定一个时间段完成什么样的功能。 总结来说,瀑布开发强调在项目开始之前进行详细的计划和准备,并按照预定的顺序逐步进行&#x…

E. Beautiful Array(cf954div3)

题意:给定一个数组,可以先对数组进行任意排序,每次操作可以选择一个ai,将它变成aik, 想让这个数组变成一个美丽数组(回文数组),求最少操作次数 分析: 先找出相同的数字…

使用Docker制作python项目镜像

各docker桌面版本集合:如果提示新版本系统不支持,可下载旧版本 我也分享在下面。 链接: https://pan.baidu.com/s/1HvaO2wOIE3pNE0bM7Qm3sA?pwdg7ky 提取码: g7ky –来自百度网盘超级会员v2的分享 来源参考:https://zhuanlan.zhihu.com/p/65…

【Linux】命令执行的判断依据:;,,||

在某些情况下,很多命令我想要一次输入去执行,而不想要分次执行时,该如何是好? 基本上有两个选择, 一个是通过shell脚本脚本去执行,一种则是通过下面的介绍来一次入多个命令。 1.cmd:cmd&#…

【RHCE】基于用户认证和TLS加密的HTTP服务(HTTPS)

目录 一、创建用户账号 二、TLS加密 三、配置http服务子配置文件 四、创建访问http服务的文件夹以及输入重定向到文件 五、配置Linux本地仓库以及Windows下的本地仓库 六、基础操作 七、测试 一、创建用户账号 用户认证 # 创建两个账户 [rootlocalhost ~]# htpasswd -…

前端面试39(关于git)

针对前端开发者的Git面试题可以覆盖Git的基础概念、常用命令、工作流程、团队协作、以及解决冲突等方面。以下是一些具体的Git面试 Git基础知识 什么是Git? Git是一个分布式版本控制系统,用于跟踪计算机文件的更改,并协调多个人共同在一个项…

C++ | Leetcode C++题解之第225题用队列实现栈

题目&#xff1a; 题解&#xff1a; class MyStack { public:queue<int> q;/** Initialize your data structure here. */MyStack() {}/** Push element x onto stack. */void push(int x) {int n q.size();q.push(x);for (int i 0; i < n; i) {q.push(q.front());…

【雷达原理】数字波束形成(DBF)

目录 一、数字波束形成1.1 DBF原理1.2 工程应用实现方式1.2.1 预先存储权矢量1.2.2 利用DFT/FFT实现DBF 二、DBF应用2.1 通道间相干积累2.2 测量目标角度 三、MATLAB代码 一、数字波束形成 数字波束形成&#xff08;Digital Beam Forming&#xff0c;DBF) 技术&#xff0c;是针…

智驭未来:人工智能与目标检测的深度交融

在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;如同一股不可阻挡的浪潮&#xff0c;正以前所未有的速度重塑着我们的世界。在众多AI应用领域中&#xff0c;目标检测以其独特的魅力和广泛的应用前景&#xff0c;成为了连接现实与智能世界的桥梁。本文旨在…

2024最新国际版抖音TikTok安装教程,免root免拔卡安卓+iOS,附全套安装工具!

我是阿星&#xff0c;今天给大家带来是2024年最新TikTok国际版抖音的下载和安装教程&#xff0c;而且还是免root免拔卡的那种&#xff0c;安卓和iOS都能用哦&#xff01;由于某些原因&#xff0c;国内用户并不能使用TikTok。今天阿星就教一下大家怎么安装TikTok。 TikTok在全球…

杜比全景声——空间音频技术

什么是杜比&#xff1f;是否是标清、高清、超清之上的更清晰的格式&#xff1f;杜比全景声 和传统多声道立体声的差别&#xff1f;杜比全景声音频的渲染方式&#xff1f;车载平台上杜比技术的应用&#xff1f; 杜比技术的起源 杜比实验室&#xff08;Dolby Laboratories&…

使用linux的mail命令发送html格式的邮件

1、关闭本机的sendmail服务或者postfix服务 #执行下面的命令&#xff0c;各位大侠都对号入座吧 #sendmial service sendmail stop chkconfig sendmail off #postfix service postfix stop chkconfig postfix off#再狠一点就直接卸载吧.. yum remove sendmail yum remove postf…

neo4j 图数据库:Cypher 查询语言、医学知识图谱

neo4j 图数据库&#xff1a;Cypher 查询语言、医学知识图谱 Cypher 查询语言创建数据查询数据查询并返回所有节点查询并返回所有带有特定标签的节点查询特定属性的节点及其所有关系和关系的另一端节点查询从名为“小明”的节点到名为“小红”的节点的路径 更新数据更新一个节点…

Golang | Leetcode Golang题解之第228题汇总区间

题目&#xff1a; 题解&#xff1a; func summaryRanges(nums []int) (ans []string) {for i, n : 0, len(nums); i < n; {left : ifor i; i < n && nums[i-1]1 nums[i]; i {}s : strconv.Itoa(nums[left])if left < i-1 {s "->" strconv.It…

「媒体邀约」上海请媒体的费用

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 上海无疑是最具活动的城市之一&#xff0c;各种大大小小的论坛、发布会、展览展会应接不暇&#xff0c;那么在上海做活动想邀请媒体进行宣传报道&#xff0c;需要多少费用呢&#xff1a;…

阅读笔记——《Fuzz4All: Universal Fuzzing with Large Language Models》

【参考文献】Xia C S, Paltenghi M, Le Tian J, et al. Fuzz4all: Universal fuzzing with large language models[C]//Proceedings of the IEEE/ACM 46th International Conference on Software Engineering. 2024: 1-13.【注】本文仅为作者个人学习笔记&#xff0c;如有冒犯&…

U-net和U²-Net网络详解

目录 U-Net: Convolutional Networks for Biomedical Image Segmentation摘要U-net网络结构pixel-wise loss weight U-Net: Going Deeper with Nested U-Structure for Salient Object Detection摘要网络结构详解整体结构RSU-n结构RSU-4F结构saliency map fusion module -- 显著…