随笔分类 -  消息中间件

摘要:消息队列作为系统解耦,流量控制的利器,成为分布式系统核心组件之一。 如果你对消息队列背后的实现原理关注不多,其实了解消息队列背后的实现非常重要。 不仅知其然还要知其所以然,这才是一个优秀的工程师需要具备的特征。 今天,我们就一起来探讨设计一个消息队列背后的技术。 消息队列整体设计思路 主要是设计一个 阅读全文
posted @ 2019-12-02 20:39 windpoplar 阅读(894) 评论(0) 推荐(0)
摘要:今天我们一起来探讨: 全量的消息队列究竟有哪些? Kafka、RocketMQ、RabbitMQ的优劣势比较 以及消息队列的选型 最全MQ消息队列有哪些 那么目前在业界有哪些比较知名的消息引擎呢?如下图所示 这里面几乎完全列举了当下比较知名的消息引擎,包括: ZeroMQ 推特的Distribute 阅读全文
posted @ 2019-12-02 20:22 windpoplar 阅读(780) 评论(0) 推荐(0)
摘要:大量消息在 mq 里积压了几个小时了还没解决 几千万条数据在 MQ 里积压了七八个小时,从下午 4 点多,积压到了晚上 11 点多。这个是我们真实遇到过的一个场景,确实是线上故障了,这个时候要不然就是修复 consumer 的问题,让它恢复消费速度,然后傻傻的等待几个小时消费完毕。这个肯定不能在面试 阅读全文
posted @ 2019-05-25 12:55 windpoplar 阅读(1860) 评论(0) 推荐(0)
摘要:1. 问题 比如说我们建了一个 topic,有三个 partition。生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到同一个 partition 中去,而且这个 partition 中的数据一定是有顺序的。消费者从 p 阅读全文
posted @ 2019-04-21 23:19 windpoplar 阅读(34338) 评论(14) 推荐(0)
摘要:1.消费端弄丢了数据 唯一可能导致消费者弄丢数据的情况,就是说,你消费到了这个消息,然后消费者那边自动提交了 offset,让 Kafka 以为你已经消费好了这个消息,但其实你才刚准备处理这个消息,你还没处理,你自己就挂了,此时这条消息就丢咯。 这不是跟 RabbitMQ 差不多吗,大家都知道 Ka 阅读全文
posted @ 2019-04-21 22:09 windpoplar 阅读(7431) 评论(1) 推荐(1)
摘要:比如你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入了,update 一下好吧。(高并发会有问题) 比如你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。 比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的 id,类似 阅读全文
posted @ 2019-04-21 21:46 windpoplar 阅读(3365) 评论(0) 推荐(0)
摘要:一、术语 1.1 Broker Kafka 集群包含一个或多个服务器,服务器节点称为broker。 broker存储topic的数据。 如果某topic有N个partition,集群有N个broker,那么每个broker存储该topic的一个partition。 如果某topic有N个partit 阅读全文
posted @ 2019-04-21 21:06 windpoplar 阅读(2315) 评论(0) 推荐(0)
摘要:1.消息队列的优点 1)解耦 场景:当A系统需要发送数据到BCD三个系统时。 如果使用接口调用,A系统是和BCD系统耦合在一起的,需要考虑BCD系统挂了怎么办?BCD系统消费失败怎么办?如果E系统也需要这个数据?如果B系统现在不需要这个数据? 如果使用MQ,A系统产生的数据,只要保证消息成功发送到M 阅读全文
posted @ 2019-04-21 12:04 windpoplar 阅读(2593) 评论(0) 推荐(0)