微服务架构的模式介绍

news2024/11/17 1:30:18

10e97b08b1924e559bd588c24e239007.jpg1.微服务架构模式方案

 

用Scale Cube方法设计应用架构,将应用服务按功能拆分成一组相互协作的服务。每个服务负责一组特定、相关的功能。每个服务可以有自己独立的数据库,从而保证与其他服务解耦。

 

 

 

 

 

1.1 聚合器微服务设计模式

 

 

        聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的Web页面,将检索到的数据进行处理展示。它也可以是一个更高层次的组合微服务,对检索到的数据增加业务逻辑后进一步发布成一个新的微服务,这符合DRY原则。另外,每个服务都有自己的缓存和数据库。如果聚合器是一个组合服务,那么它也有自己的缓存和数据库。聚合器可以沿X轴和Z轴独立扩展。

 

 

 

1.2 代理微服务设计模式

 

 

 

      这是聚合器模式的一个变种,在这种情况下,客户端并不聚合数据,但会根据业务需求的差别调用不同的微服务。代理可以仅仅委派请求,也可以进行数据转换工作。

 

 

 

1.3 链式微服务设计模式

 

 

 

       这种模式在接收到请求后会产生一个经过合并的响应,在这种情况下,服务A接收到请求后会与服务B进行通信,类似地,服务B会同服务C进行通信。所有服务都使用同步消息传递。在整个链式调用完成之前,客户端会一直阻塞。因此,服务调用链不宜过长,以免客户端长时间等待。

 

 

 

1.4 分支微服务设计模式

 

 

 

这种模式是聚合器模式的扩展,允许同时调用两个微服务链

 

1.5 数据共享微服务设计模式

 

 

 

自治是微服务的设计原则之一,就是说微服务是全栈式服务。但在重构现有的“单体应用(monolithic application)”时,SQL数据库反规范化可能会导致数据重复和不一致。因此,在单体应用到微服务架构的过渡阶段,可以使用这种设计模式

 

 

 

1.6 异步消息传递微服务设计模式

 

 

 

虽然REST设计模式非常流行,但它是同步的,会造成阻塞。因此部分基于微服务的架构可能会选择使用消息队列代替REST请求/响应

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

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

相关文章

74HC245芯片的用途

双 P 沟道增强型 MOS 管---D74HC245 目录 双 P 沟道增强型 MOS 管---D74HC245 概述与特点 主要特性 应用领域 管脚定义 管脚定义说明 逻辑框图 直流电气参数 直流特性 交流特性 封装 概述与特点 � 概述 D74HC245 是一种三态输出、八路信号收发器,主要应用…

【安装Tomcat,web站点部署】

Tomcat部署 第一种安装 yum install tomcat.noarch -y yum install tomcat-webapps.noarch -y #启动脚本 [rootlocalhost ~]# systemctl start tomcat这时可以通过IP地址端口访问 第二种安装 点击此处找到apache-tomcat-8.5.70.tar.gz 官网下载JDK #先安装JDK [rootlocalh…

Android安卓实战项目(5)---完整的健身APP基于安卓(源码在文末)可用于比赛项目或者作业参考中

Android安卓实战项目(5)—完整的健身APP(源码在文末🐕🐕🐕)可用于比赛项目 一.项目运行介绍 1.大致浏览 【bilibili视频】 https://www.bilibili.com/video/BV1uX4y177iR/? (1&…

MySQL语法2

DQL语句介绍 DQL是数据查询语言,用来查询数据库中表的记录 DQL-基本查询语句 SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVIMG 分组后条件列表 ORDER BY 排列字段列表 LIMIT 分页参数 讲解过程:基本查询、条件查询…

Dockerfile构建apache镜像

创建工作目录 [rootlocalhost ~]# mkdir tomcat [rootlocalhost ~]# cd tomcat/ 编写配置文件 [rootlocalhost tomcat]# cat Dockerfile #基于的基础镜像 FROM centos:7 #镜像作者信息 MAINTAINER liu <wewed163.com> #安装相关依赖包 RUN yum install -y wget net-…

SpringBoot之logback-spring.xml详细配置

《logback官网》 各种指导文件&#xff0c;有空自己去看&#xff0c;比如&#xff1a;我们需要调整的是布局&#xff0c;直接看Layouts。 pom.xml <!-- 环境配置 --><profiles><profile><id>dev</id><properties><spring.profiles.a…

提交项目纳品数据时,生成目录结构树文档readme.txt方法

之前在日企工作时&#xff0c;学到了一个生成目录结构树的方法。最近&#xff0c;我提交了项目纳品压缩包给客户&#xff0c;在里面附带了一个 "readme.txt" 文档&#xff0c;其中包含了整个项目的目录结构。客户对这个方法十分赞赏&#xff0c;分享一下方法。 在提交…

一文讲清多线程与多线程同步

