kafka简介

kafka是什么?

Kafka最初采用Scala语言开发的一个多分区、多副本并且基于ZooKeeper协调的分布式消息系统。目前Kafka已经定位为一个分布式流式处理平台,它的特性有高吞吐、可持久化、可水平扩展、支持流处理。
Apache Kafka是一个分布式的发布-订阅消息系统,能够支撑海量数据的数据传递。在离线和实时的消
息处理业务系统中,Kafka都有广泛的应用。Kafka将消息持久化到磁盘中,并对消息创建了备份保证了数据的安全。Kafka在保证了较高的处理速度的同时,又能保证数据处理的低延迟和数据的零丢失。

kafka的特点?

高吞吐量、低延迟。每个主题可以分为多个分区,消费组对分区进行消费操作。
高扩展性:kafka集群支持热扩展。
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失。
容错性:允许集群中节点失败,(若副本数量为n,则允许n-
1个节点失败)
高并发:支持数千个客户端同时读写

kafka的技术优点?

可伸缩性:kafka在运行期间可以轻松地添加和删除代理,而不会宕机。可以扩展主题的分区。由于分区无法扩展到多个代理,所以容量受磁盘空间限制。能够增加分区和代理的数量意味着单个主题可以存储的数量是无限制的。(主题和分区可以跨代理吗?)
容错性和可靠性:kafka的设计方式使某个代理的故障能够被集群找那个的其他代理检测到。由于每个主题都可以在多个代理上复制,所以集群可以在不中断服务的情况下从此类故障中恢复并继续运行。
吞吐量:能够以超快的速度有效的存储和检索数据。

kafka内的术语?

Producer

生产者将消息发布到Kafka的主题topic中。broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的segment文件中。生产者发送的消息,存储到一个partition
中,生产者也可以指定数据存储的partition。

Consumer

消费者可以从broker中读取数据。消费者可以消费多个topic中的数据。

Topic

使用一个类别属性来划分数据的所属类,划分数据的这个类称为topic。如果把Kafka看做为一个数据库,topic可以理解为数据库中的一张表,topic的名字即为表名。

Partition

topic中的数据分割为一个或多个partition。每个topic至少有一个partition。每个partition中的数据使用多个segment文件存储。partition中的数据是有序的,partition间的数据丢失了数据的顺序。在需要严格保证消息消费顺序的场景下,需要将partition数目设为1。

Partition offset

每条消息都有一个当前Partition下唯一的64字节的offset,它指明了这条消息的起始位置。

Replicas of partition

副本是一个分区的备份。副本不会被消费者消费,副本只用于防止数据丢失,即消费者不从为follower的partition中消费数据,而是从为leader的partition中读取数据。副本之间是一主多从的关系。

Broker

Kafka 集群包含一个或多个服务器,服务器节点称为broker。broker存储topic的数据。如果某topic有N个partition,集群有N个broker,那么每个broker存储该topic的一个partition。设置brocker的数量大于分区的数量。

Leader

一个分区有多个副本,有且仅有一个副本是leader,其他是follower

Follower

Follower跟随Leader,所有写请求都通过Leader路由,数据变更会广播给所有Follower,Follower与Leader保持数据同步。如果Leader失效,则从Follower中选举出一个新的Leader。当Follower与Leader挂掉、卡住或者同步太慢,leader会把这个follower从“in sync replicas”(ISR)列表中删除,重新创建一个Follower。

Zookeeper

Zookeeper负责维护和协调broker。当Kafka系统中新增了broker或者某个broker发生故障失效时,由ZooKeeper通知生产者和消费者。生产者和消费者依据Zookeeper的broker状态信息与broker协调数据的发布和订阅任务。

AR(Assigned Replicas)

分区中所有的副本统称为AR。

ISR(In-Sync Replicas)

所有与Leader部分保持一定程度的副(包括Leader副本在内)本组成ISR

