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

微服务架构七种模式

微服务架构七种模式

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

微服务架构七种模式

需求:

1.聚合器微服务设计模式
2. 代理微服务设计模式
3. 链式微服务设计模式
4. 分支微服务设计模式
5. 数据共享微服务设计模式
6. 异步消息传递微服务设计模式

设计思路

1.聚合器微服务设计模式
其主要功能是将不同的微服务功能模块组合成一个单一的API,从而提高整个系统的可用性和可扩展性。
具体来说,聚合器微服务设计模式的实现需要以下步骤:

对于需要聚合的功能模块,使用独立的微服务进行开发和维护,并尽可能地保持每个服务的独立性和可扩展性;

设计一个聚合器微服务,该服务将调用所有需要的功能模块,并将它们的响应结果汇总成一个单一的API响应。这个聚合器微服务可以被视为一个路由器,它将路由所有的请求到正确的服务;

当聚合器微服务收到一个请求时,它会调用所有需要的功能模块,并将它们的响应结果汇总成一个单一的API响应。这个响应结果可以是JSON格式的数据,也可以是其他格式的数据;

对于特定的业务需求,可以在聚合器微服务中实现各种聚合逻辑,例如对多个响应结果进行组合、聚合或过滤等等。

  1. 代理微服务设计模式

安全代理:代理微服务可以在客户端和后端服务之间提供安全层,对数据进行加密、身份验证和授权等操作,确保只有授权的用户可以访问服务。

负载均衡代理:代理微服务可以根据负载情况动态分配请求到多个后端实例,以避免某个实例过载从而导致服务不可用的情况。

缓存代理:代理微服务可以在客户端和后端服务之间提供缓存层,从而提高服务的响应速度和性能。

带宽限制代理:代理微服务可以限制对后端服务的访问速率,从而避免后端服务因过多请求而崩溃。

记录数据代理:代理微服务可以对所有请求和响应数据

  1. 链式微服务设计模式
    链式微服务设计模式是一种可扩展的设计模式
    该模式将各个微服务连接起来,形成一条链,每个微服务都完成一部分功能,然后将结果传递给下一个服务,直到完成整个过程。

该模式将各个微服务连接起来,形成一条链,每个微服务都完成一部分功能,然后将结果传递给下一个服务,直到完成整个过程。

在链式微服务设计模式中,每个微服务都是独立的,它们都有自己的输入和输出,并且可以使用异步消息传递或同步调用等不同的通信方式。每个微服务都是可插拔的,可以轻松添加或删除服务,而不需要修改整个系统。

这种设计模式允许每个微服务专注于自己的任务,而不需要关注整个系统的细节。它还可以提高系统的可扩展性和性能,因为每个微服务都可以进行水平扩展,以处理更多的请求。

另外,链式微服务设计模式可以帮助开发人员更好地组织代码和模块化系统。每个微服务都可以作为一个模块,可以单独测试和部署,从而更容易实现持续交付和部署。

分支微服务设计模式是一种用于构建大型系统的微服务架构模式,它将系统分成多个小的、相互独立的子系统。

在分支微服务设计模式中,每个微服务代表一个子系统,负责处理该子系统的所有业务逻辑。这种模式允许每个子系统独立开发、测试和部署,从而提高了系统的可伸缩性和可维护性。

  1. 分支微服务设计模式
    分支微服务设计模式主要有以下几个特点:

  2. 每个微服务都是独立的,具有自己的数据库和API接口。

  3. 不同的微服务之间可以通过RESTful API或消息队列进行通信。

  4. 每个微服务都遵循单一职责原则,只负责处理特定的业务逻辑。

  5. 分支微服务模式允许系统中的不同部分独立开发和升级,从而提高了系统的可伸缩性和可维护性。

  6. 通过使用分支微服务模式,可以将系统中的风险降到最低,因为每个微服务都可以独立测试和部署。

数据共享微服务是一种模式,它允许不同的应用程序和服务共享数据,以便实现更高效的业务流程。下面是一些常用的数据共享微服务设计模式:

数据聚合模式:将多个数据源的数据聚合到一个中心库或数据湖中,并提供统一的API接口供其他服务调用。

数据复制模式:将数据从一个数据源复制到另一个数据源,以便在不同的应用程序或服务中使用。

数据传输模式:使用消息队列或其他数据交换机制,将数据从一个服务传输到另一个服务。

