关于kafka的原理和使用

一、kafka的特性

  1. 高吞吐量,低延迟:kafka每秒可以处理几十万条信息,它的延迟最低只有几毫秒。每个topic可以分为多个partition,consume group 对partition进行消费。
  2. 可扩展性:kafka集群支持热扩展。
  3. 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)。
  4. 高并发:支持上千个客户端并发访问。

二、kafka的使用场景

1. 日志收集:收集各服务日志,以统一接口。
2. 消息系统:解耦生产者和消费者,缓存消息等。
3. 用户活动跟踪:用户在各个服务器中的活动统一发至kafka,由消费者进行统一收集和分析。
4. 运用指标:用于记录运营监控数据。
5. 流式处理。
6. 事件源。

三、kafka的设计思想

  1. kafka broker leader:所有的kafka broker节点一起去服务注册中心(zookeeper)注册,注册成功的这个节点被称为kafka broker controller,其它节点则成为kafka broker follower。这个controller会监听其它follower的所有信息。一旦controller宕机,zookeeper会通知其它follower进行新一轮选举。
  2. 分布式消费:消息分布式存在每个partition中,同一条消息只可以被同一个group的一个consumer消费,但却可以被多个不同group的consumer消费。一个topic拥有多个partition,kafka会把一个topic下的所有partition rebalance至每个订阅此topic的consumer,但一个partition只能属于一个consumer,一个consumer可以有多个partiotion。因此,当consumer数量大于partition数量的时候,会有闲置的consumer分配不到partiion从而浪费资源。

猜你喜欢

转载自blog.csdn.net/qq_28665631/article/details/80507114