kafka

文章介绍了Kafka作为有broker的消息队列,强调了Topic的重要性。Kafka的Topic可分区,以实现读写并行。消费者可以按单播或多播模式工作。接着,文章详细阐述了搭建Kafka集群的过程,包括创建副本和选举leader的概念。
摘要由CSDN通过智能技术生成

一、消息队列的流派

  • 有broker的MQ
    • 重Topic(必须有topic) :kafka
    • 轻Topic
  • 无broker的MQ

 二、kafka基本概念

三、demo——生产者和消费者——单机

官方demo;:Apache Kafka

        消费者有两种消费的方式,如下:

        就像我们进群一样,有的刚进来以后只能看见进群之后的消息;有的可以看到全部历史群聊。

        既然“历史群聊”也可以被看见,那就说明消息不是和socket通信一样发完以后关掉server和client就没有了的,而是被保存了下来。对的,以日志的形式保存在kafka服务器上。具体位置可以自己指定。

         有个问题,“历史聊天记录”太多,多达几个T,一个磁盘放不下怎么办?这就引出了Topic分区。

3.1 Topic分区

除了能让磁盘放下之外,分区还有一个好处。之前只放在一个文件的时候,一次只能有一个producer去写这个文件,但是分区以后, 读写可以并行了!

如何指定创建几个分区:把一个topic分成几个区在创建topic的时候用命令参数--partitions 去指定 

3.2 单播和多播(其实是一个东西)

单播:对于同一个consumerGroup里订阅了同一个topic的消费者们,只有一个consumer能收到producer发送的消息,而且是最新加入的那个consumer。

PS:consumer1和consumer2在一个组里(运行时指定的,截图的时候可能被挡住了)

多播:不同的consumerGroup组订阅同一个topic,那么每个组里只有一个consumer能收到消息。

 四、搭建kafka集群

以3个broker(kafka)节点的集群为例,这里我们用3个端口代表3个节点,就不开3个服务器了

要新建3个server.properties文件

        然后启动3个节点

         有了集群以后,创建topic的时候可以指定生成副本(也就是备份),一共有3个节点,也就可以有3个备份。

         而且kafka会自动指定哪个节点作为leader,leader可以理解为MySQL主从复制的master,以leader节点存储的信息为主,producer也只往leader节点上发消息,不是3个节点都发,同样consumer也只去读leader节点上的消息,其他两个节点去同步/拷贝leader的信息!其他两个节点只是在leader挂了的时候才能用到,这又涉及到了选举的问题,以后再说选举策略!

        如上图所示,名为my-replicated-topic的topic有两个分区,partition0和partition1,这两个分区各自都有3个副本,其中partition0的leader是2号节点,partition1的leader是0号节点,示意如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值