Kafka消息中间件相关

Kafka消息中间件实现几十万QPS的原理

  1. 磁盘顺序写:写磁盘是以文本追加的方式[append-only]
  2. 页缓存技术:不是直接写磁盘,而且写入操作系统层面的os cache
  3. 零拷贝技术:如果os cache有从os cache里取,否则从磁盘取,直接发送到网卡,不需要其他拷贝的操作

Kafka消息中间件实现消息不丢失

  1. 分布式存储:大量的数据不能单单存储在一台服务器上,可以将一个topic的数据通过Partition来分发到多个服务器上;
  2. 高可用架构:每个Partition的数据都可以有副本,主Partition成为Leader,副本成为Follower,副本在其他服务器,当Leader所在的服务器宕机,Follower会提升为Leader;
  3. 防止数据丢失问题ISR机制: (1)场景:假设一条数据到了Leader,Follewer还没来得同步数据,Leader所有的主机或者Leader本身的线程宕机,这时候Follower就会提升为Leader,这时候就会丢失了那条数据。 (2)ISR机制解决方案:自动给每个Partition维护一个ISR列表,这个列表里一定会有Leader,然后还会包含跟Leader保持同步的Follower,假设场景(1)出现了,这时候ISR列表里面的Leader就会被踢掉

Kafka写数据流程

  1. 每个Partition都至少得有1个Follower在ISR列表里,跟上了Leader的数据同步
  2. 每次写入数据的时候,都要求至少写入Partition Leader成功,同时还有至少一个ISR里的Follower也写入成功,才算这个写入是成功了
  3. 如果不满足上述两个条件,那就一直写入失败,让生产系统不停的尝试重试,直到满足上述两个条件,然后才能认为写入成功
  4. 按照上述思路去配置相应的参数,才能保证写入Kafka的数据不会丢失

猜你喜欢

转载自blog.csdn.net/weixin_34062469/article/details/91395100