【系统架构设计】软件架构设计(2)

news2025/1/11 21:49:17

【系统架构设计】软件架构设计(1)

  • 软件架构概述
  • 架构需求与软件质量属性
  • 软件架构风格
  • 层次系统架构风格
  • 面向服务的架构
    • SOA概述
    • 微服务
    • 微服务和SOA差异

软件架构概述

架构需求与软件质量属性

软件架构风格

层次系统架构风格

面向服务的架构

SOA概述

面向服务的架构(Service -Oriented Architecture ,SOA),与SOA 紧密相关的技术有UDDI、WSDL、SOAP、REST等,而这些技术都是以XML为基础而发展起来的。

  1. UDDI(Universal Description Discovery and Integration ,统一描述、发现和集成)

提供了一种服务发现、查找和定位的方法,是服务的信息注册规范,以便被需要该服务的用户发现和使用它。UDDI规范描述了服务的概念,同时也定义了一种编程接口。通过UDDI提供的标准接口,企业可以发布自己的服务供其他企业查询和调用,也可以查询特定服务的描述信息,并动态绑定到该服务上。

ps:UDDI 有点类似微服务的Nacos,服务注册中心,但要注意 服务提供者、服务请求者、服务注册中心里面服务注册中心为可选项,可以直接使用静态绑定的服务,服务提供者则可以把描述直接发送给服务请求者

  1. WSDL(Web Service Description Language ,Web服务描述语言)

是对服务进行描述的语言,它有一套XML的语法定义。WSDL描述的重点是服务,它包含服务实现定义和服务接口定义。

在这里插入图片描述

  1. SOAP(Simple ObjectAccess Protocol ,简单对象访问协议)

定义了服务请求者和服务提供者之间的消息传输规范。SOAP用XML来格式化消息,用HTTP来承载消息。通过SOAP应用程序可以在网络中进行数据交换和远程过程调用(Remote Procedure Call,RPC)。主要包括** 封装、编码规则、RPC、绑定四个部分。SOAP消息基本上是从发送端到接收端的单向传输**,但它们常常结合起来执行类似于请求/应答的模式。而且所有的SOAP消息都用XML进行编码

  1. REST(Representation State Transfer , 表达式状态转移)

是一种只使用HTTP 和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。它的简单性和缺少严格配置文件的特性,使得它与SOAP很好隔离开来,从根本上来说只支持几个操作(POST \GET \ PUT \ DELETE),这些操作适用于所有的信息。REST提出了如下的一些设计概念和准则:

  • 网络上的所有事情都被抽象为资源
  • 每个资源对应一个唯一的资源标识
  • 通过通用的连接件接口对资源进行操作
  • 对资源的各种操作都不会改变资源标识
  • 所有的操作都是无状态的

ps:操作无状态‌意味着在当前的操作中,不需要依赖或参考任何历史信息或数据。这种操作通常支持短连接,比如浏览新闻网站上的新闻,一旦从服务器获取资源后,就可以与服务器断开连接,因为当前的操作不需要历史数据的支持。简单来说,无状态操作就像是服务器对于每个请求都视为第一次请求,不会依赖之前的请求数据,每次请求都是独立的,服务器不会保存任何与请求方相关的状态数据‌

微服务

微服务的核心特点为:小,且专注于做一件事情、轻量级的通信机制、松耦合、独立部署

ps :‌轻量级通信机制中的轻量级主要指的是通信协议与语言无关、与平台无关,且创建和销毁不需要消耗太多的资源,可以在程序中经常创建和销毁session的对象。

微服务的优势:

  1. 技术异构性

在微服务架构中,每个服务都是一个相对独立的个体,每个服务都可以选择适合于自身的技术来实现。同时,在应用新技术时,微服务架构也提供了更好的试验场。因为对于单块的系统而言,采用一个新的语言、数据库或者框架都会对整个系统产生巨大的影响,这样导致我们想尝试新技术时,望而却步。但微服务不同,我们完全可以只在一个微服务中采用新技术, 待
技术使用熟练之后,再推广到其他服务。

  1. 弹性

弹性主要讲的是系统中一部分出现故障会引起多大问题。在单块系统中,一个部分出现问题,可能导致整体系统的问题。而微服务架构中,每个服务可以内置可用性的解决方案与功能降级方案,所以比单块系统强。

  1. 扩展
  2. 简化部署

在大型单块系统中,即使修改一行代码,也需要重新部署整个应用系统。这种部署的影响很大、风险很高,因此不敢轻易地重新部署。而微服务架构中,每个服务的部署都是独立的,这样就可以更快地对特定部分的代码进行部署。

  1. 与结织组织相匹配

