Kafka.01 - 简介
什么是消息队列
在实际生活中,经常会出现上下游系统之间任务产生和处理速率不匹配的情况,比如秒杀时,大量用户进入,但服务处理速度较慢,无法及时处理用户请求。这个时候就需要有一个游离于服务之外的中间件来协助处理这件事。而消息队列就是这样一个中转站,用于暂存部分待处理的数据,保证下游系统的稳定运行,也就是业内常说的削峰填谷。
什么是 Kafka
Kafka 是一个消息系统,由 LinkedIn 于 2011 年设计开发,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。
Kafka 是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:
以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上数据也能保证常数时间复杂度的访问性能。
高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条以上消息的传输。
支持 Kafka Server 间的消息分区,及分布式消费,同时保证每个 Partition 内的消息顺序传输。
同时支持离线数据处理和实时数据处理。
Scale out:支持在线水平扩展。
如今,Kafka 基本上已成为消息队列的事实标准。
基础概念
Broker:Kafka 集群包含一个或多个服务器,这种服务器被称为 broker。
Topic(主题):每条发布到 Kafka 集群的消息都有一个类别,这个类别被称为 Topic。(物理上不同 Topic 的消息分开存储,逻辑上一个 Topic 的消息虽然保存于一个或多个 broker 上,但用户只需指定消息的 Topic 即可生产或消费数据而不必关心数据存于何处)。
Partition(分区):Partition 是物理上的概念,每个 Topic 包含一个或多个 Partition。每个 Topic 的一个 Partition 对应一个文件。
Producer(生产者):负责发布消息到 Kafka broker。
Consumer:消息消费者,向 Kafka broker 读取消息的客户端。
Consumer Group(消费组):每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)。同一主题的一条信息只能被同一消费组下某一个消费者消费,不同消费组的消费者可以同时消费该信息。因此,通过消费组的概念,可以实现对主题信息的广播和单播。
版权声明: 本文为 InfoQ 作者【insight】的原创文章。
原文链接:【http://xie.infoq.cn/article/9a77e7f3807e431828e106435】。文章转载请联系作者。
评论