分布式消息系统Kafka初步

Kafka集群配置比较简单,为了更好的让大家理解,在这里要分别介绍下面三种配置

  • 单节点:一个broker的集群
  • 单节点:多个broker的集群
  • 多节点:多broker集群

一、单节点单broker实例的配置

1.首先启动zookeeper服务

Kafka本身提供了启动zookeeper的脚本(在kafka/bin/目录下)和zookeeper配置文件(在kafka/config/目录下),首先进入Kafka的主目录(可通过 whereis kafka命令查找到):

   [root@localhost kafka-0.8]# bin/zookeeper-server-start.sh config/zookeeper.properties

zookeeper配置文件的一些重要属性:

 # Data directory where the zookeeper snapshot is stored.

     

dataDir=/tmp/zookeeper

     # The port listening for client request

     

clientPort=2181

默认情况下,zookeeper服务器会监听 2181端口,更详细的信息可去zookeeper官网查阅。

2.启动Kafka broker

运行kafka提供的启动kafka服务脚本即可:

 [root@localhost kafka-0.8]# bin/kafka-server-start.sh config/server.properties

broker配置文件中的重要属性:

 # broker的id. 每个broker的id必须是唯一的.

     

 Broker.id=0

     # 存放log的目录

     

 log.dir=/tmp/kafka8-logs

     # Zookeeper 连接串

     

zookeeper.connect=localhost:2181

3.创建一个仅有一个Partition的topic

[root@localhost kafka-0.8]# bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic kafkatopic

4.用Kafka提供的生产者客户端启动一个生产者进程来发送消息

[root@localhost kafka-0.8]# bin/kafka-console-producer.sh --broker-list  localhost:9092 --topic kafkatopic

其中有两个参数需要注意:

  • broker-list:定义了生产者要推送消息的broker地址,以<IP地址:端口>形式     
  • topic:生产者发送给哪个topic

然后你就可以输入一些消息了,如下图:

5.启动一个Consumer实例来消费消息

 [root@localhost kafka-0.8]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic kafkatopic --from-beginning

当你执行这个命令之后,你便可以看到控制台上打印出的生产者生产的消息:

和消费者相关的属性配置存放在Consumer.properties文件中,重要的属性有:

     # consumer的group id (A string that uniquely identifies a set of consumers

     # within the same consumer group) 

     

 groupid=test-consumer-group

     # zookeeper 连接串

     

zookeeper.connect=localhost:2181

二、单节点运行多broker实例

1.启动zookeeper

和上面的一样

2.启动Kafka的broker

要想在一台机器上启动多个broker实例,只需要准备多个server.properties文件即可,比如我们要在一台机器上启动两个broker:

首先我们要准备两个server.properties配置文件

  1. server-1
    1. brokerid=1
    2. port=9092
    3. log.dir=/temp/kafka8-logs/broker1    
  2. server-2
    1. brokerid=2
    2. port=9093
    3. log.dir=/temp/kafka8-logs/broker2 

然后我们再用这两个配置文件分别启动一个broker

 [root@localhost kafka-0.8]# env JMX_PORT=9999 bin/kafka-server-start.sh config/server-1.properties

     [root@localhost kafka-0.8]# env JMX_PORT=10000 bin/kafka-server-start.sh config/server-2.properties

可以看到我们启动是为每个broker都指定了不同的JMX Port,JMX Port主要用来利用jconsole等工具进行监控和排错

3.创建一个topic

现在我们要创建一个含有两个Partition分区和2个备份的broker:

 [root@localhost kafka-0.8]# bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 2 --partition 2 --topic othertopic

4.启动Producer发送消息

如果我们要用一个Producer发送给多个broker,唯一需要改变的就是在broker-list属性中指定要连接的broker:

[root@localhost kafka-0.8]# bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093 --topic othertopic

如果我们要让不同的Producer发送给不同的broker,我们也仅仅需要为每个Producer配置响应的broker-list属性即可。

5.启动一个消费者来消费消息

和之前的命令一样

[root@localhost kafka-0.8]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic othertopic --from-beginning

三、集群模式(多节点多实例)

      介绍了上面两种配置方法,再理解集群配置就简单了,比如我们要配置如下图所示集群:

zookeeper配置文件(zookeeper.properties):不变

broker的配置配置文件(server.properties):按照单节点多实例配置方法在一个节点上启动两个实例,不同的地方是zookeeper的连接串需要把所有节点的zookeeper都连接起来

  # Zookeeper 连接串

        

zookeeper.connect=node1:2181,node2:2181

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值