一. 消息中间件
1. 概念
没有标准定义,一般认为,采用消息传送机制/消息队列 的中间件技术,进行数据交流,用在分布式系统的集成
作用:消息中间件解决了分布式系统之间消息的传递。
RPC:远程过程调用协议
RPC和消息中间件的选用/区分标准:
a.系统之间的依赖程度
b.量(业务量,数据量,访问量)
2. 使用场景
a. 异步处理
需求: 用户注册,注册完成后需要发短信,发邮件,通知用户。
方案一: 串行:用户注册--->发送短信--->发送邮件
方案二:并行:用户注册--|==(发送短信、发送邮件)
方案三:消息中间件:用户注册--->通知消息中间件发送短信,邮件||--->由消息中间件异步发送短信/邮件
b. 应用解耦
需求:订单系统和库存系统的关系。
关系一:订单系统直接对接库存系统,形成强耦合,库存系统奔溃直接影响到订单系统。
关系二:订单系统通过消息中间件对接库存系统,形成解耦,库存系统出问题不会导致订单系统不可用。
c. 流量削峰
需求:流量过大,对系统的冲击比较大。如秒杀系统
方案一:用户请求--->秒杀系统(直接面对大流量,可能处理不过来)
方案二:用户请求--->消息中间件的消息队列(负责存)<--- 秒杀系统(负责取,按一定的规则逐个处理请求,不需要直接面对大流量)
d. 日志处理
需求:日志处理程序
场景一:错误日志--->消息队列(负责存)<---日志处理程序(负责取数据,逐条处理)
场景二:用户的行为日志--->消息队列<---日志的流式处理或存储。
3. 常见消息中间件的比较