数据缓存模式:使用缓存服务将数据缓存起来,以便其他服务可以更快地访问它们。

数据仓库模式:构建一个数据仓库,将数据从多个数据源导入其中,并提供查询接口供其他服务使用。

异步消息传递是一种常见的微服务设计模式,它允许不同的服务之间通过消息传递进行通信。这种方式可以帮助解决微服务架构中的耦合性和性能问题。

在异步消息传递模式中,一个服务可以通过消息队列向另一个服务发送消息,而不需要直接调用该服务的 API。这种方式可以让服务之间解耦,因为发送方不需要知道接收方的实现细节,只需要知道如何发送消息,并且接收方会在消息队列中接收并处理消息。

另外,异步消息传递还可以提高系统的性能和可伸缩性。因为消息队列可以处理大量的消息,不同的服务可以异步地处理这些消息,从而让整个系统的吞吐量得到提高
以下是异步消息传递微服务设计模式的几个关键要点:

1.使用消息队列作为服务之间通信的中介。消息队列可以是开源的,比如RabbitMQ和Apache Kafka,也可以是云服务商提供的管理的消息队列,比如AWS SQS和Azure Service Bus。

2.定义标准的消息格式和协议,以确保不同的服务可以理解和处理消息。

3.使用异步方式发送消息,这意味着发送方不需要等待接收方处理完消息才能继续执行。

4.确保消息处理的幂等性,即使同一个消息被处理多次,也应该保证最终结果是一样的。

实现思路分析

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
1.https://edu.iask.sina.com.cn/jy/3o7lgs8RzuF.html
书籍推荐

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~

相关文章:

微服务架构七种模式

微服务架构七种模式 目录概述需求: 设计思路实现思路分析 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.…...

关于CICD流水线的前端项目运行错误,npm项目环境配置时出现报错:Not Found - GET https://registry.npm...

关于CICD流水线的前端项目运行错误,npm项目环境配置时出现报错:Not Found - GET https://registry.npm… 原因应该是某些jar包缓存中没有需要改变镜像将包拉下来 npm config set registry http://registry.npm.taobao.org npm install npm run build...

element-plus的周选择器 一周从周一开始

1、代码 1&#xff09;、template中 <el-date-picker v-model"value1" type"week" format"[Week] ww" placeholder"巡访周" change"change"value-format"YYYY-MM-DD" /> 2&#xff09;、方法中 import…...

Android 9.0 pms获取应用列表时过滤掉某些app功能实现

1.前言 在9.0的系统rom定制化开发中,对系统定制的功能也是很多的,在一次产品开发中,要求在第三方app获取应用列表的时候,需要过滤掉某些app,就是不显示在app应用列表中,这就需要在pms查询app列表时过滤掉这些app就可以了,接下来就实现这些功能 2.pms获取应用列表时过滤掉…...

HTML <thead> 标签

实例 带有 thead、tbody 以及 tfoot 元素的 HTML 表格: <table border="1"><thead><tr><th>Month</th><th>Savings</th></tr></thead><tfoot><tr><td>Sum</td><td>$180<…...

谷歌发布Gemini以5倍速击败GPT-4

在Covid疫情爆发之前&#xff0c;谷歌发布了MEENA模型&#xff0c;短时间内成为世界上最好的大型语言模型。谷歌发布的博客和论文非常可爱&#xff0c;因为它特别与OpenAI进行了比较。 相比于现有的最先进生成模型OpenAI GPT-2&#xff0c;MEENA的模型容量增加了1.7倍&#xf…...

力扣92. 局部反转链表

92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&am…...

九、适配器模式

一、什么是适配器模式 适配器模式&#xff08;Adapter&#xff09;的定义如下&#xff1a;将一个类的接口转换成客户希望的另外一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式&#xff08;Adapter&#xff09;包含以下主要角色&…...

使用spring自带的发布订阅来实现发布订阅

背景 公司的项目以前代码里面有存在使用spring自带发布订阅的代码&#xff0c;因此稍微学习一下如何使用&#xff0c;并了解一下这种实现方式的优缺点。 优点 实现方便&#xff0c;代码方面基本只需要定义消息体和消费者&#xff0c;适用于小型应用程序。不依赖外部中间件&a…...

Walmart电商促销活动即将开始,如何做促销活动?需要注意什么?