OSR(Out-of-Sync-Replicas)

与Leader副本同步滞后过多的副本。

HW(High Watermark)

高水位,标识了一个特定的offset,消费者只能拉取到这个offset之前的消息。

LEO(Log End Offset)

即日志末端位移(log end offset),记录了该副本底层日志(log)中下一条消息的位移值。注意是下一条消息!也就是说,如果LEO=10,那么表示该副本保存了10条消息,位移值范围是[0, 9]。

kafka的安装步骤

前提条件:jdk、zookeeper、kafka
安装jdk:
1、所有文件放入/opt/java,然后tar -zxvf命令解压
2、配置环境变量,/etc/profile文件

export JAVA_HOME=/opt/java/jdk-12.0.1
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=.:$JAVA_HOME/bin:$JRE_HOME/bin:$KE_HOME/bin:${MAVEN_HOME}/bin:$PATH

3、测试jdk是否安装成功,java -version命令查看
安装zookeeper:
1.conf目录下修改配置文件,配置文件默认名:zoo_sample.cfg
cp命令复制配置文件,命名为zoo.cfg,
修改数据目录和日志目录
/opt/java/zookeeper-3.4.14
/opt/java/zookeeper-3.4.14
2.启动zookeeper
[root@localhost zookeeper-3.4.14]# bin/zkServer.sh start
安装kafka:
1、修改配置文件service.properties
修改日志/opt/java/kafka_2.12-2.2.1/log
2、启动kafka:bin/kafka-server-start.sh config/server.properties
启动kafka后台运行:bin/kafka-server-start.sh -daemon config/server.properties
listeners=PLAINTEXT://:9092去掉注释
log.dirs=/opt/java/kafka_2.12-2.2.1/log新建日志目录并设置日志地址
zookeeper.connect=localhost:2181打开zookeeper连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

no_new_privs

kernel.org/doc/Documentation/prctl/no_new_privs.txt Linux Capabilities 入门教程:基础实战篇 - 知乎 (zhihu.com)

两数之和 LeetCode热题100

题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺…

Kubernetes高可用集群二进制部署(三)部署api-server

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署(二)ETCD集群部署 Kubernetes高可用集群二进制部署(三)部署…

代理模式--静态代理和动态代理

1.代理模式 定义:代理模式就是代替对象具备真实对象的功能,并代替真实对象完成相应的操作并且在不改变真实对象源代码的情况下扩展其功能,在某些情况下,⼀个对象不适合或者不能直接引⽤另⼀个对象,⽽代理对象可以在客户…

抄写Linux源码(Day3:启动南大OS)

我们可以尝试启动南大OS,接着阅读南大OS源码,看看 JYY/YZH 构建主引导扇区的手段 (注意:我使用的是南大2023年的 OS 实验代码) https://jyywiki.cn/OS/2023/labs/Labs 首先,根据 JYY 的文档,…

力扣 C++|一题多解之动态规划专题(1)

动态规划 Dynamic Programming 简写为 DP,是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理&…

PHP8的数据类型转换-PHP8知识详解

什么是数据类型转换? 答:数据从一个类型转换成另外一个类型,就是数据类型转换。 在PHP8中,变量的类型就是由赋值决定的,也就是说,如果 string 赋值给 $var,然后 $var 的类型就是 string。之后…

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 3

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

百分点科技跻身中国智慧应急人工智能解决方案市场前三

近日, 全球领先的IT市场研究和咨询公司IDC发布了《中国智慧应急解决方案市场份额,2022》报告,数据显示,2022年中国智慧应急整体市场为104亿元人民币。其中,智慧应急人工智能解决方案子市场备受关注,百分点科…

C# 文件读写 程序

//读写文件 public class ReadWriteFile { public static List<string> ReadFile(string path) { try { using (FileStream fileStream new FileStream(path, FileMode.Open, FileAccess.Read)) { Lis…

【Spring】反射动态修改Bean实例的私有属性值

