系统架构设计师-软件架构设计(6)
目录
一、物联网分层架构
二、大数据分层架构
三、基于服务的架构(SOA)
1、SOA的特征
2、服务构件与传统构件的区别
四、Web Service(WEB服务)
1、Web Services 和 SOA的关系
五、REST(表述性状态转移)
六、ESB(企业服务总线)
七、微服务
1、微服务的优点
2、微服务的缺点
3、微服务架构模式方案
4、微服务与SOA的区别
八、云计算
1、云计算优点
2、云计算【按服务类型分类】
3、云计算【按部署方式分类】
4、云计算架构
九、云原生架构
1、云原生架构设计原则
2、云原生架构模式
3、云原生架构反模式
4、微服务设计约束
5、云原生应用
6、云原生开发
十、边缘计算
一、物联网分层架构


1、感知层:负责为物联网采集和获取信息。(解决数据获取问题。传感器、芯片、通信模组)
2、网络层:负责向上层传输感知信息和向下层传输命令。(传递和处理信息。网络、通信标准 / 协议)
3、平台层:负责把感知层收集到的信息通过大数据、云计算等技术进行有效的整合和利用。(操作平台、软件开发、设备管理平台、连接管理平台)
4、应用层:解决信息处理和人机交互问题。(应用服务:例:智慧物流、智慧医疗、食品安全、智慧园区等、智能终端:例:手机App)
二、大数据分层架构

三、基于服务的架构(SOA)
SOA(面向服务架构)是一种应用程序体系结构,在这种体系结构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。


1、SOA的特征
(1)松散耦合(2)粗粒度服务(3)标准化接口
2、服务构件与传统构件的区别
(1)服务构件粗粒度,传统构件细粒度居多。
(2)服务构件的接口是标准的,主要是WSDL(Web服务描述语言,是为描述Web服务发布的XML格式)接口,传统构件常以API形式出现。
(3) 服务构件的实现与语言无关,传统构件绑定某种特定语言。
(4)服务构件可以通过构件容器提供QoS(一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术)的服务,传统构件完全由程序代码直接控制。
四、Web Service(WEB服务)

UDDI:UDDI是一种用于描述、发现、集成Web Service的技术,它是Web Service协议栈的一个重要部分。通过UDDI,企业可以根据自己的需要动态查找并使用Web服务,也可以将自己的Web服务动态地发布到UDDI注册中心,供其他用户使用。
WSDL:WSDL就是WebService接口对应的WSDL文件,该文件通过xml格式说明如何调用,可以看做WebService的接口文档(使用说明书)。
SOAP:简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息
1、Web Services 和 SOA的关系
SOA是一种思想,是一种架构理念,Web Service是一种来实现这理念的技术方法,Web Service是实现SOA的标准。
在SOA中,所有服务之间要松耦合,Web Service之间的通信是通过SOAP协议进行的,SOAP协议是基于XML实现的松耦合的协议。
SOA服务需要对他们自己的服务本身进行描述,WSDL就是用来描述如何访问到SOA的服务。
SOA服务存在于一个目录中,UDDI就是用来描述从哪里得到SOA服务的,只需要完成SOA的注册就可以了。
五、REST(表述性状态转移)
REST(Representational State Transfer,表述性状态转移)是一种通常使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。 
REST的5个原则:
(1)网络上的所有事物都被抽象为资源。
(2)每个资源对应一个唯一的资源标识。
(3)通过通用的连接件接口对资源进行操作。
(4)对资源的各种操作不会改变资源标识。
(5)所有的操作都是无状态的。
六、ESB(企业服务总线)
企业服务总线(EnterpriseServiceBus,ESB)是构建基于面向服务体系结构(SOA)解决方案时所使用基础架构的关键部分,是由中间件技术实现并支持SOA的一组基础架构功能。ESB支持异构环境中的服务、消息,以及基于事件的交互,并且具有适当的服务级别和可管理性。简而言之,ESB提供了连接企业内部及跨企业间新的和现有软件应用程序的功能,以一组丰富的功能启用管理和监控应用程序之间的交互。在SOA分层模型中,ESB用于组件层以及服务层之间,它能够通过多种通信协议连接并集成不同平台上的组件将其映射成服务层的服务。

(1)提供位置透明性的消息路由和寻址服务。
(2)提供服务注册和命名的管理功能。
(3)支持多种的消息传递范型。
(4)支持多种可以广泛使用的传输协议。
(5)支持多种数据格式及其相互转换。
(6)提供日志和监控功能。
七、微服务
【微服务】顾名思义,就是很小的服务,所以它属于面向服务架构的一种。
与面向服务架构的区别类似于 雕版印刷VS活字印刷。

1、微服务的优点
(1)复杂应用解耦:小服务(且专注于做一件事情),化整为零,易于小团队开发。
(2)独立:独立开发,独立测试以及独立部署(简单部署),独立运行(每个服务独立在其独立进程中)。
(3)技术选型灵活:支持异构,如每个服务使用不同数据库。
(4)容错:故障隔离在单个服务中,通过重试、平稳退化等机制实现应用层容错。
(5)松耦合,易扩展:可根据需求独立扩展。
2、微服务的缺点
(1)分布式环境下的数据一致性【更复杂】
(2)测试的复杂性【服务间依赖测试】
(3)运维的复杂性
3、微服务架构模式方案
(1)聚合器微服务(2)链式微服务(3)数据共享微服务 (4)异步消息传递微服务

