当前位置: 首页 > news >正文

软考高级:SOA 和微服务 AI 解读

概念讲解

SOA(面向服务架构)和微服务虽然都是服务架构的设计模式,但它们的侧重点和实现方式有很大区别。为了帮助你理解这两个概念,我们可以从生活中的例子、概念本身的讲解以及记忆方法三方面入手。在这里插入图片描述

========== 生活化例子 ==========
在这里插入图片描述

  • **SOA(面向服务架构)**可以类比为大型连锁超市。超市里有不同的部门(蔬菜区、饮料区、家居用品区等),每个部门负责不同的商品,但都归属于同一超市管理。虽然部门间有一定独立性,但彼此之间密切协作,最终都服务于同一个目标——满足顾客的购物需求。而这个超市里可能还会有一个中央调度中心(比如收银台),协调各部门之间的运行和结算。

  • 微服务则像是一条商业街上的多个小店铺。每个店铺(比如面包店、咖啡店、书店等)都是完全独立的个体,独立运营,但它们可能为了便利顾客,会提供某种程度上的合作(比如一起搞促销活动)。每个店铺只专注于自己的核心业务,不需要频繁与其他店铺互动。

========== 概念讲解 ==========

  • SOA(面向服务架构):是一种通过把系统的功能划分为多个服务模块的架构。这些服务模块可能负责不同的功能,比如用户管理、支付、库存等。SOA强调共享资源,即不同模块可以共享数据库或者中间件,并且这些服务模块通常通过一个中央的服务总线(ESB,企业服务总线)进行通信和管理。SOA的目标是将企业系统内的所有功能模块整合起来,使得不同系统之间能够无缝交互。

  • 微服务:是将应用程序拆解为多个小而独立的服务,每个服务只负责一件事,且这些服务是完全独立的。每个微服务可以使用不同的编程语言、数据库或技术栈,并且它们通过轻量级的协议(如HTTP、REST API)进行通信。微服务的一个重要特点是去中心化管理,服务之间的耦合性低,每个服务可以独立开发、部署和扩展,不依赖其他服务。
    在这里插入图片描述

主要区别:

  1. 服务粒度:SOA中的服务粒度较大,通常是整个企业级的功能模块,而微服务粒度较细,每个微服务是高度专注的、独立的小模块。
  2. 通信方式:SOA常依赖于企业服务总线(ESB),是一种较为重的通信方式,而微服务通常采用轻量级的通信协议如HTTP、REST API。
  3. 独立性:微服务的独立性更强,可以独立开发、部署和扩展;SOA中的服务往往依赖于统一的基础设施,比如共享数据库或中间件。

========== 简单记法 ==========

  1. SOA像超市,微服务像小店:SOA就像一个大超市,有多个部门,但都属于同一个系统;而微服务则像多个独立的店铺,各自运营但可以协作。
  2. SOA大、微服务小:SOA的服务粒度大,适合企业级系统整合;微服务粒度小,适合快速迭代和灵活扩展的应用。
  3. SOA有中央管理,微服务更独立:SOA有企业服务总线统一管理,微服务各自独立,无需中心调度。

这些记忆技巧可以帮助你快速区分SOA和微服务的主要特点和差异。

对比

在这里插入图片描述

相关文章:

软考高级:SOA 和微服务 AI 解读

概念讲解 SOA(面向服务架构)和微服务虽然都是服务架构的设计模式,但它们的侧重点和实现方式有很大区别。为了帮助你理解这两个概念,我们可以从生活中的例子、概念本身的讲解以及记忆方法三方面入手。 生活化例子 **SOA&#xf…...

【每天学个新注解】Day 6 Lombok注解简解(五)—@SneakyThrows

SneakyThrows 简化异常处理 并不建议日常开发中通过此注解解决异常捕获问题!!! 允许方法抛出检查型异常而无需显式声明或捕获这些异常。这对于那些不希望在方法签名中声明异常或不愿意编写复杂的 try-catch 块的场景非常有用。 使用 SneakyT…...

C语言 | Leetcode C语言题解之第437题路径总和III

题目: 题解: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ //递归遍历树节点,判断是否为有效路径 int dfs(struct TreeNode * root, int ta…...

Linux-TCP重传

问题描述: 应用系统进行切换,包含业务流量切换(即TongWeb主备切换)和MYSQL数据库主备切换。首先进行流量切换,然后进行数据库主备切换。切换后发现备机TongWeb上有两批次慢请求,第一批慢请求响应时间在133…...

Python通过Sqlalchemy框架实现增删改查

目录 简介 什么是SQLAlchemy? SQLAlchemy可以分为两个部分:Core和ORM。 一、首先安装sqlalchemy 二、在配置文件中添加数据库连接信息,我这里是Mysql 三、 创建数据库连接类,我这里是动态读取数据库的表字段,自动…...

windows C++ - 任务计划程序(并发运行时)

如果希望微调并发运行时的现有代码的性能,则任务计划程序会很有用。 无法从通用 Windows 平台 (UWP) 应用获取任务计划程序。 在 Visual Studio 2015 及更高版本中,concurrency::task 类和 ppltasks.h 中的相关类型使用 Windows 线程池作为其计划程序。…...