我们都知道,团队越大越难管理,同时团队越大也代表系统规模越大代码库越大,这样容易引起一系列的问题。且当团队是分布式的时候,问题更严重。微服务作为独立的个体,可以根据组织情况,灵活进行代码库部署,以及设置服务所有权。

  1. 可组合性

在微服务架构中,系统会开放很多接口供外部使用。当情况发生改变时,可以使用不同的方式构建应用,而整体化应用程序只能提供一个非常粗粒度的接口供外部使用。

  1. 对可替代性的优化

在单块系统中如果删除系统中的上百行代码,也许不知道会发生什么,引起什么样的问题,因为单块系统中关联性很强。但在微服务架构中,我们可以在需要时轻易地重写服务,或者删除不再使用的服务。

面临的挑战:

  1. 分布式系统的复杂度
  2. 运维成本
  3. 部署自动化

对于微服务架构而言,每个服务都是一个独立可部署的业务单元,每个服务的修改都需要独立部署。这样部署的成本是比较高的,如亚马逊,每天都要执行数十次、甚至上百次的部署,此时仍用人工部署是行不通的,要使用自动化部署。如何有效地构建自动化部署流水线,降低部署成本、提高部署频率,是微服务架构下需要面临的一个挑战。

  1. DevOps 与组织结构

微服务不仅表现出一种架构模型,同样也表现出一种组织模型。这种新型的组织模型意味着开发人员和运维的角色发生了变化,开发者将承担起服务整个生命周期的责任,包括部署和监控,而运维也越来越多地表现出一种顾问式的角色,尽早考虑服务如何部署。因此,如何在微服务的实施中,按需调整组织架构,构建全功能的团队,是一个不小的挑战。

  1. 服务间依赖测试

  2. 服务间依赖管理

微服务和SOA差异

微服务可以讲也是SOA的一种,但依旧有差异,主要表现在以下方面:

在这里插入图片描述

对应的在实现方面也存在差异

在这里插入图片描述

ps: 简单说,微服务是比较细化的,一个开发团队就是一个公司的业务;SOA 则是笼统的,然后一个开发团队是一个公司的部门。

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

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

相关文章

【生日视频制作】教师节中秋节国庆节直升飞机AE模板修改文字软件生成器教程特效素材【AE模板】

飞机生日视频制作教程AE模板改文字特效广软件告生成器玩法素材 怎么如何做的【生日视频制作】教师节中秋节国庆节直升飞机AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件 下载AE模板 把AE模板导入AE软件 修改图片或文字 渲染出视频…

一起学Java(3)-Java项目构建工具Gradle和Maven场景定位和优缺点对比

在第一步创建的项目(java-all-in-one)项目里,我们提到了使用Gradle作为项目构建工具。看到这里,不知道你是否有疑惑,什么是项目构建工具。Java项目常用构建工具有哪些?都有什么特点? 带着疑惑&…

网络安全——基础知识记忆梳理

1. SQL注入攻击 SQL注入攻击是一种常见的网络安全威胁,它利用Web应用程序中对用户输入的数据的不正确处理,攻击者可以在SQL查询中注入恶意代码,从而执行非授权的数据库操作。这种攻击方式可以导致数据泄漏、数据篡改、绕过认证等多种安全问题…

【java计算机毕设】足浴城消费系统小程序MySQL ssm vue uniapp maven项目设计源代码 编程语言 小组课后作业 寒暑假作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】足浴城消费系统小程序MySQL ssm vue uniapp maven项目设计源代码 编程语言 小组课后作业 寒暑假作业 2项目介绍 系统功能: 足浴城消费系统小程序包括管理员、用户、商家三种角色。 管理员功能&…

Linux基础I/O之文件缓冲区

一、缓冲区的基本概念 缓冲区这个概念,我相信大家或多或少的有听到过,那么其到底是个什么东西呢? 简单地理解一下,其可以被看做一部分的内存(可以认为是malloc来的)。 那为什么要有缓冲区这个东西呢&#x…

C语言典型例题48

《C程序设计教程(第四版)——谭浩强》 习题3.8 有4个圆塔,圆形分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为…

uni-app 手记集。

1、uni-app 是一个使用 Vue.js 开发的前端应用的框架&#xff0c;所以不会Vue.js的小伙伴可以先去看看Vue.js的基础教学。 2、.vue文件结构 <template><div class"container"></div> </template><script type"text/ecmascript-6&q…

开放式耳机怎么戴?会有伤害?四款开放式蓝牙耳机排行榜前十名

老实说&#xff0c;开放式耳机对耳朵会产生什么伤害&#xff1f;我不太能想出来。我倒是觉得入耳式耳机可能会&#xff0c;因为入耳式耳机需将耳机塞入耳朵耳道&#xff0c;那就会对耳道产生影响。使用者在佩戴入耳式耳机的时候耳道会变成一个接近完全封闭的状态&#xff0c;耳…

