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

news2025/2/23 6:32:01

前言

第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.coloradmin.cn/o/1916401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

防火墙(ensp USG6000v)---安全策略 + 用户认证综合实验

一. 题目 1) 拓扑 2)要求 1. DMZ区内的服务器,办公区仅能在办公时间内(9:00 -- 18: 00)可以访问,生产区的设备全天可以访问 2.生产区不允许访问互联网,办公区和游客区允许访问互联网 3.办公区设备10.0.2.10不充许…

链表 OJ(一)

移除链表元素 题目连接: https://leetcode.cn/problems/remove-linked-list-elements/description/ 使用双指针法,开始时,一个指针指向头节点,另一个指针指向头节点的下一个结点,然后开始遍历链表删除结点。 这里要注…

【React Hooks原理 - useState】

概述 useState赋予了Function Component状态管理的能力,可以让你在不编写 class 的情况下使用 state 。其本质上就是一类特殊的函数,它们约定以 use 开头。本文从源码出发,一步一步看看useState是如何实现以及工作的。 基础使用 function …

高盛开源的量化金融 Python 库

GS Quant GS Quant是用于量化金融的Python工具包,建立在世界上最强大的风险转移平台之一之上。旨在加速量化交易策略和风险管理解决方案的开发,凭借25年的全球市场经验精心打造。 它由高盛的定量开发人员(定量)创建和维护&#…

Java内存划分详解:从基础到进阶

Java内存划分详解:从基础到进阶 1. 程序计数器(Program Counter Register)2. Java虚拟机栈(Java Virtual Machine Stack)3. 堆(Heap)4. 方法区(Method Area)5. 运行时常量…

网络编程的学习之udp

Udp编程过程 Sento不会阻塞 实现聊天室效果 上线 聊天 下线 服务端需要一个地址,去保留名字和ip地址 交互的时候发结构体 下面这个宏只能在c语言里使用 ser.sin_port htons(50000); 上面是端口号50000以上,两边要一样 这里是不要让udp发的太快&am…

YOLOv10改进 | Conv篇 | CVPR2024最新DynamicConv替换下采样(解决低FLOPs陷阱)

一、本文介绍 本文给大家带来的改进机制是CVPR2024的最新改进机制DynamicConv其是CVPR2024的最新改进机制,这个论文中介绍了一个名为ParameterNet的新型设计原则,它旨在在大规模视觉预训练模型中增加参数数量,同时尽量不增加浮点运算&#x…

imx6ull/linux应用编程学习(17)利用mqtt上传开发板数据,和控制开发板led(基于正点)

1.关于如何创建自己的服务器,可看上篇文章 imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx-CSDN博客 2.实现任务:(正点原子教程源码改) (1)用户可通过手机或电脑远程控制开发板上的…

微软Win11 24H2七月更新补丁KB5040435发布!附下载

系统之家于7月10日发出最新报道,微软为Win11用户发布了24H2版本七月的最新更新补丁KB5040435。用户升级系统后,会发现版本号升至 26100.1150。此次更新针对远程身份验证拨入用户服务(RADIUS)协议与 MD5冲突等问题进行修复。接下来跟随小编看看此次更新的…

利用 AI 解放双手:把“贾维斯”带进现实 | 开源专题 No.64

Significant-Gravitas/AutoGPT Stars: 160k License: MIT AutoGPT 是开源 AI 代理生态系统的核心工具包。 提供构建、测试和委托 AI 代理的工具。AutoGPT 处于 AI 创新前沿,提供文档、贡献指南以及快速开始创建自己的代理。包含强大的组件如 Forge 和 Benchmark&…

Ollama完整教程:本地LLM管理、WebUI对话、Python/Java客户端API应用

老牛同学在前面有关大模型应用的文章中,多次使用了Ollama来管理和部署本地大模型(包括:Qwen2、Llama3、Phi3、Gemma2等),但对Ollama这个非常方便管理本地大模型的软件的介绍却很少。 目前,清华和智谱 AI 联…

视图库对接系列(GA-T 1400)十四、视图库对接系列(本级)新增、修改订阅

说明 之前我们已经对接的设备,设备的话比较简单,是设备主动推送数据到平台的。 相信大家已经会了,那今天开始的话,我们来做对接平台,相对难点点。 但搞懂了核心的订阅流程的话,其实就不难了。 对接平台 订阅接口 订阅接口的话,有几个,添加、查询、更新、删除、取消…

【MOT】《Multiple Object Tracking in Recent Times: A Literature Review》

原文 Bashar M, Islam S, Hussain K K, et al. Multiple object tracking in recent times: A literature review[J]. arXiv preprint arXiv:2209.04796, 2022.https://arxiv.org/pdf/2209.04796 参考文章 多目标跟踪最新综述(基于Transformer/图模型/检测和关联…

RK3568平台(vendor篇)vendor storage分区

一.简介 rockchip vendor storage是一种用于存储SN, MAC, LAN, BT等数据的区域,它具有不会丢失和系统启动各个阶段都可以访问的特性。它使用GPT分区表格式,并在U-boot, kernel和用户空间中提供了相应的驱动文件和接口。 rockchip vendor storage是一种特…

硅纪元AI应用推荐 | 百度橙篇成新宠,能写万字长文

“硅纪元AI应用推荐”栏目,为您精选最新、最实用的人工智能应用,无论您是AI发烧友还是新手,都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能,开启智慧新时代! 百度橙篇,作为百度公司在202…

软航文档控件VUE示例运行及控件替换方法记录

目录 示例运行 步骤一、npm install 步骤二、npm run dev 软航文档控件替换 附 vue小白记录一下软航文档控件VUE示例的运行方法以及示例中控件的替换过程。 示例运行 在已经安装好VUE环境的电脑上,VUE环境部署可以参考另一篇:配置VUE环境过程中 …

3.相机标定原理及代码实现(opencv)

1.相机标定原理 相机参数的确定过程就叫做相机标定。 1.1 四大坐标系及关系 (1)像素坐标系(单位:像素(pixel)) 像素坐标系是指相机拍到的图片的坐标系,以图片的左上角为坐标原点&a…

nvm安装使用 nrm使用

因维护老项目及开发新项目同时进行,需要使用不同版本的node进行运行,所以用nvm进行多个版本的node维护,通过nrm进行镜像源管理切换 简介 Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,用于构建高性能的网络应用程序…

mobx学习笔记

mobx介绍 mobx是一个功能强大,上手容易的状态管理工具。MobX背后的哲学很简单:任何源自应用状态的东西都应该自动地获得。利用getter和setter来收集组件的数据依赖关系,从而在数据发生变化的时候精确知道哪些组件需要重绘。 mobx和redux的区别 mobx更…

javaweb学习day1《HTML篇》--新浪微博(前端页面的创建思路及其HTML、css代码详解)

一、前言 本篇章为javaweb的开端,也是第一篇综合案例,小编也是看着黑马程序员的视频对里面的知识点进行理解,然后自己找一个新浪微博网页看着做的,主要还是因为懒,不想去领黑马程序员的资料了。 小编任务javaweb和ja…