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 之后发送数据

下载方式:https://pan.quark.cn/s/c9b9b647468b ### 初级JSP程序设计教程核心内容解析#### 一、JSP基础概述JSP(JavaServer Pages)是由Sun Microsystems公司创建的一种动态网页技术规范,主要应用于构建动态网站及Web应用。JSP技术使得开发者能够将动态数据与静态HTML文档整合,从而实现网页内容的灵活性和可变性。##### JSP的显著特性:1. **动态与静态内容的分离**:JSP技术支持将动态数据(例如数据库查询结果、实时时间等)嵌入到静态HTML文档中。这种设计方法增强了网页的适应性和可维护性。2. **易用性**:开发者可以利用常规的HTML编辑工具来编写静态部分,并通过简化的标签技术将动态内容集成到页面中。3. **跨平台兼容性**:基于Java平台的JSP具有优良的跨操作系统运行能力,能够在多种不同的系统环境中稳定工作。4. **强大的后台支持**:JSP能够通过JavaBean组件访问后端数据库及其他资源,以实现复杂的数据处理逻辑。5. **执行效率高**:JSP页面在初次被请求时会被转换为Servlet,随后的请求可以直接执行编译后的Servlet代码,从而提升了服务响应的效率。#### 二、JSP指令的运用JSP指令用于设定整个JSP页面的行为规范。这些指令通常放置在页面的顶部,向JSP容器提供处理页面的相关指导信息。##### 主要的指令类型:1. **Page指令**: - **语法结构**:`<%@ page attribute="value" %>` - **功能**:定义整个JSP页面的运行特性,如设定页面编码格式、错误处理机制等。 - **实例**: ...
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 的基本原理理解及其实际应用场景探讨,可以更好地掌握如何利用这一强大技术解决现实世界中的挑战性问题。 问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值