Kafka Basic
Kafka 简介
Kafka是最初由Linkedin公司开发,是一个分布式、分s区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
主要应用场景是:日志收集系统和消息系统。
Kafka主要设计目标如下:
- 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。
- 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。
- 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。
- 同时支持离线数据处理和实时数据处理。
- 支持在线水平扩展
官方简介:http://kafka.apache.org/intro
Kafka架构:
存储机制:
topic
: 可以理解为一个消息队列的名字
partition
:为了实现扩展性,一个非常大的topic可以分布到多个 broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列
segment
:partition物理上由多个segment组成
message
:每个segment文件中实际存储的每一条数据就是message
offset
:每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中,partition中的每个消息都有一个连续的序列号叫做offset,用于partition唯一标识一条消息
Kafka 安装与部署
单机部署(single broker)
- 首先从官方下载站点获取所需版本的二进制包并解压缩:
- 启动服务:
Kafka依赖于ZooKeeper
服务器,可以使用 kafka 附带的脚本来启动单节点 ZooKeeper 实例:
现在,启动Kafka
服务:
- 创建一个
topic
:
查看当前运行的topic
有哪些:
- 发送一些信息:
Kafka带有一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到 Kafka 集群。默认情况下,每行将作为单独的消息发送:
- 启动一个消费者
consumer
:
集群部署(Mutil-broker)
因手头资源有限,故用单台主机模拟集群。
- 首先,为每一个
broker
创建一个配置文件:
分别修改这些文件的以下属性:
为其创建日志文件夹,mkdir -p /data/kafka/{logs-1,logs-2,logs-3}
- 分别启动这三个 broker:
- 创建
topic
(指定副本数量为3):
查看所有的topic
列表信息:
查看特定 topic 的详细信息:
- 发送一些信息到
topic
:
消费这些信息:
:information_source: 测试leader
宕掉:
leader
节点已切换到observer
之一,并且该节点不再位于同步副本集中:
但是此前发送的信息依然存在:
附:server.properties
参数说明
不同节点之间只需要修改server.properties
的 broker.id
即可。
参考链接