mq使用心得

MQ使用说明分享和心得 MQ使用说明分享如题MQ使用说明分享如题 立即下载
概述:

mq是web架构中经常用到的异步消息交互系统,是解决异构系统中消息处理中间件。

本文不介绍具体的代码调用,相信网上这方面的资料已经相当多了,本文主要介绍使用过程中的一些建议和心得。

场景:

先说下使用场景,mq场景还是比较多的:

1.复杂业务场景拆分:

web应用经常出现一些复杂业务,但是这些业务又不是强依赖业务,往往并不关注具体代码的先后顺序,并且业务点调用对系统响应有一定影响;这种系统往往就适合做异步过程处理。

模拟一种场景:

x包含a,b,c,d四个业务处理,分别耗时500ms,300ms,200ms,1000ms。

如图:

而节点A其实和节点B不存在耦合,也就是说没有前后关系,这样节点A是否可以移出,这样总共的响应时间将会提高500ms。

试想“任务X”结构变成这样,

如图:

当然消息处理本身也会消耗,所以需要权衡那些特别耗时的业务点。


常见的业务场景如:

   1.数据监控

   2.多节点数据。

2.多数据源:

这种场景往往是历史包袱造成的,早期的数据性能并不是很好,导致很多架构在设计时采用了读写分离数据库设置方式,这种方式的好处是,面对用户的数据库是低写入,低操作,高响应;面对后端服务人员是高并发,低响应。解决用户响应问题。

但是由于多数据源导致的数据一致性就存在了。这时mq方式有比较适用这种场景。当然目前架构有很多能解决类似问题,比如mysql的数据库可以使用log同步变更,或者master-slave等,这些方案更加用户场景来使用。

如图:

这种是解决多数据源系统信息同步的一种方式。

3.信息通知:

很多系统并发孤立点。往往变更一个信息会影响到其他系统,比如实时search,比如数据统计,虽然数据是某个系统的,但是这些信息也是其他部门共用的,我们需要通知到对方我们的变更。这有点类似于2但又有区别。

针对这种类型的需求,建立发布订阅的消息往往能很好的解决这些需求的问题,消息提供方是我们点,我们约定好消息格式,由各个系统根据消息进来去执行自身业务,包括更新自身索引,或者统计数据。这种架构图和发布订阅很象,这里就不划了。


建议:
1.同步信息最好是string,非业务对象:

业务对象就存在序列化和反序列化问题,但是这样的系统存在问题,当业务需要重构时,消息格式需要变更时往往变得更困难。

string的扩展性还是不错的,

举例:原先的数据结构是:

offerId|memberId|time

现在需要增加一个companyId,可简单的追加一个offerId|memberId|time|companyId

这种方式不但不引入序列化带来的性能消耗,消息信息也很清晰。

2.同步只是消息,具体信息数据库取

由于mq在设置时一般不设置前后顺序的约束,主要是减少性能消耗;

这样不可避免存在消息前后问题,可能早先的消息是后来的,而后面的消息是之前的,如果取同步消息反而会导致两端数据存在不一致的风险。

因此建议消息只是通知,具体去数据库取信息

3.同步注意消息的细分力度,细能精准控制,但也会引入大量修改点,尤其是以后逻辑修改

比如对于一个会员,可能存在登录,修改信息,这个力度的消息格式就需要两个就能区别,同时也比较直观;

但是如果要区分用户是否修改密码,是否更新过用户名,如果要消息区别这个粒度,就需要把修改消息拆分成3个。

似乎很清理,但如如果还要区分如何,继续拆,那么你的业务逻辑就变得非常庞大。所以在细分时一定要仔细考虑清楚以后的影响

4.维护好同步列表,避免以后大家不了机信息导致修改问题

异步减少了系统的耦合,也是用户关注的更加集中,结果就是同步忽略,遗忘,无视,最终变得不可控制。

一改动代码就出现故障,这个问题是我在维护类似问题经常遇到的。所以一份必要的同步列表往往能记录所有变更。



经验之谈,thanks;

如有更好建议,请指正

























