Kafka 部署及基础原理

kafka集群部署搭建【详细版】 因项目需要,需搭建kafka集群进行验证工作。系统环境真的很重要,这会影响排查问题的效率。但是大部分博客编写的时候基本上都没有记录这些,这就会导致有些命令不是共通的。#1 系统版本#2 jdk版本至此,kafka集群搭建完毕,大家如果有什么疑问,请及时和我沟通交流。 阅读详情

一、Kafka概述

1.1Kafka介绍

Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

1.2 消息队列

在这里插入图片描述

消息队列的优点

  1. 解耦

    允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

  2. 可恢复性

    系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。

  3. 缓冲

    有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。

  4. 灵活性和峰值处理能力

    在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

    去峰值

  5. 异步通信

    很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

1.3 消息队列的两种模式

  1. 点对点模式

    一对一,消费者主动拉取数据,消息收到后消息清除。

    消费生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。消息被消费以后,queue中不再有储存,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

在这里插入图片描述

  1. 发布/订阅模式

    一对多,消费者消费数据之后不会清除消息

    消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。

在这里插入图片描述

1.4 kafka快速入门

1.4.1 安装包下载

http://kafka.apache.org/downloads.html

1.4.2 安装kafka

  1. 上传文件后,解压缩,修改文件名
tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module/
mv kafka_2.11-0.11.0.0/ kafka

# 在/opt/module/kafka/目录下创建文件夹
mkdir logs
  1. 修改配置文件 /kafka/config/server.properties

修改以下内容

#broker 的全局唯一编号,不能重复
broker.id=0

#删除 topic 功能使能
delete.topic.enable=true

#处理网络请求的线程数量
num.network.threads=3

#用来处理磁盘 IO 的现成数量
num.io.threads=8

#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600

#kafka 运行日志存放的路径
log.dirs=/opt/module/kafka/logs

#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168

#配置连接 Zookeeper 集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
  1. 将 /opt/module/kafka 和 /opt/module/kafka/bin添加到环境变量
vim /etc/profile

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

source /etc/profile
  1. 分发安装包以及修改配置参数 broker.id
xsync kafka/

分别在 hadoop103 和 hadoop104 上修改配置文件/opt/module/kafka/config/server.properties中的 broker.id=1、broker.id=2。broker.id 不得重复。

  1. kafka集群启动脚本kafka.sh
#!
case $1 in
	"start" )
		for i in hadoop102 hadoop103 hadoop104
		do
			echo "========== $i ==========" 
			ssh $i '/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties'
		done
		;;
	"stop" )
		for i in hadoop102 hadoop103 hadoop104
		do
			echo "========== $i ==========" 
			ssh $i '/opt/module/kafka/bin/kafka-server-stop.sh stop'
		done
		;;
esac

1.4.3 kafka命令行操作

  1. 查看当前服务器中的所有topic

    kafka-topics.sh --zookeeper hadoop102:2181 --list

  2. 创建 topic

    kafka-topics.sh --zookeeper myaliyun:2181 --create --replication-factor 1 --partitions 1 --topic newTopic

  3. 删除topics

    kafka-topics.sh --zookeeper myaliyun:2181 --delete --topic atguiguNew

  4. 发送消息

    kafka-console-producer.sh --broker-list myaliyun:9092 --topic atguiguNew

  5. 消费消息

    1.kafka-console-consumer.sh --zookeeper myaliyun:2181 --topic atguiguNew

    2.kafka-console-consumer.sh --bootstrap-server myaliyun:9092 --topic atguiguNew

    3.kafka-console-consumer.sh --bootstrap-server aliyun:9092 --from-beginning --topic first

    –from-beginning:会把topics(主题)中以往所有的数据都读取出来

  6. 查看topics详情

    kafka-topics.sh --zookeeper myaliyun:2181 --describe --topic atguiguNew

  7. 修改分区数

    kafka-topics.sh --zookeeper myaliyun:2181 --alter --topic atguiguNew --partitions 6

二、Kfaka构架

2.1 kafka基础框架

