- kafka是一个分布式的消息缓存系统
- kafka集群中的服务器都叫做broker
- kafka有两类客户端,一类叫producer(消息生产者),一类叫做consumer(消息消费者),客户端和broker服务器之间采用tcp协议连接
- kafka中不同业务系统的消息可以通过topic进行区分,而且每一个消息topic都会被分区,以分担消息读写的负载
- 每一个分区都可以有多个副本,以防止数据的丢失
- 某一个分区中的数据如果需要更新,都必须通过该分区所有副本中的leader来更新
- 消费者可以分组,比如有两个消费者组A和B,共同消费一个topic:order_info,A和B所消费的消息不会重复,比如 order_info 中有100个消息,每个消息有一个id,编号从0-99,那么,如果A组消费0-49号,B组就消费50-99号
- 消费者在具体消费某个topic中的消息时,可以指定起始偏移量
kafka集群官网地址:http://kafka.apache.org/quickstart
整体结构图如下:
1、m2机器上解压kafka
2、进入config目录,修改server.properties文件,主要修改broker.id,每台机器应该保证不一样,修改zookeeper.connect为m6,m7m8组成的zookeeper集群
#必须是唯一的数字
broker.id=0
#zookeeper地址,多个使用逗号分隔
zookeeper.connect=m6:2181,m7:2181,m8:2181
3、拷贝kafka到m3、m4机器上
4、分别修改m3、m4上配置文件server.properties中的broker.id
5、启动zookeeper集群
6、启动kafka broker节点,启动命令为: ./bin/kafka-server-start.sh ./config/server.properties,每台机器分别执行这个命令,这种启动方式是在前台启动,如果需要在后台启动执行:./bin/kafka-server-start.sh ./config/server.properties 1>/dev/null 2>&1 &
7、停止kafka:./bin/kafka-server-stop.sh ./config/server.properties
错误集锦
kafka.common.InconsistentBrokerIdException: Configured broker.id 1 doesn't match stored broker.id 0 in meta.properties. If you moved your data, make sure your configured broker.id matches. If you intend to create a new broker, you should remove all data in your data directories (log.dirs).
问题原因
没有修改broker.id直接启动,后来发现错误,修改broker.id出现上述错误
解决方法
cat ./config/server.properties | grep log.dirs
删除上句话显示的目录下的所有文件