切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
设计模式
框架
大数据
物联网
实现方案
算法
分布式
第三方应用
消息中间件
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
进阶开发
消息队列概念
[TOC] ## 1. 系统间通信的两种方式 + 基于远程过程调用的方式RPC调用,客户端不需要知道调用的具体实现细节,只需直接调用实际存在于远程服务器上的某个对象即可 + 基于消息队列的方式,这种方式是由消息发送方将消息发送到消息队列,然后由消息队列中间件将消息传递给消息消费方 >《**RPC说明**》:RPC是一种通过网络从远程计算机程序上请求服务,而不要了解底层网络技术的协议,主要就是下面的三层意思 >+ RPC是一种协议,一种规范,它需要有遵循这套规范的实现,例如Dubbo、Thrift、GRPC >+ RPC网络通信是透明的,调用时不需要关心网络之间的协议,网络I/O模型,通信的信息格式等 >+ 跨语言,服务器可以是任何程序语言,对于调用方来说,调用都是成功的并且返回值是调用方程序语言能够理解的描述形式即可 ## 2. 使用消息队列的好处 + 可处理需要异步的业务:例如一些请求后立马需要返回的场景,请求将消息传递到消息队列后立马返回,至于业务的处理过程交给消息队列与其对应的线程或系统处理 + 解耦:业务模块迭代关联太紧密会造成维护难的场景,使用消息队列可以将模块之间的联系分开,各个模块只要将消息传递到消息队列,然后各个模块去处理与自己相关的消息队列即可 + 流量削峰:短时间高并发请求,可通过请求持久化来限制处理不过来的业务,将请求放在消息队列中等待处理 + 日志收集:可以统一各个系统的日志,利用消息队列接收和持久化消息的高性能,快速接收日志消息,避免因为写入日志出现异常导致系统访问受阻 + 事务最终一致性:通过一条消息的改变,然后将其它受影响的变更加入到消息队列中,由对应的系统去处理消息队列中的消息变更,例如订单系统和库存系统,当成交了一条订单时,除了要记录订单的信息,还需要操作库存的变更,而它们是属于两个独立的系统,常规的数据库事务就无法满足事务的一致性了,这时就可以采用消息队列,将库存的变更加入消息队列中,让库存系统去消费消息队列的消息,但这好像和事务没有关系,这里会涉及到消息队列的事件表和消息队列的分布式事务,详细请见???? ## 3. 消息队列的功能特点 + 消息堆积:处理方式是设置上限阈值,超过阈值不再往消息处理中心添加消息了 + 消息持久化:可以将消息存放在本地文件,分布式文件系统或数据库系统中 + 可靠投递:不允许存在消息丢失的情况,会发生消息丢失的三种情况 - 从生成者到消息处理中心 - 从消息处理中心到消息消费者 - 消息处理中心持久化消息 + 消息重复:将持久化后的信息发生给消费者时,消息状态为待发送,如果采用了轮询的方式给消费者发送,恰巧碰发送超时,就可能会造成消息重复,给消费者重复投递消息 + 严格有序:指的是消息产生的时间顺序,例如创建订单,支付完成,已发货,已收货,这里每个环节都可以产生消息,但它们会要求按顺序消费消息,不会创建订单后跳过支付完成,已发货的消息处理,直接消费已收货的消息 + 集群:消息队列也是支持集群的,一个消息节点故障不能影响这个系统的运行,集群之间的多个节点还能够共享负载,出现节点故障时会自动的进行负载均衡 + 消息中间件:MOM,中间件位于用户应用和操作系统及网络软件之间,它为应用提供了公用的通信手段,并且独立于网络和操作系统。消息中间件关注于数据的发送和接收,利用高效、可靠的异步消息传递机制集成分布式系统。最常用的消息中间件就是IBM消息中间件MQ,它具备了稳定性,可扩展性和跨平台性。
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号