在这里插入图片描述

  1. Producer:消息生产者,就是kafka broker发消息的客户端;
  2. Consumer:消息消费者,向kafka broker获取消息客户端;
  3. Consumer Group(CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,既消费者组是逻辑上的一个订阅者。
  4. Broker:一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
  5. Topic:可以理解为一个队列,生产者和消费者面向的都是一个topic。
  6. Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(既服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。
  7. Replica:副本,为保证集群中的某个节点发生故障时,该节点的partition数据不丢失,且kafka仍可以继续工作,kafka提供了副本机制,一个topic的每个分区都有若干副本,一个leader和若干follower。
  8. Leader:每个分区副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是leader。
  9. Follower:每个分区多个副本中的“从”,实现从leader中同步数据,保持和leader数据的同步。leader发生故障时,某个follower会成为新的leader。

2.2 kafka工作流程以及文件储存机制

在这里插入图片描述

kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。

topic是逻辑上的概念,而partition是物理上的概念,每个partition对应一个log文件,该log文件中储存的数据producer生产的数据。producer生产的数据会被不断追加到该log文件末端,且每条数据都有自己的offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费。

在这里插入图片描述

由于生产者生产消息会不断追加到log文件末尾,为防止log文件过大导致数据定位效率低下,kafka采取了分片和索引机制,将每个partition分为多个segment。每个segment对应两个文件——“.index”和“.log”。这些文件位于一个文件夹下,该文件夹的命名规则为:topic名称+分区序号。例如,first这个topic有三个分区,其对应的文件夹为first-0,first-1,first-2。

00000000000000000000.index
00000000000000000000.log
00000000000000170410.index
00000000000000170410.log
00000000000000239430.index
00000000000000239430.log

index 和 log文件以当前segment的第一条消息的offset命名。下图为index文件和log文件的结构示意图:

在这里插入图片描述

“.index” 文件储存大量的索引信息,“.log”文件储存大量的数据,索引文件中的元数据指向对应数据文件中message的物理偏移量地址。

2.3 kafka 生产者

2.3.1 分区策略

  1. 分区原因

    1. 方便在集群中扩展,每个partition可以通过调整以适应它所在的机器,而一个topic又可以有多个partition组成,因此整个集群就可以适应任意大小的数据。
    2. 可以提高并发,因为可以以partition为单位读写。
  2. 分区原则

producer发送的数据封装成一个ProducerRecord对象。

在这里插入图片描述

(1) 指明partition的情况下,将指明的值直接作为partition值;

(2) 没有指明partition值但有key的情况下,将key的hash值与topic的partition值进行取余得到partition值;

(3) 既没有partition值又没有key值的情况下,第一次调用时随机生成一个整数(后面每次调用在这个整数上自增),将这个值与topic可用的partition总数取余得到partition值,也就是round-robin算法。

2.3.2 数据可靠性保证

为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的数据后,都需要向producer发送ack(acknowledgement确认收到),如果producer都到ack,就会进行下一轮的发送,否则重新发送数据。

在这里插入图片描述

副本数据同步策略

kafka选择了第二种方案,原因如下:

  1. 同样为了容忍n台节点的故障,第一种方案需要2n+1个副本,而第二种方案只需要n+1个副本,kafka的每个分区都有大量的数据,第一种方案会造成大量数据的冗余。
  2. 虽然第二种方案的网络延迟会比较高,但网络延迟对kafka的影响比较小。
  1. ISR(in-sync replica set)

采用第二种方案之后,设想:leader收到数据,所有follower都开始同步数据,但有一个follower,因为某种故障,迟迟不能与leader进行同步,那么leader就要一直等下去,直到它完成同步,才能发送ack。这个问题该怎么解决?

Leader 维护了一个动态的in-sync replica set(ISR),意为和leader保持同步的follower集合。当ISR中的follower完成数据同步之后,leader就会producer发送ack。如果follower长时间未向leader同步数据,则该follower将被踢出ISR,该时间阈值又 replica.lag.time.max.ms 参数设定。Leader发送故障之后,就会在ISR中选举新的leader。

  1. ack 应答机制

对于某些不太重要的数据,对数据的可靠性要求不是很高,能够容忍数据的少量丢失,所以没必要等ISR中的follower全部接受成功。

因此kafka为用户提供了三种可靠性级别,用户根据对可靠性和延迟的要求进行权衡,选择以下的配置。

acks参数配置:

0:producer不等待broker的ack,这一操作提供了一个最低的延迟,broker一接受到还没有写入磁盘就已经返回,当broker故障时有可能丢失数据。

1:produce等待broker的ack,partition的leader落盘成功后返回ack,如果在follower同步成功之前leader故障,那么将会丢失数据。

在这里插入图片描述

-1(all): prodicer等在broker的ack,partition的leader和follower全部落盘成功后才返回ack。但是如果在follower同步完成后,broker发送ack之前,leader发送故障,那么会造成数据重复。

在这里插入图片描述

3) 故障处理细节

在这里插入图片描述

LEO:指的是每个副本最大的offset

HW:指的是消费者能见到的最大的offset,ISR队列中最小的LEO

  1. follower 故障

    follower发送故障后会被临时剔除ISR,待该follower恢复后,follower会读取本地磁盘记录的上次HW,并将log文件高于HW的部分截取掉,从HW开始向leader进行同步。等该follower的LEO大于等于partition的HW,既follower追上leader之后,就可以重新加入ISR了。

  2. leader 故障

    leader 发生故障之后,会从ISR中选出一个新的leader之后,为保证多个副本之间的数据一致性,其余的follower会先将各自的log文件高于HW的部分截掉,然后从新的leader同步数据。

    注意:这只能保证副本之间的数据一致性,并不能保证数据不丢失或者不重复。

2.3.3 Exactly Once语义

将服务器的ACK级别设置为-1,可以保证producer到server之间不会丢失数据,既At Least Once 语义。相对的,将服务器ACK级别设置为0,可以保证生产者每条消息只会被发送一次,既At Most Once语义。

At Least Once可以保证数据不丢失,但是不能保证数据不重复;相对的,At Most Once可以保证数据不重复,但是不能保证数据不丢失。但是,对于一些非常重要的信息,比如说交易数据,下游数据消费者要求数据既不重复也不丢失,既Excatly Once语义。在0.11版本以前的kafka,对此是无能为力的,只能保证数据不丢失,再在下游消费者对数据做全局去重。对于多个下游应用的情况下,每个都需要单独做全局去重,这就对性能造成了很大的影响。

0.11版本的kafka,引入了一项重大特性:幂等性。所谓的幂等性就是指producer不论向server发送多少次重复数据,server端都只会持久化一条。幂等性结合At Least Once语义,就构成了kafka的Exactly Once语义。既:

At Least Once + 幂等性 = Exactly Once

要启用幂等性,只需要将producer的参数中的enable.idompotence 设置为 true 即可。kafka的幂等性实现其实就是将原来下游需要做的去重放在了数据上游。开启幂等性的producer在初始化的时候会被分配一个PID,发往同一partition的消息会附带Sequence Number。而broker端会对<PID,Partition,SeqNumber>做缓存,当具有相同主键的消息提交时,broker只会持久化一条。

但是PID重启就会变化,同时不同的partition也具有不同的主键,所以幂等性无法保证跨分区跨会话的Excatly Once。

2.4 消费者

2.4.1 消费方式

consumer采用pull(拉)模式从broker中读取数据。

push(推)模式很难适用消费速率不同的消费者,因为消息发送速率是由broker决定的。它的目标是尽可能以最快速度传递消息,但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据consumer的消费能力以适当的速率消费消息。

**pull模式不足之处是,如果kafka没有数据,消费者可能会陷入循环中,一直返回空数据。**针对这一点,Kafka的消费者再消费数据时会传入一个时长参数timeout,如果当前没有数据可供消费,consumer会等待一段时间之后再返回,这段时长即为timeout。

2.4.2 分区分配策略

一个consumer group中有多个consumer,一个topic有多个partition,所以必然会涉及到partition的分配问题,既确定哪个partition由哪个consumer来消费。

Kafka由两种分配策略,一是RoundRobin(轮询),一是Range(分组)

1) RoundRobin

