Kafka简介

简介

Kafka是一个分布式、支持分区、多副本,基于zookeeper(2.8之前,准确来说是基于Raft算法)协调的分布式消息系统,由ScalaJava编写

运行模式

  1. 点多点模式
    消费者主动拉取数据,一对一,消息说到后清除消息
    工作流程
1. 消费者获取消息
2. 拉取消息确认
3. 删除此消息

image.png

  1. 发布/订阅模式
    一条消息,可以被多个消费者消费,通过Topic作为桥接,连接生产者与消费者的关系
    image.png

基础架构

概念解析
  1. 主题(Topic)
  • 逻辑概念,将消息分类,每个消息都属于一个分类,每个主题下有任意数量的消息
  • 一个主题可以有一个或多个生产者,也可以有零个、一个或多个消费者
  1. 代理(Broker)
  • broker存储topic数据,生产者将消息发送个broker, 消费者从broker当中获取消息
  • Kafka服务部署的一个节点,我们可以把部署了Kafka服务的这台机器看做是一个Broker,也可称作节点
  • 一般broker数量越多,集群吞吐量越高
  1. 分区(Partition)
  • 每个topic都可以被划分成一个或者多个分区(每个主题至少有一个分区)
  • topic在物理上的分组,在创建topic的时候指定
  • 一个Partition只对应一个Broker,一个Broker可以管理多个Partition
  • 在一个分区内消息是顺序的,在不同的分区之间,kafka不保证消息的顺序
    更多可见 https://www.jianshu.com/p/a19a50e44cad
消息的存储结构

代理(Broker) > 主题(Topic)的某个分区

集群部署如图所示
image.png

整体集群图

有了数据分布存储,就必须要保证数据一致性,Kafka2.8后,将Raft算法嵌入其中,不再讲述Zookeeper,leader、follower选举内容可关注raft相关介绍
此图,就是百T大数据,架构的示意图
image.png
集群相关参数

# 果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR,默认30s
replica.lag.time.max.ms=

安装后,部署的基本配置

config/server.properties文件

// 集群节点唯一标识符
broker.id=
// 日志数据文件存储目录
log.dirs=
// zookeeper连接地址,多个英文逗号隔开 zookeeper下新建个kafka目录,数据比较整齐易管理
zookeeper.connect=

系统环境变量添加

export KAFKA_HOME=
export PATH=$PATH:$KAFKA_HOME/bin

启动

  1. 启动各节点的zookeeper,略
  2. 启动各节点kakfa服务
bin/kakfa-server-start.sh -daemon config/server.properties
  1. 关闭kafka命令如下,先关kafka,再关zookeeper
bin/kakfa-server-stop.sh

操作

命令行模式各操作对象对应的cli脚本如下
生产者:kakfa-console-producer.sh
主题集群:kafka-topics.sh
消费者:kafka-console-consumer.sh

  1. 主题集群 https://www.jianshu.com/p/59f6b44844ba
  2. 生产者、消费者 https://www.jianshu.com/p/63b2902e2882
  3. borker https://www.jianshu.com/p/d439b9f4b777
  4. 数据顺序 https://www.jianshu.com/p/4c0e8aa88815
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值