Kafka

Kafka的基础架构
kafka
(一)简介
Producer:消息的生产者,向kafka broker 发送消息的客户端

consumer:消息的消费者,向kafka broker 订阅消息的客户端

Consumer Group(CG):消费者组,组内的每个消费者负责消费不同分区的数据,且一个分区只能被一个消费者消费;组与组之间互不影响。

Broker:每个kafka服务器就是一个broker,kafka集群是由多个broker组成,broker中又有多个topic

Partition:实现kafka的扩展性,一个大的topic分布到不同的broker上,一个topic又可以分成多个partition,每个partition都是一个有序的队列

Replica:kafka存在副本机制,一个topic 的每个分区都有多个副本,一个leader和多个follower

Leader:每个分区多个副本的主,所有数据的读写都是由leader完成的
Follower:实时从leader中同步数据,保持着与leader的同步;当leader发生故障,会从follower中选举出新的leader

(二)kafka的文件存储
kafka中 producer生产的数据存储在每个partition对应的log 文件中,其中的每条数据都保存着自己的offset,一个log文件 分成多个segment,对应着两个文件.index 和 .log

(三)分区原因和分区原则
原因:①方便再集群中的扩展
② 提高并发,可以以partition为单位进行读写

分区原则:① 指明partition的情况下,直接将指明的值作为partition值
②没有指明partition 但是有key的情况下,将key的hash值与topic的分区数进行取余得到partiton值
③ 没有指明partition 也没有key的情况下,随机产生一个整数,将这个整数与topic可用的partition总数进行取余获得partition值----------round-robin算法

(四)Kafka ACK 应答机制

服务器的ack的级别
0:producer 发送数据 不等落盘就返回ack,那么在数据发出之后,broker产生了故障,那么就会造成数据的丢失(At Most Once)
1:producer 等待broker的ack,leader将数据落盘之后返回ack,那么在落盘成功之前,leader发生了故障,会造成数据的丢失
-1(all):producer 等待broker 的ack,等待partition的leader和follower全部落盘成功后才返回ack,如果在follower同步完成后,broker发送ack之前,leader发生了故障,那么会造成数据的重复(At Least Once)

(五)Kafka的ExactlyOnce语义
0.11 版本,引入幂等性,幂等性是指,Producer 不论向broker发送多少次重复的数据,server端只会持久化为一条
(ack 级别设置为-1 )At Least Once + 幂等性 = Exactly Once

(六)消费者
① 消费者的消费方式
consumer采用pull(拉)模式从broker中读取数据。

② push模式和pull模式的对比
Push模式很难适应不同消费速率的消费者,因为消息的速率是由broker控制的;push的目的是以最快的速度传递消息,容易造成消费者来不及消费消息
Pull模式 consumer自主的控制消费消息的速率,还可以控制自己的消费方式 可以批量消费和逐条消费

(七)分区分配原则
kafka存在着两种分配策略:Range 和 Roundrobin

(八)offset的维护
在kafka0.9版本之前,consumer默认将offset保存在zookeeper中,0.9版本之后将offset保存在kafka的一个内置topic中,次topic为_consumer_offsets

(九) Kafka API
Producer 的发消息流程
producer
Producer的发送流程分成两个线程 main线程和sender线程
main线程: 经过interceptor ,serializer ,partitioner 将数据发往 一个共享变量RecordAccumulator
sender线程: 不断从RecordAccumulator 拉取消息发送到kafka broker;
与sender相关的两个参数
bacth.size —>数据累积到bacth.size大小才会发送消息
linger.ms---->如果没有达到batch.size sender等待linger.time 之后发送数据

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
11-11
### Kafka入门教程及使用场景 #### 一、Kafka简介 Apache Kafka 是一种分布式流处理平台,能够实现高吞吐量的消息传递系统。它最初由 LinkedIn 开发并开源,现已成为 Apache 软件基金会的一部分[^1]。 #### 二、Kafka的安装与配置 以下是基于 Docker 的 Kafka 安装方法: ```yaml version: "1" services: kafka: image: 'bitnami/kafka:latest' hostname: kafka ports: - 9092:9092 - 9093:9093 volumes: - 'D:\Docker\Kafka\data:/bitnami/kafka' networks: - kafka_net environment: # KRaft settings - KAFKA_CFG_NODE_ID=0 - KAFKA_CFG_PROCESS_ROLES=controller,broker - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 # Listeners - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.2.51:9092 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT networks: kafka_net: driver: bridge ``` 运行命令如下: ```bash docker-compose -f .\docker-compose.yml up -d ``` 上述 YAML 文件定义了一个简单的 Kafka 集群环境,并通过 `docker-compose` 启动服务[^1]。 #### 三、Kafka的基础概念 在 Kafka 中,消息被存储在主题(Topic)中,而每个 Topic 又分为若干分区(Partition)。每个分区有一个 Leader 和零个或多个 Follower。Leader 负责读写操作,Follower 则同步数据以提供冗余支持。当创建一个新的 Topic 时,Kafka 自动将 Partition 的 Leader 均匀分布到各个 Broker 上,从而提高系统的可靠性和性能[^2]。 #### 四、可视化管理工具 Offset Explorer 是一款常用的 Kafka 数据管理和监控工具,可以帮助开发者更直观地查看和分析 Kafka 主题中的偏移量和其他元数据信息[^1]。 #### 五、Kafka的主要使用场景 1. **日志收集**:Kafka 可用于集中式日志采集方案,实时捕获来自不同服务器的日志文件。 2. **消息队列**:作为传统 MQ 替代品,Kafka 提供高性能异步通信机制。 3. **活动跟踪**:记录用户的在线行为轨迹,便于后续数据分析挖掘价值。 4. **指标监测**:构建企业级运营状态仪表盘,展示关键业务指标变化趋势。 5. **ETL流程优化**:连接多种数据库之间复杂的数据转换过程,提升效率减少延迟。 #### 六、总结 通过对 Kafka 的基本原理理解及其实际应用场景探讨,可以更好地掌握如何利用这一强大技术解决现实世界中的挑战性问题。 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值