在这里插入图片描述

按照分区数,一个分区一个分区分配给消费者组中的消费者。

这种分配策略的优点是,数据均衡,不会出现数据倾斜的情况(按分区数量来看)。

缺点?

2) Range

在这里插入图片描述

根据总的分区数7和消费者数3,7/3,分组之后,再进行分配。

kafka默认用的就是Range策略。它可以保证数据不会被重复读取。

缺点是当一个消费者组,订阅的topic很多时,可能会出现数据倾斜。

2.4.3 offset维护

由于consumer在消费过程中可能会出现断电宕机等故障,consumer恢复后,需要从故障前的位置继续消费,所以consumer需要实时记录自己消费到了哪个offset,以便故障恢复后继续消费。

在这里插入图片描述

在这里插入图片描述

Kafka 0.9 版本之前,consumer默认将offset保存在zookeeper中,从0.9版本之后,consumer默认将offset保存在Kafka一个内置topic中,该topic为**__consumer_offsets**。

要查看**_consumer_offset**s,需要修改配置文件。

1.修改配置文件

exclude.internal.topics=false

2.读取offset

0.11.0.0之前版本:

bin/kafka-console-consumer.sh --topic __consumer_offsets --zookeeper hadoop102:2181 --formatter "kafka.coordinator.GroupMetadataManager\$OffsetsMessageFormatter" --consumer.config config/consumer.properties --from-beginning

