前景概要:
我们在使用mq的时候肯定是希望数据不能多也不能少的,不能多即需要考虑mq的重复消费(幂等性)问题。不能少即不能丢失数据。
很明显如果如果你的mq中存放的是非常核心、重要的数据,比如订单数据、积分流水等,
这些数据是必须不能丢的,一旦丢失则会造成数据的一致性问题,可能会给公司带来极大损失。
丢失数据分析:
丢失数据一般来说分为2种情况,一种是数据已经发送到了mq,但是mq自身把数据弄丢了,第二种是我们在消费的时候把数据弄丢了,接下来简单从rabbitmq和kafka来分析一下。
tips根据之前的使用场景来看,一般rabbitmq都会存放一些比较核心业务的数据,理论上是不能弄丢的;
kafka一般用于大数据领域,承载较多的可能是一些日志数据。
(1)RabbitMq
1)生产者丢失数据
关键点:rabbitmq开启confirm确认机制后,rabbitmq通过异步回调的形式告诉生产者是否已接收到。
生产者将数据发送到rabbitmq的时候,可能数据就在半路给丢了,因为网络问题或者机宕机问题等都有