1 多线程 1.1 线程的概念 十多年前&#xff0c;主流观点主张在可能的情况下优先选择多进程而非多线程&#xff0c;如今&#xff0c;多线程编程已经成为编程领域的事实标准。多线程技术在很大程度上改善了程序的性能和响应能力&#xff0c;使其能够更加高效地利用系统资源&…

Python删除txt文件中特定字符

这个问题居然csdn没一个人写&#xff01;我的半天时间都浪费在这破玩意上&#xff0c;但是说白了是因为我太菜&#xff0c;毁灭吧&#xff01; 我要搞关键点检测&#xff0c;但是问题在于我的关键点个数每张图不一样&#xff0c;就导致我转出来的txt后面关键点不够了他就被补了…

类中静态代码块、实例代码块、创建实例的执行顺序——阿里面试题

原题代码&#xff1a; package com.example.demo3;public class InitializeDemo {private static int k 1;private static InitializeDemo t1 new InitializeDemo("t1");private static InitializeDemo t2 new InitializeDemo("t1");private stati…

【蓝图】p45,多个角色控制权切换

p45&#xff0c;多个角色控制权切换 p45&#xff0c;多个角色控制权切换创建新玩家方法1方法2 控制权切换MultiGate按顺序指向一系列的蓝图引脚possess&#xff08;控制&#xff09; 切换时摄像机过渡效果Set View Target with Blend(使用混合设置视图目标)折叠到宏&#xff0c…

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)【二】

文章目录 SSM--基础环境搭建【二】项目介绍项目功能/界面● SSM 整合项目界面 项目全局配置web.xmlSpringMVC 配置 SSM–基础环境搭建【二】 项目介绍 项目功能/界面 ● SSM 整合项目界面 项目全局配置web.xml 配置furns_ssm\src\main\webapp\WEB-INF\web.xml , 和项目全局…

【搜索】DFS迭代加深

目录 迭代加深例题加成序列题意思路代码 迭代加深 搜索时可能会遇到这样一种情况&#xff1a; 明明答案就在第一层&#xff01;但是因为DFS的缘故浪费很多时间 迭代加深就是用来解决这个问题的算法 定义一个 max_depth &#xff0c;每次搜索时&#xff0c;超过这一层就全部剪…

Spring事务(声明式事务)(Spring的事务,Spring隔离级别,事务传播机制)

目录 一、什么是事务&#xff0c;为什么要用事务 二、Spring声明式事务 &#x1f345; 1、Transactional的使用 &#x1f388; 事务回滚 &#x1f388;注意&#xff1a;异常被捕获&#xff0c;不会发生事务回滚 &#x1f345; 2、Transactional 作⽤范围 &#x1f345; …

硬盘的分类

目前常见的硬盘种类主要有以下2种&#xff1a; 机械硬盘&#xff08;HDD&#xff09; 机械硬盘&#xff08;HDD&#xff09;是一种利用旋转磁盘和读写头来存储和访问数据的存储设备。它由磁盘、读写头、电机和控制电路等组成&#xff0c;磁盘通常是一种铝合金或玻璃材质的圆盘&…

《HeadFirst设计模式(第二版)》第二章代码——观察者模式

代码文件目录结构&#xff1a; DisplayElement package Chapter2_ObserverPattern.interfaces;/*** Author 竹心* Date 2023/8/2**/public interface DisplayElement {public void display(); }Observer package Chapter2_ObserverPattern.interfaces;/*** Author 竹心* Date…

【win11+vs 2017+OpenCV4.5.5+Qt5.12配置】详细安装过程+小问题解决

0.版本选择 由于Qt5无法与最新的vs2022兼容&#xff0c;扩展工具中一直显示不可用&#xff0c;所以将vs降级成vs2017。 在安装Qt的过程中&#xff0c;会选择安装Qt套件&#xff0c;其中就的MCVS 2017&#xff0c;说明vs2017是与qt兼容的。 当然也可以用qt creator这一原生IDE。…

PROFINet转Modbus协议转换网关Profinet数据通讯模块

产品概述 你是否曾经遇到过不同网络协议之间的沟通问题&#xff1f;捷米特JM-RTU-PN为你解决这个难题&#xff01; 捷米特JM-RTU-PN是一款数据通讯模块&#xff0c;能够实现PROFINet网络与Modbus网络之间的数据传输。它可以将RS485网络连接到PROFINet网络&#xff0c;并支持不…

《剑指offer》刷题(1)链表篇

class ListNode: def __init__(self, x): self.val x self.next None class Solution: def printListFromTailToHead(self , listNode: ListNode) -> List[int]: #用栈记录遍历的结果&#xff0c;然后返回出栈结果 if listNode is None: return [] stack [] p listNode…

8.2Thread类的常见属性

1. 2.前台线程和后台线程 前台线程:影响进程结束(如果前台线程没有执行完,进程不结束). 后台线程(守护线程):不影响线程结束. 创建线程默认是前台线程. 修改成后台线程:thread.setDaetrue);