0.11.0.0之后版本(含):

bin/kafka-console-consumer.sh --topic __consumer_offsets --zookeeper hadoop102:2181 --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter" --consumer.config config/consumer.properties --from-beginning

2.4.4 消费者组案例

测试同一个消费者组中的消费者,同一时刻只能有一个消费者消费。

(1)在 hadoop102、hadoop103 上修改/opt/module/kafka/config/consumer.properties 配置文件中的 group.id 属性为任意组名。

vim consumer.properties

# 修改组名
group.id=atguigu

(2)在 hadoop102、hadoop103 上分别启动消费者

[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh --zookeeper hadoop102:2181 --topic first --consumer.config config/consumer.properties

[atguigu@hadoop103 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first --consumer.config config/consumer.properties

(3)在 hadoop104 上启动生产者

[atguigu@hadoop104 kafka]$ bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic first
>hello world

(4)查看 hadoop102 和 hadoop103 的接收者。

同一时刻只有一个消费者接收到消息。

2.5 Kafka 高效读取数据

1)顺序写磁盘
Kafka 的 producer 生产数据,要写入到 log 文件中,写的过程是一直追加到文件末端,为顺序写。官网有数据表明,同样的磁盘,顺序写能到 600M/s,而随机写只有 100K/s。这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁头寻址的时间。

2)零复制技术

正常读取/写入数据,需要从磁盘读取到操作系统层,再从操作系统层读取到应用层。

在这里插入图片描述

而kafka可以直接在操作系统层,读取/写入到磁盘,少了很多流程。

在这里插入图片描述

2.6 Zookeeper 在 Kafka 中的作用

Kafka集群中有一个broker会被选举为Controller,负责管理集群broker的上下线,所有topic的分区副本分配和leader选举等工作。

Controller的管理工作都是依赖于zookeeper的。

以下为partition的leader选举工作:

在这里插入图片描述

2.7 Kafka 事务

Kafka从0.11版本开始引入了事务支持。事务可以保证Kafka在Exactly Once语义的基础上,生产和消费可以跨分区和会话,要么全部成功,要么全部失败。

2.7.1 Producer 事务

为了实现跨分区跨会话的事务,需要引进一个全局唯一的Transaction ID(事务id),并将Producer获得的PID和Transaction ID绑定。这样当Producer重启后就可以通过正在进行的Transaction ID 获取原来的PID。

为了管理Transaction,Kafka引入了一个新的组件Transaction Coordinator。Producer就是通过Transaction Coordinator交互获取Transaction ID对应的任务状态。Transaction Coordinator还负责将所有事务写入Kafka的一个内部topic,这样即使整个服务重启,由于事务状态得到保存,进行中的事务状态可以得到恢复,从而继续进行。

2.7.2 Consumer 事务