无人机视角下基于YOLOv5/v8/v10的车辆检测系统:从算法原理到UI界面实战 随着无人机技术的普及和智慧城市的发展,无人机视角下的车辆检测在交通监控、战场侦察、灾害救援等领域展现出巨大的应用价值。然而,无人机航拍图像存在目标尺度小、视角多变、背景复杂等挑战。本文深入探讨了如何利用YOLOv5、YOLOv8、YOLOv10三个代表性目标检测算法,构建一套完整的无人机车辆检测系统。文章不仅详细解析了各版本YOLO的核心技术演进,还提供了从数据集准备、模型训练、性能评估到基于PyQt5/PySide6的图形界面开发的完整代码实现。通过本文,读者将能够掌握构建无人机实时车辆检测系统的全流程技 阅读详情

相关推荐

时序分析-由D触发器结构来理解Tsu、Th

FPGA逻辑单元内的D触发器(D-FF)是一种在时钟的上升沿(或下降沿)将输入信号的变化传送至输出的边沿触发器。 数字电子技术基础-闫石(第五版)边沿D触发器内部结构见下图: 而FPGA原理与结构(日)一书中,内部结构较之上图多了俩反相器: 由传输门和俩个反相器组成一个循环电路(锁存器),再由前后两级锁存器按主从结构链接而成。这里的传输门起开关作用,随着CLK的状态变化切换开关。只看输出的话,前级锁存器的值会随着时钟输入的变化井然有序地传入后级锁存器。为了防止时钟信号变化时输入信号发生冒险,从而使稳定.

XY_Chang的博客 3972

RabbitMq重点

为什么要使用MQ? 1.解耦,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦! 2.异步,将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度 3.削峰,并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常 使用了消息队列会有什么缺点? 1.系统可用性降低:你想啊,本来其他系统只要运行好好的,那你的系统就是正常的...

WillSon_Lin的博客 361

汽车Bootloader流程

