摘要: 1. 问题 比如说我们建了一个 topic,有三个 partition。生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到同一个 partition 中去,而且这个 partition 中的数据一定是有顺序的。消费者从 p 阅读全文
posted @ 2019-04-21 23:19 windpoplar 阅读(34211) 评论(14) 推荐(0) 编辑
摘要: 1.消费端弄丢了数据 唯一可能导致消费者弄丢数据的情况,就是说,你消费到了这个消息,然后消费者那边自动提交了 offset,让 Kafka 以为你已经消费好了这个消息,但其实你才刚准备处理这个消息,你还没处理,你自己就挂了,此时这条消息就丢咯。 这不是跟 RabbitMQ 差不多吗,大家都知道 Ka 阅读全文
posted @ 2019-04-21 22:09 windpoplar 阅读(7240) 评论(1) 推荐(1) 编辑
摘要: 比如你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入了,update 一下好吧。(高并发会有问题) 比如你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。 比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的 id,类似 阅读全文
posted @ 2019-04-21 21:46 windpoplar 阅读(3338) 评论(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 阅读(2240) 评论(0) 推荐(0) 编辑
摘要: 1.消息队列的优点 1)解耦 场景:当A系统需要发送数据到BCD三个系统时。 如果使用接口调用,A系统是和BCD系统耦合在一起的,需要考虑BCD系统挂了怎么办?BCD系统消费失败怎么办?如果E系统也需要这个数据?如果B系统现在不需要这个数据? 如果使用MQ,A系统产生的数据,只要保证消息成功发送到M 阅读全文
posted @ 2019-04-21 12:04 windpoplar 阅读(2517) 评论(0) 推荐(0) 编辑