上述事务机制主要是从 Producer 方面考虑,对于 Consumer 而言,事务的保证就会相对较弱,尤其时无法保证 Commit 的信息被精确消费。这是由于 Consumer 可以通过 offset 访问任意信息,而且不同的 Segment File 生命周期不同,同一事务的消息可能会出现重启后被删除的情况。

【分布式技术】消息队列Kafka 主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。比如大量的请求并发访问数据库,导致行锁表锁,最后请求线程会堆积过多,从而触发 too many connection 错误,引发雪崩效应。我们使用消息队列,通过异步处理请求,从而缓解系统的压力。消息队列常应用于异步处理,流量削峰,应用解耦,消息通讯等场景。 阅读详情

相关推荐

Kafka集群版安装部署

本文介绍了如何搭建Kafka集群,包括单节点多Broker部署和多节点多Broker部署。Kafka集群由Broker节点、Controller节点和混合节点构成,Broker负责消息存储和处理,Controller负责集群元数据管理。Kafka依赖ZooKeeper进行集群管理,本文详细描述了在CentOS 8.4、JDK 17、ZooKeeper 3.8.4环境下部署Kafka 2.7.2的步骤,包括ZooKeeper集群部署、Kafka安装、配置文件修改及服务启动。

giser@2011的博客 3736

kafka安装部署

一、安装kafka 下载kafka两种方式 (1)、手动下载 下载地址:Apache Kafka (2)、也可以用命令下载(直接下载到服务器哦!): 将安装包下载到/opt/monitor/kafka文件夹下面 下载命令: wget http://mirrors.hust.edu.cn/apache/kafka/2.0.0/kafka_2.12-2.0.0.tgz 手动下载移动到/opt/monitor/kafka目录下也可以 二、解压kafka tar -xzvf kafk

m0_46192647的博客 4万+

Docker 部署 Kafka 集群详解教程

Kafka 是一个分布式流处理平台,广泛用于构建实时数据管道和流应用。它能够处理高吞吐量的数据,并支持实时数据的发布和订阅。在本文中,我们将详细介绍如何使用 Docker 来部署 Kafka 集群,包括 Kafka 的选举原理。

广阔天地,大有作为 3367

3分钟了解Kfaka

用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索记录、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。发布/ 订阅:订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。

m0_66194642的博客 2049

手把手教你用STM32的SPI驱动MCP2517FD实现CAN FD通信(附完整代码)

本文详细介绍了如何使用STM32通过SPI驱动MCP2517FD实现CAN FD通信,涵盖硬件连接、SPI驱动编写、寄存器配置及数据收发实战。提供完整代码示例和常见问题排查指南,帮助开发者快速构建高可靠性的CAN FD通信系统,适用于汽车电子和工业控制等领域。

weixin_30607029的博客 674

手把手教你学Simulink——基于经典PID控制的电机系统场景实例:永磁同步电机(PMSM) PID转速控制仿真

*永磁同步电机(PMSM)因其高效、高功率密度和良好的动态响应特性,在现代工业自动化、电动汽车驱动系统等领域得到了广泛应用。为了实现对PMSM的速度精确控制,通常采用矢量控制(Field Oriented Control, FOC)**策略,其中PID控制器是实现速度环和电流环调节的关键组件。本教程将带你使用构建一个基于PID控制的永磁同步电机转速控制系统仿真模型PMSM电机建模矢量控制(FOC)策略实现PID控制器设计系统仿真与调试控制效果分析本文介绍了如何使用构建一个。

MHD0815的博客 6950

ZooKeeper与Kafka分布式:从基础原理到集群部署

Zookeeper 是一个分布式协调服务,专门为分布式应用提供高效可靠的协调、同步、配置管理和故障恢复等功能。它的设计目的是简化分布式系统的管理,保证多个节点之间的数据一致性和协调工作。Zookeeper 提供了类似文件系统的层次化命名空间,用来存储和管理元数据,确保分布式应用的高可用性和强一致性。Kafka 是一个分布式的基于发布/订阅模式的消息队列(MQ,Message Queue),主要应用于大数据实时处理领域。

weixin_72487594的博客 1817

药物代谢仿真软件:PKSim_(6).案例研究与实践应用