4、微服务与SOA的区别

八、云计算
云计算是集合了大量计算设备和资源,对用户屏蔽底层差异的分布式处理架构,其用户与提供实际服务的计算资源是相分离的。
1、云计算优点
超大规模、虚拟化、高可靠性、高可伸缩性、按需服务、成本低【前期投入低、综合使用成本也低】。
2、云计算【按服务类型分类】
(1)SaaS【软件即服务】:基于多租户技术实现,直接提供应用程序。
(2)PaaS【平台即服务】:虚拟中间件服务器、运行环境和操作系统。
(3)LaaS【基础设施即服务】:包括服务器、存储和网络等服务。
3、云计算【按部署方式分类】
(1)公有云:面向互联网用户需求,通过开放网络提供云计算服务。
(2)私有云:面向企业内部提供云计算服务。
(3)混合云:兼顾以上两种情况的云计算服务。

4、云计算架构

(1)管理层:提供对所有层次云计算服务的管理功能。
(2)用户访问层:方便用户使用云计算服务所需的各种支撑服务,针对每个层次的云计算服务都需要提供相应的接口。
(3)应用层:提供软件服务,如:财务管理系统、客户关系管理系统、商业智能。
(4)平台层:为用户提供对资源层服务的封装,使用户可以构件自己的应用。
(5)资源层:提供虚拟化的资源,从而隐藏物理资源的复杂性,如:服务器,存储。
九、云原生架构
云原生是基于分布部署和统一运营的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。
【云原生架构与云计算架构的区别】
云计算是on cloud,在云上,云原生是in clound,在云中。

1、云原生架构设计原则
(1)服务化原则:使用微服务。
(2)弹性原则:可根据业务变化自动伸缩。
(3)可观测原则:通过日志、链路跟踪和度量。
(4)韧性原则:面对异常的抵御能力。
(5)所有过程自动化原则:自动化交付工具。
(6)零信任原则:默认不信任网络内部和外部的任何人 / 设备 / 系统。
(7)架构持续演进原则:业务高速迭代情况下的架构与业务平衡。
2、云原生架构模式

(1)服务化架构模式:典型代表【微服务】,服务拆分使维护压力大增。
(2)Mesh化架构模式:把中间件框架(RPC、缓存、异步消息)从业务进程中分离,由Mesh进程完成。
(3)Serverless模式:非常适合于事件驱动的数据计算任务。
(4)存储计算分离模式:各类暂态数据(如session)用云服务保存。
(5)分布式事务模式:解决微服务模式中多数据源事务问题。
(6)可观测架构:包括Logging、Tracing、Metrics三个方面。
(7)事件驱动架构:本质上是一种应用 / 组件间的集成架构模式。
3、云原生架构反模式
(1)庞大的单体应用
【需要多人开发的业务模块,考虑通过服务化进行拆分,并让组织与架构匹配】
(2)单体应用 “ 硬拆 ” 为微服务(服务拆分要适度)
【小规模软件的服务拆分(为拆而拆)、数据依赖(服务间数据依赖)、性能降低】
(3)缺乏自动化能力的微服务
【手动维护大量微服务是不现实的】
4、微服务设计约束
(1)微服务个体约束
【每个微服务都是独立的,修改一个微服务不能影响另一个微服务】
(2)微服务于微服务之间的横向关系
【通过第三方服务注册中心来满足服务的可发现性】
(3)微服务于数据层之间的纵向约束
【数据是微服务的 “ 私产 ” ,访问时需要通过微服务】
(4)全局视角下的微服务分布式约束
【高效运维整个系统】
5、云原生应用

6、云原生开发

十、边缘计算
【边缘计算】是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。
【边缘计算的本质】计算处理职能本地化。