多米诺骨牌(模拟)

初始化数据结构: 使用一个布尔数组 arr 来表示每个位置是否被占用。初始时所有位置均为 false(未占用)。使用一个 LinkedHashMap(命名为 queue)来记录最近的 R 操作的位置。这个结构可以保持插入顺序,方便后…...

Unity DOTS系列之Struct Change核心机制分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Struct Change机制,方便大家上手学习掌握Unity DOTS开发。 基于ArchType与Chunk的Entity管理机制 我们回顾以下ECS的内存管理核心机制,基于ArchTypeChunk的Entity管理模式。每个Entity不直接存放数据&#xff0c…...

「数组」定长滑动窗口|不定长滑动窗口 / LeetCode 2461|2958(C++)

目录 概述 1.定长滑动窗口 思路 复杂度 Code 2.不定长滑动窗口 思路 复杂度 Code 总结 概述 在双指针合集中,我们介绍了双指针算法: 「数组」数组双指针算法合集:二路合并|逆向合并|快慢去重|对撞指针 / LeetCode 88|26|11&#…...

【华为】用策略路由解决双出口运营商问题

需求描述 不同网段访问互联网资源时,走不同的出口,即PC1走电信出口,PC2走移动出口。 客户在内网接口下应用策略路由后往往出现无法访问内网管理地址的现象,该举例给出解决办法。 拓扑图 基础配置 #sysname R1 # # interface G…...

第L2周:机器学习|线性回归模型 LinearRegression:1. 简单线性回归模型

本文为🔗365天深度学习训练营 中的学习记录博客原作者:K同学啊 任务: ●1. 通过本文学习LinearRegression简单线形回归模型。 ●2. 模仿本文代码,通过鸢尾花花瓣长度预测花瓣宽度。 一、概念 什么是回归 回归的目的是为了预测&…...

1.5 测试用例

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 测试用例介绍2 测试用例编写3 案例分析 前言 测试用例的设计和编制是软件活动中最重要的工作。本文详细讲解了测试用例的基本概念以及如何编写测试用例。 本篇文章参考黑马程序…...

P1101 单词方阵

1. 题目链接P1101 单词方阵 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc.h> using namespace std; #define endl \n #define int long long int int xx[] {1,1,1,0,0,-1,-1,-1}; int yy[] {1,0,-1,1,-1,1,0,-1}; int vis[110][110]; char a[11…...

通过 OBD Demo 体验 OceanBase 4.3 社区版

本文作者&#xff1a;马顺华 引言 OceanBase 4.3 是一个专为实时分析 AP 业务设计的重大更新版本。它基于LSM-Tree架构&#xff0c;引入了列存引擎&#xff0c;实现了行存与列存数据存储的无缝整合。这一版本不仅显著提升了AP场景的查询性能&#xff0c;同时也确保了TP业务场景…...

浅拷贝和深拷贝(Java 与 JavaScript)

一、Java 浅拷贝和深拷贝 在Java中&#xff0c;浅拷贝和深拷贝的主要区别在于对对象的引用和内容的复制方式。 浅拷贝 Java 的类型有基本数据类型和引用类型&#xff0c;基本数据类型是可以由 CPU 直接操作的类型&#xff0c;无论是深拷贝还是浅拷贝&#xff0c;都是会复制出…...

力扣每日一题 2306.公司命名

做题过程中使用到的java语法&#xff1a; 1.从一个字符串中取出一部分字符串&#xff1a; String str "Hello, World!"; String part str.substring(7); // 从索引7开始到字符串末尾 System.out.println(part); // 输出: World! class Solution { public lo…...

HTML-DOM模型

1.DOM模型 window对象下的document对象就是DOM模型。 DOM描绘了一个层次化的节点树&#xff0c;每一个节点就是一个html标签&#xff0c;而且每一个节点也是一个DOM对象。 2.操作DOM 2.1.获取DOM对象常用方法 获取DOM对象的常用方法有如下几种&#xff1a; getElementById(…...

vue项目报错: At least one is required in a single file component.的主要原因及解决办法

本篇文章主要讲解 vue项目报错&#xff1a; At least one is required in a single file component.的主要原因及解决办法 作者&#xff1a;任聪聪 日期&#xff1a;2024年9月25日 报文信息&#xff1a; Compiled with problems: ERROR in ./src/xxxx.vue Module Error (from …...

03DSP学习-利用syscfg配置IO

上一篇博客介绍了syscfg&#xff0c;对syscfg有了初步的了解&#xff0c;但是在真正使用上它之前&#xff0c;还不能理解他是一个神器。 (在写博客的时候&#xff0c;我是在从头到尾重新完成这个步骤&#xff0c;希望对初学者有点帮助) 找到Board Component 打开syscfg文件&…...

web - RequestResponse

##Request&Response 1&#xff0c;Request和Response的概述 Request是请求对象&#xff0c;Response是响应对象。这两个对象在我们使用Servlet的时候有看到&#xff1a; 此时&#xff0c;我们就需要思考一个问题request和response这两个参数的作用是什么? request:获取请…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...