消息总线之kafka

继上一篇消息总线之zookeeper之后,终于到部署 kafka 了,如果不记得上一篇描述的目录结构,那... 怪我咯?

注意,这里用的 kafka 版本是 0.10 版,之前版本的配置跟这个版本不一样。

在部署了三个 zk 实例并形成集群之后,接下来也部署三个 kafka 实例,这里有个比较有意思的点,启动 kafka 的时候,我发现第一个实例总是会先看看有没有其他实例,没有话直接把自己当成 leader 了,后来跟上的全是小弟。( 第 n + 1 ( n > 0 ) 个节点:好气哦,可我要保持微笑! )

config 目录下的 server.properties 是 kafka 的配置,其中有几项比较重要的属性

  • listeners ---> 这是客户端连接的 host:port,你不填默认就监听 9092,伪集群下多实例会有端口冲突
  • advertised.listeners ---> 这也是客户端连接的 host:port,不过这个客户端对的是 follower 而不是用户,可以用和 listeners 一样的配置
  • zookeeper.connect ---> 这是连接到 zk 的配置,不用多说
  • broker.id ---> 这是 kafka 单个 broker 的 id,不可重复

更多属性,这有篇官网翻译的配置表可以查看。
别费力气去找度娘了,度娘给你找的全是 0.8 or 0.9 版的配置,嗮心机挨眼瞓。

什么,你不知道 kafka 的设计?来戳这里。就像 47 所言,知己知彼就是完成任务的50%。如果还不够,其实上面的配置表就是官网文档翻译的一部分,那有一整套翻译的说明文。

在正确配置上述属性之后,先来创建个频道( 有人叫频道,有人叫事件,有人叫channel,who TM care? just running it )。我这里创建一个 testing 的频道。
kafka-topic --create --zookeeper zk-node0:3010,zk-node1:3110,zk-node2:3210 --replication-factor 3 --partitions 3 --topic testing

其中:

  • --zookeeper ---> 指定 zk 实例
  • --replication-factor ---> 指定一条消息在多少个 broker 上复制,一般有多少个 broker ( 就是 kafka 实例的数量 ) 就写多少
  • --partitions 指定一条消息分成多少 log

然后分别启动 kafka producer & consumer
kafka-console-producer --broker-list kafka-node:4000 --topic testing
kafka-console-consumer --zookeeper zk-node1:3010 --topic testing --from-beginning

注意这两条指令的区别,第一条是连接生产者,给出的是 kafka 的实例地址,第二天连接消费者,给出的是 zk 的实例地址。

好了,连上后如果随便写条消息,如果推得动就说明成功了。

producer 推出一条叫 wei 的消息
consumer 收到一条叫 wei 的消息

等等,怎么 consumer 收到那么多消息? producer 只发了一条哎?!
这是因为 kafka 本身就是把消息写在硬盘上的,消息默认存活期是100多个小时,具体时间在 server.properties 有写。

到这里 kafka 的部署就完成啦。

你可能感兴趣的:(消息总线之kafka)