.NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ 业务场景详解)--学习笔记

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 的重要原因

上一篇:【最佳实践】Elasticsearch Java Rest Client快速上手(附完整示例代码包)


下一篇:css案例学习之id要唯一