Cannot cast org.springframework.http.client.InterceptingClientHttpRequestFactory to org.springframework.http.client.OkHttp3ClientHttpRequestFactory 由于RestTemplate在自定义初始化时顺序比较早&#xff0c;想在启动后跟进yum或者注解配置修改初始化的值时&#xff…

Django框架之路由用法

简介 路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序&#xff0c;并返回处理结果&#xff0c;也就是 URL 与 Django 的视图建立映射关系。 Django 路由在 urls.py 配置&#xff0c;urls.py 中的每一条配置对应相应的处理方法。 Django 不同版本 urls.py 配…

浅谈Kubernetes中Service实现(服务注册和发现)

目录 Kubernetes服务发现原理 Kubelet CoreDNS(Kube-DNS) Kube-proxy kube-proxy的三种实现模式 User space模式 iptables模式 IPVS模式 之前浅谈Kubernetes的Service文章中介绍了Service组件的概念以及各种不同类型的service,其中ClusterIP类型的service实现了集群…

Shell ❀ Bash脚本调优方式详解

文章目录 1、简述2、脚本执行过程3、set3.1 set -u3.2 set-x3.3 set -e3.4 set -o pipefail3.5 总结3.6 取消Bash参数调优 1、简述 Linux服务器脚本开发和运维管理常使用Bash脚本&#xff0c;经常遇到以下场景&#xff1a; 未定义变量shell内默认设置为空&#xff0c;导致未定…

switch分支实现周一到周五的安排

switch分支实现周一到周五的安排 分析需求代码实现小结Time 唠嗑浅分析一下switch的执行流程 ①先执行switch(表达式) 中表达式的值&#xff0c;再拿这个值去与case后的值进行匹配。 ②与那个case后的值匹配为true就执行那个case块的代码&#xff0c;遇到break就跳出switch分支…

洛谷 P1119 灾后重建

原题链接&#xff1a; 灾后重建 - 洛谷 题目大意&#xff1a; 有n个村庄&#xff0c;村庄间有m条公路&#xff0c;一次地震将连向每个村庄的公路损坏&#xff0c;所以要进行维修&#xff0c;数据保证编号小的村庄维修时间更少&#xff0c;编号大的村庄维修时间更多。后面有q个…

固定资产管理软件

固定资产全生命周期管理软件采用先进的RFID技术&#xff0c;从采购、入库、借用、总结、清理到损坏等方面准确统计资产&#xff0c;突破过去手工统计的复杂性&#xff0c;节省资产资源&#xff0c;减少调查时间&#xff0c;确保资产管理工作的准确性和快速性。 固定资产管理软…

MySQL概述与体系结构

文章目录 一、MySQL概述1.1 MySQL与redis的区别1.2 数据处理分类1.3 SQL1.4 数据类型 二、数据库设计三范式2.1 范式一2.2 范式二2.3 范式三2.4 反范式 三、MySQL体系结构3.1 结构组成3.2 连接池 四、sql语句执行过程4.1 select语句4.2 CRUD执行过程 一、MySQL概述 1.1 MySQL与…

(YouTube)KDBA QML 学习笔记1

&#xff08;YouTube&#xff09;KDBA QML 学习笔记 旧版本(QML文件介绍) main.qml import QtQuick 2.0Text {text: "Hell World" }main.cpp #include <QtQuick>int mian(int argc, char *argn[]) {QGuiApplication app(argc, argv);//QT开始 QQuickvi…

【力扣】 12. 整数转罗马数字 模拟

力扣 12. 整数转罗马数字 解题思路 当某个位数的某个数不为4或9时&#xff0c;高位对应的字符总是在低位对应的字符前面。只有当该数为4或9时&#xff0c;低位对应的字符在高位前面。 根据这一特性&#xff0c;我们进行分类讨论。 1.当数为4时&#xff0c;则对应的罗马数为 10 …