【实战篇】Port配置

目录 1 前言1.1 开发板特性1.2 电路原理分析2 步骤2.1 General配置2.2 PortContainer配置3 总结1 前言 本文讲解如何配置Port模块。Port的引脚配置在整个实验中非常的重要,一旦配置错误可能会导致实验失败。引脚如何配置,完全依赖于我们的硬件设计和芯片型号,我们这里以英飞…

PE文件空白区添加代码

1、C源码 #include <iostream> #include<windows.h>int main() {int i 1;std::cin >> i;if (i 100){MessageBoxA(0, 0, 0, 0);}return 0; }2、将上述源码编译成可执行文件PEParase.exe&#xff0c;备用 3、使用010Editor打开该exe文件&#xff0c;查找PE…

git revert操作引起的代码丢失以及解决方案

场景如下&#xff1a; 某项目下有很多开发中的分支&#xff0c;比如分支a&#xff0c;b&#xff0c;c&#xff0c;d都合并到了一个test分支上&#xff1b;某次误操作将test分支内容合到了分支e上&#xff0c;然后紧接着又revert了这次合并&#xff0c;试图撤销合并&#xff1b…

如何解决Windows虚拟机不能安装vmtools的问题?

今天学到个小tips给大家分享一下&#xff01;&#xff01;&#xff01;解决win7安装不了vmtools的问题&#xff0c;以及如何打补丁&#xff01; 大家有没有遇到过下面的问题&#xff0c;就是在再给win7装vmtools的时候无法安装的情况&#xff0c;我这里这个是win7的旗舰版就遇…

Google Ads投放 | 如何分析竞争对手的谷歌广告?

Google Ads广告投放是出海企业的必重要营销动作之一&#xff0c;而分析竞争对手的 Google 广告是优化您自己的广告策略的关键步骤。通过了解竞争对手的动向&#xff0c;您可以发现改进的机会并在竞争中保持领先地位。 今天整理了Google Ads 竞争对手分析的4种方法&#xff1a; …

Linux基础知识学习(五)

1. 用户组管理 每个用户都有一个用户组&#xff0c;系统可以对一个用户组中的所有用户进行集中管理&#xff08;开发、测试、运维、root&#xff09;。不同Linux 系统对用户组的规定有所不同&#xff0c;如Linux下的用户属于与它同名的用户组&#xff0c;这个用户组在创建用户…

技术速递|将 .NET Aspire 添加到您现有的 .NET 应用程序中

作者&#xff1a;Jon Galloway 排版&#xff1a;Alan Wang .NET Aspire 是一个针对 .NET 的新型云就绪堆栈&#xff0c;可帮助开发人员快速轻松地开发分布式应用程序。您可能已经看过一些演示&#xff0c;展示了大型 .NET 解决方案&#xff0c;其中充满了复杂的云依赖项&#x…

租房网站

TOC springboot0762租房网站 JAVA简介 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterprise JavaBeans&#xff09;的全面支持&#xff0c;java servlet API&#xff0c;Java&#xff08;java server pages&…

在家上班,躺着收钱?分享远程工作程序员的真实生活……

这是《开发者说》的第15期&#xff0c;与以往采访的活跃于各行各业的开发者不同&#xff0c;这次我们将目光投向了优秀的远程开发者&#xff0c;本栏目将分享自由远程工作者的经历、见解和故事&#xff0c;希望能给大家带来一些崭新的视角。 这次我们邀请到的是拥有10年开发经…

秃姐学AI系列之:AlexNet + 代码实现

目录 深度学习之前的网络 机器学习 几何学 特征工程 总结 深度卷积神经网络的突破的两个关键因素 数据 ImageNet&#xff08;2010&#xff09; 硬件 90年&#xff1a;数据量和计算能力发展的均匀且都不大的时候——神经网络 00年&#xff1a;内存不错、算力也不错&a…

秃姐学AI系列之:使用块的网络——VGG

目录 VGG VGG块 VGG架构 总结 模型演变进度 代码实现 QA VGG 上文讲的 AlexNet 虽然证明了深层神经网络卓有成效&#xff0c;但它没有提供一个通用的模板来指导后续的研究人员设计新的网络。 与芯片设计中工程师从放置晶体管到逻辑元件再到逻辑块的过程类似&#xff0c…

AI大模型独角兽 MiniMax 基于 Apache Doris 升级日志系统,PB 数据秒级查询响应

作者&#xff1a;MiniMax 基础架构研发工程师 Koyomi、香克斯、Tinker 导读&#xff1a;早期 MiniMax 基于 Grafana Loki 构建了日志系统&#xff0c;在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案&#xff0c;并基于 Apache …