Kafka

Kafka概述

为什么需要消息队列

客户端A要向客户端B交互,A要向B发送数据,这时候可能有两种问题

  1. B不在线,B挂了
  2. A传输速度是10M/S,B接收速度是5M/S这样就会造成数据丢失

因此我们需要在AB中间加一层消息队列
在这里插入图片描述

一对一的情况下,客户端需要实时监控消息队列中内容

点对点和发布订阅模式共同的优点:

  • 解耦(没有直接相连,通过消息队列中间件相连)
  • 冗余
  • 扩展性(kafka是有集群概念的 )
  • 灵活、峰值处理能力
  • 可恢复性
  • 顺序保证(队列是先进先出)
  • 缓冲(均衡客户端A发送消息速度和客户端B接收消息速度)
kafka介绍

kafka是一个分布式(有集群概念)消息队列,底层是Scala
在这里插入图片描述
下载的压缩包前面的版本是Scala的版本,后面的版本是kafka的版本
kafka对消息保存的时候根据Topic进行归类,发送消息者称为Producer,接收消息者称为Consumer

kafka集群有多个kafka实例(节点)组成,每个实例(节点)称为一个broker [ˈbrəʊkə](经纪人)

kafka集群,Consumer都依赖于zookeeper集群保存meta(简称)信息,保证系统可用性

kafka架构

broker里面用于存数据的地方是Topic主题,Topic又有分区的概念
分区是做负载均衡用的
每个分区有自己的leader和自己的follower
无论是读还是写都只找leader,follower只做备份用的,或者说之前的leader挂掉,则这个follower称为新的leader代替挂掉的那个继续工作
在这里插入图片描述
同一个组的消费者不能同时消费同一个分区的数据,比如A和C可以同时消费0分区的A数据,但是B不可以同时和A消费

另付一张理解图
在这里插入图片描述

kafka集群搭建启动

普通消息队列支持点对点和发布订阅模式,kafka只支持点对点模式,需要new一个consumer来消费消息
kafka安装以后比如3节点的server.xml配置

  1. broker.id 唯一的数字序号
  2. delete.topic.enabled=true是否允许删除topic(默认false,需要修改为true,因为消息是我们自己发的)
  3. log.dirs 修改日志文件位置,***同时也存储了kafka真正的消息数据
  4. zookeeper.connect zookeeper集群的地址
    注:配置一个即可,其他的将配置完的分发到其他节点服务器,然后只需修改broker.id

kafka集群依赖于zk集群,因此启动kafka集群前需要先启动zk集群

启动kafka集群命令,每台都执行以下命令
./bin/kafka-server-start.sh config/server.properties

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值