消息队列(Message Queue),简称为MQ,是一种跨进程的通信机制,用于上下游传递消息。常见消息队列中间件如:Kafka、ActiveMQ、RabbitMQ、RocketMQ等。
消息队列引入对系统的优势
解耦
在未使用消息队列的系统中,系统间耦合性太强。如下图所示的业务场景,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入或者B系统取消,系统A还需要修改代码,造成系统风险。
在这个场景中,A系统与其它的系统严重耦合,A系统要考虑各个下游系统如果挂掉的话的失败重试或兜底策略。
异步
在未使用消息队列的系统中,一些非必要的业务逻辑以同步的方式运行,耗费大量时间。
数据处理考虑
大量数据处理时候的消息应该怎么发?
例如下面的这个表格,我们在爬虫的时候能够把整个数据爬取下来。
这个表格的数据可能有 20 多万条记录,当然我们是可用把这 20 多万条的数据全部拼装成一个 JSON 数据格式发送到后端。
在这种处理方式的时候,我们发现需要用到批量,因为要涉及查重和约束等操作。
在整个过程中很容易出现异常后到这整个数据都没有被办法导入。
针对这种数据情况,我们认为消息应该是获得单一的记录拼装发到消息服务器上。
简单的来说就是把一个大数据进行拆分后发送。