以下个人总结,如有错误,请以官网为准
如果错误,欢迎指出
Kafka 解决了什么问题:
-
系统解耦(异步)
在复杂的分布式系统中,需要将系统拆解为多个小系统,小系统之间通过RPC通讯调用。
在复杂的调用链中,总是会出现前面的系统等待后面的系统的结果,这是由于各系统间的处理信息的速度不一致导致。
如果使用Kafka,就可以做到发送消息给kafka后就返回消息给用户,然后后面的系统异步的去处理。
-
削峰
在秒杀的系统中就需要减少后面系统处理消息的数量,不然就会崩溃。有人会问,难道Kafka就不会崩溃,理论它是什么也没做只是收发数据,所以肯定是比业务系统的能力强的。但是Kafka也不是神,它也是会有扛不住的情况。这个概念是相对的。
从哪些方面学习Kafka
一条消息的旅途
1.生产消息
2.消息分区策略(消息该何去何从)
3.消息的存储机制(消息到达Kafka中后怎么解决存储的问题)
4.消息的副本同步机制(消息怎么解决安全性的问题)
5.HW(水位线)(消息怎么解决一致性的问题)
6.消费消息(我走了,我去了哪里)
一些细节
7.幂等性(怎么保证每条消息刚好只来一次)
8.事务(怎么保证生产,临时保存,消费的原子性)
9.Leader选举(分布式系统必然会有Master,Leader,因为需要其中一个节点来统筹管理一些事情)
10.为什么Kafka快?
11.如何保证消息的不丢失