Kafka消息中间件相关
Kafka消息中间件实现几十万QPS的原理
- 磁盘顺序写:写磁盘是以文本追加的方式
[append-only]
- 页缓存技术:不是直接写磁盘,并且写入操做系统层面的os cache
- 零拷贝技术:若是os cache有从os cache里取,不然从磁盘取,直接发送到网卡,不须要其余拷贝的操做
Kafka消息中间件实现消息不丢失
- 分布式存储:大量的数据不能单单存储在一台服务器上,能够将一个topic的数据经过Partition来分发到多个服务器上;
- 高可用架构:每一个Partition的数据均可以有副本,主Partition成为Leader,副本成为Follower,副本在其余服务器,当Leader所在的服务器宕机,Follower会提高为Leader;
- 防止数据丢失问题ISR机制: (1)场景:假设一条数据到了Leader,Follewer还没来得同步数据,Leader全部的主机或者Leader自己的线程宕机,这时候Follower就会提高为Leader,这时候就会丢失了那条数据。 (2)ISR机制解决方案:自动给每一个Partition维护一个ISR列表,这个列表里必定会有Leader,而后还会包含跟Leader保持同步的Follower,假设场景(1)出现了,这时候ISR列表里面的Leader就会被踢掉
Kafka写数据流程
- 每一个Partition都至少得有1个Follower在ISR列表里,跟上了Leader的数据同步
- 每次写入数据的时候,都要求至少写入Partition Leader成功,同时还有至少一个ISR里的Follower也写入成功,才算这个写入是成功了
- 若是不知足上述两个条件,那就一直写入失败,让生产系统不停的尝试重试,直到知足上述两个条件,而后才能认为写入成功
- 按照上述思路去配置相应的参数,才能保证写入Kafka的数据不会丢失
欢迎关注本站公众号,获取更多信息