通过本章的案例研究和实践应用,我们展示了如何利用PKSim软件构建药物动力学模型、进行参数估计、仿真预测和结果分析。这些方法不仅有助于优化药物代谢研究过程,还可以在药物研发中提供重要的数据支持。通过模型的构建和验证,我们可以更好地理解药物在体内的动态变化过程,为临床试验和药物治疗提供科学依据。

kkchenjj的博客 653

ZooKeeper与Kafka分布式协调系统实战指南:从基础原理到集群部署

本文深入探讨了Apache ZooKeeper和Kafka两大分布式系统核心技术。ZooKeeper作为分布式协调服务,其核心机制包括观察者模式、ZNode数据结构和选举算法,可应用于统一命名、配置管理、集群监控等场景。文章详细解析了ZooKeeper的首次启动和非首次启动选举流程,并提供了完整的集群部署方案,包括环境准备、JDK安装和ZooKeeper配置步骤。通过层次化的数据模型和高效的协调机制,ZooKeeper为分布式系统提供了可靠的基础设施支持。

荣光波比的博客 1924

什么是 SAP ABAP Secure Storage

此过程将单独的密钥存储在密钥路径中的密钥文件中,并自动使用新加密密钥加密安全存储中的所有数据记录。需要注意的是,不要在没有命令行工具的情况下操作密钥文件,例如,不要用不同的版本替换密钥文件,否则,安全存储中的数据记录可能变得不可读。当需要访问这些数据时,系统会对其进行解密。文件系统中的安全存储(Secure Storage in the File System)也是 SAP NetWeaver Application Server for ABAP 的一部分,主要用于安全存储连接相关的数据,如密码等。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 439

C/C++基础讲解(四十三)之图形篇之绘制直线、圆、圆弧、 椭圆

程序主要是基于Visual studio 2019进行编译完成了,有兴趣的小伙伴可以自己安装下Visual studio 2019,网上有现成的教程,当然了,如果有问题,也可以和我联系,这里我们主要讲解些源码实例,不多说了,言归正传。 C语言,做为学习其他语言的基础语言,其重要性就不言而喻了.下面我将和大家一起来学习探讨C语言的相关奥秘。 实例1:绘制直线 实例2:绘制圆 实例2:绘制圆弧 实例2:绘制椭圆

hnjzfwy的博客 1234

kafka全解

Kafka传统定义: Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。发布/订阅:消息的发布者不会将消息直接发布给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能的数据管道、流分析、数据集成和关键任务应用。

General_zy的博客 4万+

单反相机物镜设计[DG-10]

