入门 Kafka
杰哥的IT之旅
共 4378字,需浏览 9分钟
· 2021-06-08
https://kafka.apache.org/intro
应用场景
异步解构:在上下游没有强依赖的业务关系或针对单次请求不需要立刻处理的业务; 系统缓冲:有利于解决服务系统的吞吐量不一致的情况,尤其对处理速度较慢的服务来说起到缓冲作用; 消峰作用:对于短时间偶现的极端流量,对后端的服务可以启动保护作用; 数据流处理:集成 spark 做实事数据流处理。
Kafka 拓扑图(多副本机制)
Kafka 核心组件
broker
topic
partition
topic 的分区,一个 topic 可以包含多个 partition,topic 消息保存在各个 partition 上;由于一个 topic 能被分到多个分区上,给 kafka 提供给了并行的处理能力,这也正是 kafka 高吞吐的原因之一。 partition 物理上由多个 segment 文件组成,每个 segment 大小相等,顺序读写(这也是 kafka 比较快的原因之一,不需要随机写)。每个 Segment 数据文件以该段中最小的 offset ,文件扩展名为.log。当查找 offset 的 Message 的时候,通过二分查找快找到 Message 所处于的 Segment 中。
offset
消息在日志中的位置,可以理解是消息在 partition 上的偏移量,也是代表该消息的唯一序号。 同时也是主从之间的需要同步的信息。
Producer
Consumer
Consumer Group
Zookeeper
服务治理
数据同步
ISR
Kafka 故障恢复
生产者发生消息给 leader,这个时候 leader 完成数据存储,突然发生故障,没有给 producer 返回 ack; 通过 ZK 选举,其中一个 follower 成为 leader,这个时候 producer 重新请求新的 leader,并存储数据。
Kafka 为什么这么快
顺序写磁盘
Page Cache
零拷贝
传统的一次应用程请求数据的过程
零拷贝的方式
分区分段
数据压缩
Kafka 安装
安装 JDK
yum -y list Java*
yum install java-1.8.0-openjdk-devel.x86_64
Java -version
安装 Zookeeper
tar -zxvf zookeeper-3.4.9.tar.gz
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# zookeeper内部的基本单位,单位是毫秒,这个表示一个tickTime为2000毫秒,在zookeeper的其他配置中,都是基于tickTime来做换算的
tickTime=2000
# 集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)。
initLimit=10
#syncLimit:集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)
syncLimit=5
# 数据存放文件夹,zookeeper运行过程中有两个数据需要存储,一个是快照数据(持久化数据)另一个是事务日志
dataDir=/tmp/zookeeper
## 客户端访问端口
clientPort=2181
vim ~/.bash_profile
export ZK=/usr/local/src/apache-zookeeper-3.7.0-bin
export PATH=$PATH:$ZK/bin
export PATH
// 启动
zkServer.sh start
安装 Kafka
tar -xzvf kafka_2.12-2.0.0.tgz
export ZK=/usr/local/src/apache-zookeeper-3.7.0-bin
export PATH=$PATH:$ZK/bin
export KAFKA=/usr/local/src/kafka
export PATH=$PATH:$KAFKA/bin
nohup kafka-server-start.sh 自己的配置文件路径/server.properties &
推荐阅读
评论
CPU的入门知识
不管你玩硬件还是做软件,你的世界都少不了计算机最核心的 —— CPU。01CPU是什么?CPU与计算机的关系就相当于大脑和人的关系,它是一种小型的计算机芯片,通常嵌入在电脑的主板上。CPU的构建是通过在单个计算机芯片上放置数十亿个微型晶体管来实现。这些晶体管使它能够执行运行存储在系统内存中的程序所需
机器学习算法与Python实战
10
10个python爬虫入门实例
涉及主要知识点:web是如何交互的requests库的get、post函数的应用response对象的相关函数,属性python文件的打开,保存代码中给出了注释,并且可以直接运行哦如何安装requests库(安装好python的朋友可以直接参考,没...
马哥Linux运维
0
Gin 框架介绍与快速入门
目录Gin 框架介绍与快速入门1.gin.Engine2.gin.Context1.安装2.导入3.第一个Gin 应用1. 快速和轻量级2. 路由和中间件3. JSON解析4. 支持插件5. Gin相关文档一、Gin框架介绍二、基本使用三、应用举例四、Gin 入门核心...
马哥Linux运维
0
Kafka 时间轮(TimingWheel)原理,值得借鉴
在kafka中,有许多请求并不是立即返回,而且处理完一些异步操作或者等待某些条件达成后才返回,这些请求一般都会带有timeout参数,表示如果timeout时间后服务端还不满足返回的条件,就判定此次请求为超时,这时候kaf...
浪尖聊大数据
0
Java日志系统历史从入门到崩溃
前言最早开始撸码当时就遇到几次日志jar包冲突的问题,当时也是很烦躁,毕竟了解的也不多,什么那里4j,这里4j,还有什么桥接包,而且在我感觉他们的包名都还差不多!!我当时是比较懵逼的,上网搜了下,随便看到一...
浪尖聊大数据
0
几种常见的 Kafka 集群监控工具
本文选自电子工业出版社的新书《kafka进阶》,推荐一下。一个功能健全的kafka集群可以处理相当大的数据量,由于消息系统是很多大型应用的基石,因此broker集群在性能上的缺陷,都会引起整个应用栈的各种问题。Kafka...
浪尖聊大数据
0
漫画讲解Kafka高效的存储设计|面试
在开始讲解之前,先带着大家回忆一下kafka一些名词概念:a. Broker:提供数据存储和数据读写服务实例,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。b. Topic:代表的是一类消息,例如应用日志的...
浪尖聊大数据
0
这些年背过的面试题——Kafka篇
阿里妹导读本文是技术人面试系列Kafka篇,面试中关于Kafka都需要了解哪些基础?一文带你详细了解,欢迎收藏!Why kafka消息队列的作用:异步、削峰填谷、解耦中小型公司,技术挑战不是特别高,用 RabbitMQ ...
Java学习之道
0