【中项第三版】系统集成项目管理工程师 | 第 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 本章练习

 练习题

 练习题

 练习题

 练习题

 练习题

 练习题

 练习题

 练习题

 练习题

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

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

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

相关文章

docker(六)--创建镜像

六、创建镜像 1.创建镜像两种方式 方式1: 更新镜像 docker commit 方式2:构建镜像 docker build 2.更新镜像 1)用法 docker commit -m“描述信息” -a作者 容器id或者容器名 镜像名:tag 2)步骤 ①根据镜像运行容器 ②进入容…

栈和队列题目详解

前言: 在前面我们学习了栈和队列,栈的特性是后进先出,队列的特性是先进先出,当我们了解了这些之后,我们就可以用到栈和队列的特性来简单的做一些题目了。 1. 有效的括号 有效的括号:. - 力扣&#xff08…

YOLOv10改进 | Conv篇 | 利用FasterBlock二次创新C2f提出一种全新的结构(全网独家首发,参数量下降70W)

一、本文介绍 本文给大家带来的改进机制是利用FasterNet的FasterBlock改进特征提取网络,将其用来改进ResNet网络,其旨在提高计算速度而不牺牲准确性,特别是在视觉任务中。它通过一种称为部分卷积(PConv)的新技术来减少…

火柴棒图python绘画

使用Python绘制二项分布的概率质量函数(PMF) 在这篇博客中,我们将探讨如何使用Python中的scipy库和matplotlib库来绘制二项分布的概率质量函数(PMF)。二项分布是统计学中常见的离散概率分布,描述了在固定次…

夏日智启:我的Datawhale AI夏令营探索之旅

前言 最近几年,AI(人工智能)的发展呈现出了前所未有的迅猛势头,其影响力和应用范围不断扩大,深刻地改变着我们的生活、工作和社会结构。尤其是AI大模型技术,国内外可谓是“百模大战”,百舸争流…

ESP32网络开发:1.创建一个基于TCP网络协议的网站

一、TCP协议的介绍 TCP(传输控制协议,Transmission Control Protocol)是互联网协议套件中的一种核心协议,主要用于在网络中的计算机之间可靠地传输数据。TCP协议位于OSI模型(开放系统互联模型)的传输层&…

虚拟机内安装vue-dev-tools

前言 项目开发调试都需要在Citrix在虚拟机环境下,Citrix内连接不到外网,在这边文章,我将介绍自己在Citrix环境内安装 vue-dev-tools的经验 环境 vue 步骤 1. 下载.crx文件 百度网盘里的 .crx文件的 下载链接 2. 加载.crx文件 打开浏览…

软件兼容性测试重要吗?有哪些测试流程和注意事项?

软件兼容性测试是指测试软件在不同硬件、操作系统、网络环境和软件环境下的稳定性和可用性的能力,也就是说,软件在不同的平台上是否能正常运行,是否能与其他软件和系统兼容。 兼容性问题是影响软件用户体验的重要因素之一,如果软…

学习大数据DAY13 PLSQL基础语法2

目录 选择结构 IF语句 简单判断语句 带判断不成立语句 多判断语句 IF语句注意事项: CASE 语句 简单CASE语句 搜索型CASE语句 作业 循环语句 循环结构 简单循环 属性 描述 位置 场景 WHILE循环 属性 FOR循环 数值型for循环 数值型for循环的特性…

【Redis】简单了解Redis中常用的命令与数据结构

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、Redis的特点和适用场景三、Redis的数据类型和使用3.1字符串(String&…

谷粒商城实战笔记-24-分布式组件-SpringCloud Alibaba-Nacos配置中心-命名空间与配置分组

文章目录 一,命名空间1,简介1.1,命名空间的主要功能和特点1.2,使用场景1.3,如何指定命名空间 2,命名空间实战2.1,环境隔离2.2,服务隔离 二,配置集三,配置集ID…

HTML+CSS+JS 实现3D风吹草动效果(B站视频)

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>3D effect&…

线下线上游戏电竞陪伴APP小程序H5同城线下约玩APP开发,语聊约玩平台搭建游戏陪玩APP源码

开发一款线下陪玩约玩APP的实际意义和在生活中的应用场景 1、满足社交需求:现代社会人们的社交圈往往受到时间、地点和其他限制的影响。线下陪玩约玩APP可以提供一个平台&#xff0c;让用户通过约玩的方式结识新朋友、扩大社交圈 2、解决孤独感:有些人由于工作忙碌、居住环境单…

MySQL体系架构解析

1.MySQL体系架构 1.1.MySQL的分支与变种 MySQL变种有好几个,主要有三个久经考验的主流变种:Percona Server,MariaDB和 Drizzle。它们都有活跃的用户社区和一些商业支持,均由独立的服务供应商支持。同时还有几个优秀的开源关系数据库,值得我们了解一下。 1.1.1.Drizzle …

YOLOv10改进 | Conv篇 | 利用YOLO-MS的MSBlock轻量化网络结构(既轻量又长点)

一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块)&#xff0c;我们将其用于C2f中组合出一种新的结构&#xff0c;来替换我们网络中的模块可以达到一种轻量化的作用&#xff0c;我将其…

ENSP软件中DHCP的相关配置以及终端通过域名访问服务器

新建拓扑 配置路由器网关IP 设备配置命令&#xff1a;<Huawei> Huawei部分为设备名 <>代表当下所在的模式&#xff0c;不同模式下具有不同的配置权限<Huawei> 第一级模式&#xff0c;最低级模式 查看所有参数<Huawei>system-view 键入系统视图…

通过 tomcat 让手机访问到电脑写的 html 网页

之前实现的 html 小项目只能在自己的电脑上展示&#xff0c;如果要在其他电脑或者在手机上就看不到网页了 想要在手机上访问自己写的网页&#xff0c;我们可以借助 tomcat 首先我们可以从官网下载 tomcat 官网链接&#xff1a;apache官网 我们拉到最底部&#xff0c;找到 a…

C. Earning on Bets

题目 个人补充&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 #define ll long longconst int maxn 1e6 5, in…

Apache Hadoop之历史服务器日志聚集配置

上篇介绍了Apache Hadoop的分布式集群环境搭建&#xff0c;并测试了MapReduce分布式计算案例。但集群历史做了哪些任务&#xff0c;任务执行日志等信息还需要配置历史服务器和日志聚集才能更好的查看。 配置历史服务器 在Yarn中运行的任务产生的日志数据不能查看&#xff0c;…

Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)

目录 一、QVBoxLayout-垂直布局&#xff1a; 1.1QVBoxLayout介绍&#xff1a; 1.2 属性介绍&#xff1a; 1.3细节理解&#xff1a; 二、QHBoxLayout-水平布局&#xff1a; 三、QGridLayout-网格布局&#xff1a; 3.1QGridLayout介绍&#xff1a; 3.2常用方法&#xff1a…