近日&#xff0c;沃尔玛官宣Baby Days优惠活动将于9月1日正式开始&#xff01;卖家可以把握机会&#xff0c;通过设置促销定价&#xff0c;以最优惠的婴儿相关产品价格吸引消费者&#xff0c;包括汽车座椅、婴儿车、尿布袋、家具、床上用品、消耗品、婴儿服装、孕妇装等。注意本…...

Matlab(画图进阶)

目录 大纲 1.特殊的Plots 1.1 loglog(双对数刻度图) ​1.3 plotyy(创建具有两个y轴的图形) 1.4yyaxis(创建具有两个y轴的图) 1.5 bar 3D条形图(bar3) 1.6 pie(饼图) 3D饼图 1.7 polar 2.Stairs And Ste阶梯图 3.Boxplot 箱型图和Error Bar误差条形图 3.1 boxplot 3.2 …...

人生的回忆

回忆是人类宝贵的精神财富&#xff0c;它们像一串串珍珠&#xff0c;串联起我们生活中的每一个片段。 回忆是时间的见证者&#xff0c;它们承载着我们成长、经历、悲欢离合的点点滴滴。 回忆让我们重温过去的欢笑与眼泪&#xff0c;感受那些已经逝去的时光。它们就像一本翻开的…...

Spring之依赖注入源码解析

Spring之依赖注入源码解析 Spring依赖注入的方式 手动注入 在XML中定义Bean时&#xff0c;即为手动注入&#xff0c;因为是程序员手动给某个属性指定了值。 通过set方式进行注入 <bean name"userService" class"com.luban.service.UserService">…...

5G NR:RACH流程-- Msg1之生成PRACH Preamble

随机接入流程中的Msg1&#xff0c;即在PRACH信道上发送random access preamble。涉及到两个问题&#xff1a; 一个是如何产生preamble&#xff1f;一个是如何选择正确的PRACH时频资源发送所选的preamble? 一、PRACH Preamble是什么 PRACH Preamble从数学上来讲是一个长度为…...

高基数类别特征预处理:平均数编码 | 京东云技术团队

一 前言 对于一个类别特征&#xff0c;如果这个特征的取值非常多&#xff0c;则称它为高基数&#xff08;high-cardinality&#xff09;类别特征。在深度学习场景中&#xff0c;对于类别特征我们一般采用Embedding的方式&#xff0c;通过预训练或直接训练的方式将类别特征值编…...

高效利用隧道代理实现无阻塞数据采集

在当今信息时代&#xff0c;大量的有价值数据分散于各个网站和平台。然而&#xff0c;许多网站对爬虫程序进行限制或封禁&#xff0c;使得传统方式下的数据采集变得困难重重。本文将向您介绍如何通过使用隧道代理来解决这一问题&#xff0c;并帮助您成为一名高效、顺畅的数据采…...

图论岛屿问题DFS+BFS

leetcode 200 岛屿问题 class Solution {//定义对应的方向boolean [][] visited;int dir[][]{{0,1},{1,0},{-1,0},{0,-1}};public int numIslands(char[][] grid) {//对应的二维数组int count0;visitednew boolean[grid.length][grid[0].length];for (int i 0; i < grid.l…...

Cypress web自动化windows环境npm安装Cypress

前言 web技术已经进化了&#xff0c;web的测试技术最终还是跟上了脚步&#xff0c;新一代的web自动化技术出现了&#xff1f; Cypress可以对在浏览器中运行的任何东西进行快速、简单和可靠的测试。 官方地址https://www.cypress.io/,详细的文档介绍https://docs.cypress.io/g…...

CentOS7.9设置ntp时间同步

文章目录 应用场景基础知识操作步骤 应用场景 我们公司是做智慧交通的&#xff0c;主要卖交通相关的硬件和软件。硬件包括信号机、雷达、雷视、边缘盒子等&#xff0c;软件包括信控平台、管控平台等信号机设备、雷达设备、边缘计算单元等&#xff0c;还有一些第三方的卡口设备…...

36、springboot --- 对 tomcat服务器 和 undertow服务器 配置访客日志

springboot 配置访客日志 ★ 配置访客日志&#xff1a; 访客日志&#xff1a; Web服务器可以将所有访问用户的记录都以日志的形式记录下来&#xff0c;主要就是记录来自哪个IP的用户、在哪个时间点、访问了哪个资源。 Web服务器可将所有访问记录以日志形式记录下来&#xff…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...