REAR(要打在像面,操作数要找像面对应位置15):以透镜单位表示的真实光线径向坐标,波长由Wave定义,参见“Hx、Hy、Px和Py”。最小玻璃厚度最小不能小于semi-dia的1/10,要根据layout看有没有过厚过薄,反复调节。PROD:两个操作数的乘积(操作#1 X操作#2)。3x4就是57.3x0.41=23.5。拦光一般在第一面和最后一面操作,减少边缘无用光线。光阑面与镜面贴近,要调距离,同时设置光阑像差。后截距是指从镜头后表面到焦点的距离。CONS:弧度转为角度。镜头相互嵌入,有错误。

weixin_72050316的博客 600

【学习笔记】大数据技术之Kafka3.x(2022版)

大数据技术之Kafka3.x(2022版)第 1 章 Kafka 概述1.1 定义1.2 消息队列1.2.1 传统消息队列的应用场景1.2.2 消息队列的两种模式1.3 Kafka 基础架构2. Kafka 快速入门2.1 安装部署2.1.1 集群规划2.1.2 集群部署2.2.1 主题命令行操作2.2.2 生产者命令行操作2.2.3 消费者命令行操作第 3 章 Kafka 生产者3.1 生产者消息发送流程3.1.1 发送原理3.1.2 生产者重要参数列表3.2 异步发送 API3.2.1 普通异步发送3.

prague6695的博客 4653

SPMI协议学习总结

SPMI(System Power Management Interface)是由MIPI(Mobile Industry Processor Interface)联盟定义的一种硬件接口标准,它主要用于移动设备中,连接SoC(System on Chip)处理器系统的集成电源控制器与一个或多个电源管理IC(PMIC),以实现精确的电源管理

歌颂苦难的行为是无耻的; 1078

Multisim14.0仿真应用设计(三十九)74LS183 高速全加器应用仿真

74LS183是一种高速全加器,可以同时执行四位二进制数的加法运算。它的输入端包括两个4位二进制数和一个进位信号,输出端则为一个4位二进制数和一个进位信号。

zhusl6688的博客 3849

消息队列kafka的基础概念和部署

消息队列(Message Queue,简称 MQ)本质是一个 FIFO(先入先出)的队列,存储单元为 “消息”,主要用于不同服务、进程、线程间的通信。

m0_74186706的博客 1118

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

kafka系统入门教程(原理、配置、集群搭建、Java应用、Kafka-manager)

Kafka学习总结文档 Author xiuhong.chen Date 2018.7.30 Desc 总结了kafka简介、原理、环境搭建、以及在java中的应用、kafka-manager管理topic等 文章目录Kafka学习总结文档一、Kafka简介二、基本架构图三、基本概念解释四、适用场景五、设计原理1、持久性2、性能3、生产者4、消费者5、消息传送机制6、复制备份7、日志8、分配9...

再烦,也别忘微笑;再急,也要注意语气;再苦,也别忘坚持。 2206

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

消息队列与Kafka基础:从概念到集群部署

集群部署Kafka涉及资源清单、基础环境设置、Zookeeper和Kafka的安装与配置,以及测试步骤。

yjq182的博客 2271

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

人人都说kafka,何为kafka???三分钟kafka原理详解~

适合新手简单快速上手kafka

indexqian的博客 9640

深入了解Kafka底层原理

一、Kafka基础 1.kafka的基本运行原理?kafka的架构部署? (1)Kafka通过多副本机制实现故障自动转移; 2.kafka的文件存储机制? 3.kafka如何确保消息的精确传输?如何确保消息的准确存储?如何确保消息的正确消费? 4.kafka的常用名词? (1)LEO(LogEndOffset):表示每个partititon中最后一条message的位置; (2)HW...

Michaeles的博客 2337

Kafka消息队列

消息是在应用间传送的数据,其形式多样,既可以是简单的文本字符串,也可以是包含嵌入对象的复杂数据。消息队列是一种应用间的通信方式,具有独特的工作模式:消息发送后,发送者可立即获得返回,而消息的可靠传递由消息系统负责。消息发布者只需将消息发布到消息队列(MQ)中,无需关注谁来获取;消息使用者只需从 MQ 中获取消息,不必在意消息的发布者。这种方式使得发布者和使用者彼此解耦,无需知晓对方的存在。

YUNYINGXIA的博客 1767

Kafka 3.x.x 入门到精通(05)——对标尚硅谷Kafka教程

Kafka是一个由Scala和Java语言开发的,经典高吞吐量的分布式消息发布和订阅系统,也是大数据技术领域中用作数据交换的核心组件之一。以高吞吐,低延迟,高伸缩,高可靠性,高并发,且社区活跃度高等特性,从而备受广大技术组织的喜爱。

这里有一只小马吖 2332

Kafka思维导图

Kafka分区消费模型流程图 Kafka基础知识梳理 kafka基本知识点 Kafka快速部署以及集群优化 如何快速部署Kafka使用教程 Kafka权威指南 《Kafka权威指南》读书笔记 kafka kafka轻松入门,开拓进阶,笔记教程中包括zookeeper和kafka环境搭建、zookeeper和kafka集群搭建、kafka必备图解概念、springcloud整合kafka ...

极客神殿 1991

大数据系列教程之 Kafka基础

Kafka 是一个分布式的基于发布 / 订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。Kafka 0.9 版本以前,offset 存储在 Zookeeper,0.9 版本后,默认将 offset 存储在 Kafka 的一个内置的 topic 中。除此之外,Kafka 还可以选择自定义存储 offset。offset 的维护是相当繁琐的,因为需要考虑到消费者的Rebalance。

Coder_Boy_的博客 1770
上一篇: SparkCore--详细
下一篇: Zookeeper 部署及基础原理
努力生活的黄先生
博客等级 码龄7年 38粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力生活的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值