2.6.5 RabbitMQ — 业务场景详解
- 异步处理
- 应用解耦
- 流量削锋
- 日志处理
异步处理
- 串行方式
- 并行方式
- 异步方式
串行方式
_userRepo.Add(user);_emailService.Send(user);_smsService.Send(user);
并行方式
_userRepo.Add(user);var emailTask = _emailService.Send(user);var smsTask = _smsService.Send(user);await Task.WhenAll(emailTask, smsTask)
异步方式
var user = await _userRepo.Add(user);_eventBus.publish(new UserRegisteredEvent(){ userId = user.Id })return user;
应用解耦
订单系统 调用 库存系统
改为
订单系统 写入 消息队列
库存系统 订阅 消息队列
实现解耦
流量削锋
用户的请求,服务器接收后,首先写入消息队列。假如消息队列的长度超过最大数量,则直接抛弃用户请求或跳转到错误页面
秒杀业务根据消息队列中的请求信息,再做后续处理
日志处理
kafka:接收用户日志的消息队列
Logstash:日志解析,统一成 JSON 输出给 Elasticsearch
Elasticsearch:实时日志分析服务的核心技术,一个 schemaless,实时 的数据存储服务,通过 index 组织数据,兼具强大的搜索和统计功能
Kibana:基于 Elasticsearch 的数据可视化组件,超强的数据可视化能力是众多公司选择 ELK stack 的重要原因
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。