相关文章:
系统架构设计师-软件架构设计(6)
目录 一、物联网分层架构 二、大数据分层架构 三、基于服务的架构(SOA) 1、SOA的特征 2、服务构件与传统构件的区别 四、Web Service(WEB服务) 1、Web Services 和 SOA的关系 五、REST(表述性状态转移) 六、ESB(…...
Knife4j系列--解决不显示文件上传的问题
原文网址:Knife4j系列--解决不显示文件上传的问题_IT利刃出鞘的博客-CSDN博客 简介 本文介绍使用Knife4j时无法上传文件的问题。 问题复现 依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-…...
深入学习Mysql引擎InnoDB、MylSAM
目录 一、什么是MySQL 二、什么是InnoDB 三、什么是MyISAM 四、MySQL不同引擎有什么区别 一、什么是MySQL MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它是由瑞典MySQL AB公司开发并推广,后来被Sun Microsystems收…...
第七章:SpringMVC中
第七章:SpringMVC中 7.1:SpringMVC的视图 SpringMVC中的视图是View接口,视图的作用渲染数据,将模型Model中的数据展示给用户SpringMVC视图的种类很多,默认有转发视图和重定向视图。 当工程引入jstl的依赖&…...
MySQL数据库——DQL操作——基本查询
文章目录 前言事前准备——测试数据整表查询指定列查找别名查询MySQL运算符条件查询模糊查询排序查询聚合查询分组查询分组之后的条件筛选 分页查询将整张表的数据插入到另一张表中 前言 MySQL数据库常见的操作是增删查改,而其中数据的查询是使用最多,也…...
Electron 开发,报handshake failed; returned -1, SSL error code 1,错误
代码说明 在preload.js代码中,暴露参数给渲染线程renderer.js访问, renderer.js 报:ERROR:ssl_client_socket_impl.cc(978)] failed; returned -1, SSL error code 1,错误 问题原因 如题所说,跨进程传递消息,这意味…...
知识区博主转型——兼做知识区和改造区博主!!!!!
想脱单的进来,一起交流如何能脱单!!! 为什么——我太羡慕有对象的人了哭死!!!!!! 你是不是很羡慕别人怎么都有女朋友 别人家的女朋友怎么都那么好ÿ…...
Resnet与Pytorch花图像分类
1、介绍 1.1数据集介绍 flower_data├── train│ └── 1-102(102个文件夹)│ └── XXX.jpg(每个文件夹含若干张图像)├── valid│ └── 1-102(102个文件夹)└── ─── └── XXX.jp…...
【NLP概念源和流】 03-基于计数的嵌入,GloVe(第 3/20 部分)
接续上文 【NLP概念源和流】 02-稠密文档表示(第 2/20 部分)...
【React】关于组件之间的通讯
🌟组件化:把一个项目拆成一个一个的组件,为了便与开发与维护 组件之间互相独立且封闭,一般而言,每个组件只能使用自己的数据(组件状态私有)。 如果组件之间相互传参怎么办? 那么就要…...
item_get-小红薯-商品详情
一、接口参数说明: smallredbook.item_get,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/smallredbook/item_get 名称类型必须描述keyString是调用key(http://o0…...
网络安全进阶学习第十课——MySQL手工注入
文章目录 一、MYSQL数据库常用函数二、MYSQL默认的4个系统数据库以及重点库和表三、判断数据库类型四、联合查询注入1、具体步骤(靶场演示):1)首先判断注入点2)判断是数字型还是字符型3)要判断注入点的列数…...
2.3 网络安全协议
数据参考:CISP官方 目录 OSI七层模型TCP/IP体系架构TCP/IP安全架构 一、OSI七层模型 简介 开放系统互连模型(Open System Interconnection Reference Model,OSI)是国际标准化组织(ISO)于1977年发布的…...
Apache Flink概述
Flink 是构建在数据流之上的一款有状态的流计算框架,通常被人们称为第三代大数据分析方案 第一代大数据处理方案:基于Hadoop的MapReduce 静态批处理 | Storm 实时流计算 ,两套独立的计算引擎,难度大(2014年9月&#x…...
django使用mysql数据库
Django开 发操作数据库比使用pymysql操作更简单,内部提供了ORM框架。 下面是pymysql 和orm操作数据库的示意图,pymysql就是mysql的驱动,代码直接操作pymysql ,需要自己写增删改查的语句 django 就是也可以使用pymysql、mysqlclient作为驱动&a…...
MongoDB文档--基本概念
阿丹: 不断拓展自己的技术栈,不断学习新技术。 基本概念 MongoDB中文手册|官方文档中文版 - MongoDB-CN-Manual mongdb是文档数据库 MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包…...
【TypeScript】TS入门及基础学习(一)
【TypeScript】TS入门及基础学习(一) 【TypeScript】TS入门及基础学习(一)一、前言二、基本概念1.强类型语言和弱类型语言2.动态语言和静态语言 三、TypeScript与JavaScript的区别四、环境搭建及演练准备4.1 安装到本地4.2 在线运…...
Dockerfile构建LNMP镜像(yum方式)
目录 Dockerfile构建LNMP镜像 1、建立工作目录 2、编写Dockerfile文件 3、构建镜像 4、测试容器 5、浏览器访问测试: Dockerfile构建LNMP镜像 1、建立工作目录 [roothuyang1 ~]# mkdir lnmp/ [roothuyang1 ~]# cd lnmp/ 2、编写Dockerfile文件 [roothuyang1 …...
Flink Windows(窗口)详解
Windows(窗口) Windows是流计算的核心。Windows将流分成有限大小的“buckets”,我们可以在其上应用聚合计算(ProcessWindowFunction,ReduceFunction,AggregateFunction或FoldFunction)等。在Fl…...
AssetBundle学习
官方文档:AssetBundle 工作流程 - Unity 手册 (unity3d.com) 之前写的博客:AssetBundle学习_zaizai1007的博客-CSDN博客 使用流程图: 1,指定资源的AssetBundle属性 (xxxa/xxx)这里xxxa会生成目录&…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
