Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
醒狮指南
JavaGuide
提交
65b82e5b
J
JavaGuide
项目概览
醒狮指南
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
65b82e5b
编写于
12月 15, 2018
作者:
S
SnailClimb
提交者:
GitHub
12月 15, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update message-queue.md
上级
e86db992
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
4 addition
and
1 deletion
+4
-1
计算机网络与数据通信/message-queue.md
计算机网络与数据通信/message-queue.md
+4
-1
未找到文件。
计算机网络与数据通信/message-queue.md
浏览文件 @
65b82e5b
...
@@ -44,6 +44,7 @@
...
@@ -44,6 +44,7 @@
通过以上分析我们可以得出
**消息队列具有很好的削峰作用的功能**
——即
**通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。**
举例:在电子商务一些秒杀、促销活动中,合理使用消息队列可以有效抵御促销活动刚开始大量订单涌入对系统的冲击。如下图所示:
通过以上分析我们可以得出
**消息队列具有很好的削峰作用的功能**
——即
**通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。**
举例:在电子商务一些秒杀、促销活动中,合理使用消息队列可以有效抵御促销活动刚开始大量订单涌入对系统的冲击。如下图所示:
![
合理使用消息队列可以有效抵御促销活动刚开始大量订单涌入对系统的冲击
](
https://user-gold-cdn.xitu.io/2018/4/21/162e64583dd3ed01?w=780&h=384&f=jpeg&s=13550
)
![
合理使用消息队列可以有效抵御促销活动刚开始大量订单涌入对系统的冲击
](
https://user-gold-cdn.xitu.io/2018/4/21/162e64583dd3ed01?w=780&h=384&f=jpeg&s=13550
)
因为
**用户请求数据写入消息队列之后就立即返回给用户了,但是请求数据在后续的业务校验、写数据库等操作中可能失败**
。因此使用消息队列进行异步处理之后,需要
**适当修改业务流程进行配合**
,比如
**用户在提交订单之后,订单数据写入消息队列,不能立即返回用户订单提交成功,需要在消息队列的订单消费者进程真正处理完该订单之后,甚至出库后,再通过电子邮件或短信通知用户订单成功**
,以免交易纠纷。这就类似我们平时手机订火车票和电影票。
因为
**用户请求数据写入消息队列之后就立即返回给用户了,但是请求数据在后续的业务校验、写数据库等操作中可能失败**
。因此使用消息队列进行异步处理之后,需要
**适当修改业务流程进行配合**
,比如
**用户在提交订单之后,订单数据写入消息队列,不能立即返回用户订单提交成功,需要在消息队列的订单消费者进程真正处理完该订单之后,甚至出库后,再通过电子邮件或短信通知用户订单成功**
,以免交易纠纷。这就类似我们平时手机订火车票和电影票。
### (2) 降低系统耦合性
### (2) 降低系统耦合性
...
@@ -51,8 +52,10 @@
...
@@ -51,8 +52,10 @@
我们知道如果模块之间不存在直接调用,那么新增模块或者修改模块就对其他模块影响较小,这样系统的可扩展性无疑更好一些。
我们知道如果模块之间不存在直接调用,那么新增模块或者修改模块就对其他模块影响较小,这样系统的可扩展性无疑更好一些。
我们最常见的
**事件驱动架构**
类似生产者消费者模式,在大型网站中通常用利用消息队列实现事件驱动结构。如下图所示:
我们最常见的
**事件驱动架构**
类似生产者消费者模式,在大型网站中通常用利用消息队列实现事件驱动结构。如下图所示:
![
利用消息队列实现事件驱动结构
](
https://user-gold-cdn.xitu.io/2018/4/21/162e6665fa394b3b?w=790&h=290&f=jpeg&s=14946
)
![
利用消息队列实现事件驱动结构
](
https://user-gold-cdn.xitu.io/2018/4/21/162e6665fa394b3b?w=790&h=290&f=jpeg&s=14946
)
**消息队列使利用发布-订阅模式工作,消息发送者(生产者)发布消息,一个或多个消息接受者(消费者)订阅消息。**
从上图可以看到
**消息发送者(生产者)和消息接受者(消费者)之间没有直接耦合**
,消息发送者将消息发送至分布式消息队列即结束对消息的处理,消息接受者从分布式消息队列获取该消息后进行后续处理,并不需要知道该消息从何而来。
**对新增业务,只要对该类消息感兴趣,即可订阅该消息,对原有系统和业务没有任何影响,从而实现网站业务的可扩展性设计**
。
**消息队列使利用发布-订阅模式工作,消息发送者(生产者)发布消息,一个或多个消息接受者(消费者)订阅消息。**
从上图可以看到
**消息发送者(生产者)和消息接受者(消费者)之间没有直接耦合**
,消息发送者将消息发送至分布式消息队列即结束对消息的处理,消息接受者从分布式消息队列获取该消息后进行后续处理,并不需要知道该消息从何而来。
**对新增业务,只要对该类消息感兴趣,即可订阅该消息,对原有系统和业务没有任何影响,从而实现网站业务的可扩展性设计**
。
消息接受者对消息进行过滤、处理、包装后,构造成一个新的消息类型,将消息继续发送出去,等待其他消息接受者订阅该消息。因此基于事件(消息对象)驱动的业务架构可以是一系列流程。
消息接受者对消息进行过滤、处理、包装后,构造成一个新的消息类型,将消息继续发送出去,等待其他消息接受者订阅该消息。因此基于事件(消息对象)驱动的业务架构可以是一系列流程。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录