根据ISO14229-1 写的汽车行业 Bootloader流程 1:编程前 → 先读取软硬件版本号 22 F1 XX 软件信息 22 F1 XX 硬件信息 → 进入扩展会话extend diagnostic sessions 功能寻址 10 03 → 编程条件检测routine control:ECU升级条件的判断,如车速,检测车的型号 31 01 02 03 → 关闭DTC检测,(由于很多节点收不到其它节点的报文后会记录DTC故障)功能寻址 85 02 → 关闭诊断通讯(禁止各个节点的应用报...

weixin_41320142的博客 2830

在线翻译软件:我为什么选择了memoQ?

其实熟悉我的朋友都知道,我个人是memoQ的“死忠粉”,从2015年底开始接触CAT,先是学习Trados,后来学习memoQ,memsource还有其它CAT工具,到现在开始和小m一起共事,超过四年的时间,memoQ真的是我的最爱。于是就有很多小伙伴问我,为什么我会选择memoQ进行在线翻译呢?在这里我想分享三个印象: 在线翻译软件:我为什么选择了memoQ? ...

datalsplyn的博客 2357

GOM Correlate拉伸试验后处理操作

本文描述了使用GOM Software 2022对拉伸试样进行后处理的操作,包括设置检测点、引伸计、输出应变数据到表格、输出报告为视频等

qq_45008924的博客 4662

OAI骨关节炎数据集申请与DICOM下载全流程避坑指南

医学影像分析中,DICOM格式是存储与交换CT、MRI等数据的通用标准,其元数据Tag承载着像素间距、层厚等关键物理信息,直接影响定量分析的准确性。在骨关节炎研究领域,OAI数据集因样本量大、随访时间长而成为高价值资源,但获取需通过NDA协议申请,并借助nda-tools命令行工具完成TB级影像的批量下载与断点续传。这一流程涉及浏览器环境配置、DICOM格式转换及Python预处理等工程环节,任一细节疏漏都可能导致数据读取异常或分析偏差。掌握从申请到落地的完整链路,能显著提升医学影像AI研究的效率与可复现性

weixin_30843121的博客 275

IBM MQ7.5 在Windows下的安装部署及使用

1.首先,先来了解下什么是MQ吧,IBM MQ原理和使用场景 2.下载MQ,官网下载地址,我这里使用的是7.5版本。 3.安装详细步骤参考:https://blog.youkuaiyun.com/chqlee1990/article/details/27526859 以下的代码环境就是参考了上面这个链接的教程,初次配置MQ队列最好完全和教程一致吧。 值得注意的是,新建服务器连接通道而不是服务器...

BAStriver的博客 1万+

2023全国职业技能大赛 网络系统管理 服务部署 Linux部分--基础配置

服务器和客户端基本配置如下表,各虚拟机已预装系统。一、关闭防火墙和Selinux。七、需要使用到的命令详解。三、修改root密码。

weixin_62926639的博客 998

mq使用的心得

背景 传统的同步请求(比如restful)虽然实现起来比较简单,但是随着请求线程数和存取数据量的增加,其局限性日益突显。典型的代表在于执行比较耗时的代码(例如导入大批量数据到数据库里)和非主业务(如埋点统计、记录登录日志、发送手机短信)的崩溃造成整个业务的崩溃(503错误)。同时一旦远程服务器宕机,造成消息数据丢失的问题。这个是笔者在前面公司工作遇上的问题,留下了惨痛的教训。 为解决此类问题,需要采取异步的方法来另外开启线程执行比较耗时和非主要的线程。首先想到的是以线程池为代表的多线程,该方法是使用@Asy

qq_27087671的博客 647

虚拟机安装VMware Tools

单击虚拟机-->安装VMware Tool 安装之后会有一个VMware Tools硬盘,里面有VMware Tools.tar.gz的压缩包 按照提示解压它,然后执行vmware-install.pl安装VMware Tools 将安装包放到/tmp目录下。可以直接拽过去,也可以使用cp或者mv命令 进入tmp文件目录并解压此文件包 cd /tmp ...

afei001 620

用python画年度和月度的日历图

用python画各种日历图,可以区分月份来画也可以画一整年的,日历图中可以体现自己的信息

weixin_44853840的博客 2138

netty与MQ使用心得

最近在做分布式的系统,使用netty与mq进行远程RPC调用,现将心得经验总结一下。 我们公司的服务器在云端机房,在每一个店面有一个服务器,店面服务器外网无法访问。 我们的做法是店面服务器在启动时与云服务器建立长链接,这样两台服务器之间可以双向通信。 不过使用netty做RPC代码量偏多,业务比较复杂时代码维护稍微复杂,所以后来新的接口我尝试 使用MQ来代替netty进行通信。使用MQ之后...

weixin_30642267的博客 1118

5步上手Quartz.NetUI:.NET Core定时任务的开箱即用解决方案

Quartz.NetUI是一个基于.NET Core + Quartz.NET + Vue + IView的开箱即用的定时任务UI解决方案。它结合了Quartz.NET的强大功能和Vue.js的易用性,提供了一个不依赖数据库、只需在界面进行简单配置即可使用的定时任务管理系统。通过上述步骤,你已经学会了如何使用Quartz.NetUI在.NET Core项目中实现定时任务。Quartz.NetUI不仅功能强大,而且使用简单,非常适合那些需要快速实现定时任务管理的开发者。

java专栏 2406

Redis MQ使用心得

Redis大部分场景想必是当非关系型数据库来用,虽然有mq功能,但远没有rabbitmq强大。 下面是前段时间研究MQ时遇到的一些问题: 1. RedisMQ 发布与订阅不能使用同个socket,就是说,redismq client如果需要同时发布和订阅,必须与redisserver建立两个连接,而且不能混用,订阅与发布一定要职责分明。 2. hiredis开发库关于发布和订阅的示例几乎没有...

weixin_30847865的博客 1729

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

消息队列MQ使用心得

1:为什么使用MQ? 主要是:解耦、异步、削峰。 (1)解耦:A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃......A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。如果使用 MQ,A 系统产生一条数据,发送到 MQ 里面去,哪个系...

老树的技术博客 461

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MQ发布预定心得

发布预定模式在MQ中提供了两种实现方式,在我原来的测试中每个预订者都是非持久的,也就是说只有当预订者与MQ保持连接时才能获得消息,而当连接断开时预订者不会接受到消息。如果以线程的方式来实现时刻保持连接的话,是可以的,但是现在采用的技术是以WebService服务来提供,对方发出一个请求,我返回一个请求的形式的话,使用线程时刻监听的这种方式能否可行是一个未知的问题。因此在查阅资料后,得知JMS的实现

Fenix1986的专栏 1068

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

关于使用IBM MQ 消息ID(messageId)的几点心得

关于使用IBM MQ 消息ID(messageId)的几点心得 1 消息ID是可以自定义的,就像表的主键一样。当然也可以让MQ自动生成。   2 两个队列管理器之间传输消息,消息的ID是不会改变的。   3 两个队列管理器生成的消息ID,是会重复的,这种几率比较小。    若你有多台机器向一台机器发送消息,建议根据本地网卡唯一标识自定义    生成消息的ID。 4 使用ja...

个人博客 6529

转转游戏MQ重构:思考与心得之旅

游戏业务自 2017 年启航,至今已近乎走过七个春秋,历经漫长岁月的发展,不知不觉间背负起沉重的历史包袱。犹如一棵大树,既有繁茂精壮的枝桠,亦有诸多枯败凋零的枝叶。此文主要聚焦于商品更新 MQ 消费这一细微模块,详述游戏业务如何对原有代码予以重构,令游戏这棵大树重焕蓬勃生机。

zhuanzhuantech的博客 940

信用算力基于 RocketMQ 实现金融级数据服务的实践

导读: 微服务架构已成为了互联网的热门话题之一,而这也是互联网技术发展的必然阶段。然而,微服务概念的提出者 Martin Fowler 却强调:分布式调用的第一原则就是不要分布式。 纵观微服务实施过程中的弊端,可以推断出作者的意图,就是希望系统架构者能够谨慎地对待分布式调用,这是分布式系统自身存在的缺陷所致。但无论是 RPC 框架,还是 REST 框架,都因为驻留在不同进程空间的分布式组件,而...

云栖技术精选 318

MQ(一):消息中间件开篇

就MQ而言, MQ长期不看不用或者习惯套用很容易让人淡忘他的原理和基础,所以我在此开一篇写关于消息中间件的原理与案例帮助自己巩固基础。 注:对于MQ的文章,我会将原理和代码案例放进github中,案例搭建我会放进博客中。 入口:点击进入 转载于:https://www.cnblogs.com/kong...

aoluanyao7949的博客 131

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第一章

>我这份文档是对官方文档的补充,比如官方文档没有记载P10的请求参数,这种东西没有什么营养,又容易漏写些东西,因此我记录了下来,您可以通过文字的目录快捷需要的东西

Java、Python、AI、前沿技术等领域的技术总结和经验分享。 1万+

Arduino实战:用MQ-135传感器DIY一个简易空气质量检测仪(附完整代码与校准心得)

本文详细介绍了如何使用Arduino和MQ-135传感器DIY一个高精度空气质量检测仪,包括硬件选型、电路设计、传感器特性解析、校准方法及实战技巧。文章还提供了完整的代码示例和物联网集成方案,帮助创客快速实现空气质量监测系统。

weixin_30905981的博客 532

近期接触和学习的新技术

白天很忙,学习新业务,认识新同事,一大堆英文名,记都记不住。 不过有几个新技术,以前没接触过,挺好用的。 分别是IBM的MQ(安全消息传输中间件),Array(负载均衡中间件),DataPower(数据加密解密中间件) 今天先写个概况,以后慢慢整理出使用心得。 转载于:https://www.cnblogs.com/ushou/p/3519776.html...

weixin_34192732的博客 693

影子设备心得

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33973600的博客 550

架构师之路,2020半年精选!!!

不知不觉,2020年已经过了一半了。今天,架构师之路,简单做个总结,如果错过一些好文,这是一个补票的好机会。点击标题,直接阅读。架构实践:《究竟如何保证,session一致性?》《第三方...

shenjian58的博客 5081
上一篇: jdk内存溢出监控
下一篇: 主流网站登录问题
「已注销」
博客等级 码龄20年 47粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值