消息总线之kafka

作者: itfinally | 来源:发表于2017-06-28 10:42 被阅读0次

    继上一篇消息总线之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

        本文链接:https://www.haomeiwen.com/subject/xeyecxtx.html