kafka个人笔记

kafka 日志清理机制详解 说到kafka的日志清理策略,就会涉及到配置项cleanup.policy,在broker server端配置项是log.cleanup.policy,在topic级别则是cleanup.policy。所以可以是全局设置,或者单独对某个topic设置,一般不会修改默认值(即delete),根据业务需求自己单独可对topic设置其他policy。 log.cleanup.policy的默认值是delete,可选项有delete/compact,在0.10版本后才可以同时配置delete,compact。 阅读详情

大部分内容源于https://segmentfault.com/a/1190000038173886, 本人手敲一边加强印象方便复习

消息系统的作用

解耦
冗余
扩展性
灵活性(峰值处理
可恢复
顺序保证
缓冲
异步

  • 解耦:扩展两边处理过程,只需要让他们遵守约束即可
  • 冗余:持久化数据:规避丢失风险。采用 插入-获取-删除范式明确指出消息被处理完毕
  • 扩展性:解耦处理过程,容易扩展处理过程增大消息处理频率
  • 灵活性(峰值处理:访问激增情况不常见,无需投入过多标准资源。使用消息队列顶住访问压力
  • 可恢复:系统失效时仍可保证队列消息在系统恢复后处理
  • 顺序保证:kafka保证partition内消息有序
  • 缓冲:控制和优化 数据经过系统的速度,解决生产、消费速度不一致的问题
  • 异步:允许用户把一个或若干个消息放入队列,且不立即被处理

架构

在这里插入图片描述

  1. producer,消息生产者
  2. broker:kafka集群的服务器
  3. topic:消息的类别
  4. partition:kafka分配单位,一个topic包含一个或多个partition
  5. consumer:消息消费者,终端或服务
  6. comsumer group:
    high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
  7. replica:partition副本
  8. leader:特殊的replica,producer和consumer只和leader交互
  9. follower:除了leader的replica都为follwer,复制数据
  10. controller:服务器:用于leader选举和failover
  11. zookepper,存储集群meta信息

发布消息

producer用push发布到broker,消息被append到partition,顺序写磁盘

消息路由

//构造函数
public ProducerRecord(String topic, Integer partition, Long timestamp, K key, V value) {
     if (topic == null)
          throw new IllegalArgumentException("Topic cannot be null");
     if (timestamp != null && timestamp < 0)
          throw new IllegalArgumentException("Invalid timestamp " + timestamp);
     this.topic = topic;
     this.partition = partition;
     this.key = key;
     this.value = value;
     this.timestamp = timestamp;
}


private int partition(ProducerRecord<K, V> record, byte[] serializedKey , byte[] serializedValue, Cluster cluster) {
     Integer partition = record.partition();
     if (partition != null) {//指定了 partition 则直接使用
          List<PartitionInfo> partitions = cluster.partitionsForTopic(record.topic());
          int lastPartition = partitions.size() - 1;
          if (partition < 0 || partition > lastPartition) {
               throw new IllegalArgumentException(String.format("Invalid partition given with record: %d is not in the range [0...%d].", partition, lastPartition));
          }
          return partition;
     }//否则使用 key 计算
     return this.partitioner.partition(record.topic(), record.key(), serializedKey, record.value(), serializedValue, cluster);
}

public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {
     List<PartitionInfo> partitions = cluster.partitionsForTopic(topic);
     int numPartitions = partitions.size();
     if (keyBytes == null) {//轮询
          int nextValue = counter.getAndIncrement();
          List<PartitionInfo> availablePartitions = cluster.availablePartitionsForTopic(topic);
          if (availablePartitions.size() > 0) {
               int part = DefaultPartitioner.toPositive(nextValue) % availablePartitions.size();
               return availablePartitions.get(part).partition();
          } else {
               return DefaultPartitioner.toPositive(nextValue) % numPartitions;
          }
     } else {
          //对 keyBytes 进行 hash 选出一个 patition
          return DefaultPartitioner.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
     }
}

  1. 指定partition直接用
  2. 未指定partition但指定了key,对key进行hash得到partition
  3. 都未指定,使用轮询

写入流程

在这里插入图片描述

  1. producer从zk的/brokers/…/state找到leader
  2. producer发消息给leader
  3. leader把消息写入log
  4. follower从leader拉取消息写入log后发送ACK给leader
  5. leader收到所有replica的ACK后,增加high watermark(位置信息,即位移(offset))给producer发送ack

投递保证

    ① At most once 消息可能会丢,但绝不会重复传递

    ② At least one  消息绝不会丢,但可能会重复传递

    ③ Exactly once 每条消息肯定会被传输一次且仅传输一次,很多时候这是用户想要的

默认 at least one

接收消息的行为

  1. comsumer从broker读取消息后,可以选择commit或处理消息
    1. 如果commit
      1. zookeeper存在comsumer在partition下读取消息的offset
      2. comsumer下次读取partition从下一条开始读取
    2. 未commit
      1. 下次读取位置和上次commit后开始位置相同

at most once

读完消息先commit再处理消息。
若commit后未处理消息系统崩坏,下次重新开始工作无法读到已提交但未处理的消息

At least once

读完消息先处理再commit消费状态(保存offset)
若处理消息后未commit系统崩坏,重新工作的时候会处理未commit的消息(处理两次)

Exactly once 两阶段提交

协调offset和实际操作的输出。但由于许多输出系统不支持两阶段提交,更为通用的方式是将offset和操作输入存在同一个地方

  1. consumer拿到数据后可能把数据放到HDFS
  2. 最新的offset和数据一起写到HDFS
  3. 保证offset更新和数据输出同时完成

(目前就high level API而言,offset是存于Zookeeper中的,无法存于HDFS,而low level API的offset是由自己去维护的,可以将之存于HDFS中)。

消息保存

topic分为多个partition,每个partition对应一个文件夹

无论消息是否被消费,kafka 都会保留所有消息。有两种策略可以删除旧数据

  • 基于时间:log.retention.hours=168
  • 基于大小:log.retention.bytes=1073741824
log.cleanup.policy=delete启用删除策略
直接删除,删除后的消息不可恢复。可配置以下两个策略:

清理超过指定时间清理: 
log.retention.hours=16

超过指定大小后,删除旧的消息:
log.retention.bytes=1073741824

请添加图片描述

topic的创造

  1. controller在ZK的/brokers/topics 节点上注册 watcher
    ,topic被创建的时候,controller 会通过 watch 得到该 topic 的 partition/replica 分配。
  2. controller从 /brokers/ids 读取当前所有可用的 broker 列表,对于 set_p 中的每一个 partition:
    1. 分配给partition的所有replica(称为AR)任选一个可用的broker作为leader并将AR设置为ISR
    2. 新的 leader 和 ISR 写入 /brokers/topics/[topic]/partitions/[partition]/state
  3. controller 通过 RPC 向相关的 broker 发送 LeaderAndISRRequest。

请添加图片描述
删除 topic 的序列

  1. controller 在 zooKeeper 的 /brokers/topics 节点上注册 watcher
  2. topic 被删除,则 controller 会通过 watch 得到该 topic 的 partition/replica 分配
  3. 若 delete.topic.enable=false,结束;反之controller 注册在 /admin/delete_topics 上的 watch 被 fire,controller 通过回调向对应的 broker 发送 StopReplicaRequest

kafka HA 高可用性

replica

同一个 partition 可能会有多个 replica —— erver.properties 配置中的 default.replication.factor=N

若没有replica,broker死机

  • patition 的数据都不可被消费
  • producer 也不能再将数据存于其上的 patition

引入replica,需要选取leader,leader与producer和consumer交互,其他replica与leader复制数据

分配规则

  1. 将所有 broker(假设共 n 个 broker)和待分配的 partition 排序
  2. 将第 i 个 partition 分配到第(i mod n)个 broker 上
  3. 将第 i 个 partition 的第 j 个 replica 分配到第((i + j) mode n)个 broker上

leader failover

partition 对应的 leader 宕机时,需要从 follower 中选举出新 leader

新的 leader 必须拥有旧 leader commit 过的所有消息

zookeeper 中(/brokers/…/state)动态维护了一个 ISR(in-sync replicas)。只有 ISR 里面的成员才能选为 leader。若有f个replica,partition可以保证f-1个replica失效情况下消息不丢失

failover方案

  • 等待 ISR 中的任一个 replica 活过来,并选它作为 leader。可保障数据不丢失,但时间可能相对较长。
  • 选择第一个活过来的 replica(不一定是 ISR 成员)作为 leader。无法保障数据不丢失,但相对不可用时间较短
    多用第二种方式

broker failover

在这里插入图片描述

  1. controller在zookeeper的/brokers/ids/[brokerId] 节点注册 Watcher,当 broker 宕机时 zookeeper 会 fire watch
  2. controller从/brokers/ids 节点读取可用broker
  3. controller决定set_p,集合包含死机broker上所有partition
  4. 对set_p所有partition进行: 1. 读取/brokers/ids 节点读取可用broker的ISR 2. 决定新leader, 新leader ISR controller_epoch和leader_epoch信息写入state结点
  5. 通过RPC给broker发送 leaderAndISRRequest 命令

controller failover

controller 宕机时会触发 controller failover

  1. broker在zookeeper的controller节点注册watcher
  2. controller宕机时,zookeeper临时节点消失
  3. 所有存活broker收到fire通知
  4. 每个broker尝试创建新的controller path,其中一个竞选成功为controller
  5. 当选成功触发KafkaController.onControllerFailover
1. 读取并增加 Controller Epoch。
2. 在 reassignedPartitions Patch(/admin/reassign_partitions) 上注册 watcher。
3. 在 preferredReplicaElection Path(/admin/preferred_replica_election) 上注册 watcher。
4. 通过 partitionStateMachine 在 broker Topics Patch(/brokers/topics) 上注册 watcher。
5. 若 delete.topic.enable=true(默认值是 false),则 partitionStateMachine 在 Delete Topic Patch(/admin/delete_topics) 上注册 watcher。
6. 通过 replicaStateMachine在 Broker Ids Patch(/brokers/ids)上注册Watch。
7. 初始化 ControllerContext 对象,设置当前所有 topic,“活”着的 broker 列表,所有 partition 的 leader 及 ISR等。
8. 启动 replicaStateMachine 和 partitionStateMachine。
9. 将 brokerState 状态设置为 RunningAsController。
10. 将每个 partition 的 Leadership 信息发送给所有“活”着的 broker。
11. 若 auto.leader.rebalance.enable=true(默认值是true),则启动 partition-rebalance 线程。
12. 若 delete.topic.enable=true 且Delete Topic Patch(/admin/delete_topics)中有值,则删除相应的Topic。

消费

kafka 提供了两套 consumer API:

The high-level Consumer API
The SimpleConsumer API

consumer API

high-level提供kafka消费数据的抽象

  1. 提供了 consumer group 的语义
  2. 消息只能被group内一个consumer消费
  3. 消费的时候不关注offset
  4. 最后一个offset由zookeeper保存

使用high-level consumer API可以是多线程应用

if(消费线程 > partition){
	部分线程收不到消息
}
if(消费线程 < partition){
	有些线程收到多个partition消息
}

if(一个线程消费多个 patition){
	无法保证收到消息的顺序
}

** SimpleConsumer API**

适用以下情况

  • 多次读取一个消息
  • 只消费一个 patition 中的部分消息
  • 使用事务来保证一个消息仅被消费一次

partition, offset, broker, leader不透明,需要自己管理

  • 追踪offset确定下一条消费的信息
  • 找出每个partition的follower
  • 处理leader变更

流程如下

  1. 查找到一个“活着”的 broker,并且找出每个 partition 的 leader
  2. 找到partition的follower
  3. 定义好请求,该请求应该能描述应用程序需要哪些数据
  4. fetch数据
  5. 识别leader变化并做出响应

consumer group
kafka分配单位是partition,consumer属于一个group
一个partition被一个group内的一个consumer消费(但是多个group可以同时消费这个partition)

实现离线处理与实时处理

  • spark 实时处理
  • hadoop 离线处理

消费方法

consumer用pull模式从broker读数据

push 模式很难适应消费速率不同的消费者

  • 消息发送速率是由 broker 决定的
  • 尽可能以最快速度传递消息
  • 容易造成 consumer 来不及处理消息(拒绝服务、网络拥塞

pull模式,consumer根据自己的能力消费信息

pull的优点

  • 简化broker设计
  • consumer自主控制消费速率
  • consumer自主控制消费方式 —— 批量/逐条
  • 选择不同提交方式

消费者递送保证

consumer 设置为 autocommit,consumer 一旦读到数据立即自动 commit(Exactly once

实际使用过程中,并不是consumer读完消息就结束了,还需要进一步处理。
处理和commit顺序决定了 consumer delivery guarantee

  • 先commit,后处理消息(At most once
    • consumer 在 commit 后还没来得及处理消息就 crash
    • 重新开始工作后就无法读到刚刚已提交而未处理的消息
  • 先处理再commit( At least once
    • 处理完消息之后 commit 之前 consumer crash
    • 恢复工作:处理刚刚未 commit 的消息
  • 两阶段提交
    (offset 和操作输入存在同一个地方,会更简洁和通用)
    (若不支持,consumer 拿到数据后可能把数据放到 HDFS,如果把最新的 offset 和数据本身一起写到 HDFS,那就可以保证数据的输出和 offset 的更新要么都完成,要么都不完成,间接实现 Exactly once) —— high-level API里面offset存于zookeeper中,无法存于HDFS,simple可以存于HDFS

consumer rebalance

触发机制

  • consumer加入退出
  • partition改变(broker 加入退出

算法如下

  1. 目标topic的partition排序,存于PT
  2. 选择consumer group下所有consumer排序, 存于CG
  3. N = ⌈ s i z e ( P T ) / s i z e ( C G ) ⌉ N = \lceil size(PT)/size(CG)\rceil N=⌈size(PT)/size(CG)⌉
  4. 对group内原本的分配partition解除关系
  5. 然后每N个partition分配给一个consumer

consumer调整了单个partition后,为了保证一致性,group内其他consumer也应触发balance

导致以下问题

herd effect

  • broker,comsumer增减触发rebalance

split brain

  • 每个consumer单独通过zk判断broker和consumer宕机,不同的consumer同时从zookeeper看到的view可能不一致 —— 导致不正确的rebalance
  • 所有consumer不知道其他consumer的rebalance是否成功,导致kafka工作状态不正确
  • 因此0.9开始使用中心coordinator空值rebalance,计划在consumer客户端分配方案
kafka彻底删除topic(cleanup policy)、清除特定topic数据 ①$KAFKA/bin/kafka-topics.sh --delete --zookeeper Desktop:2181 --topic test-0921 ②$ZOOKEEPER/bin/zkCli.sh -server Desktop:2181 delete /config/topics/test-0921 deleteall /brokers/topics/test-0921 阅读详情

相关推荐

Kafka个人总结

1 Kafka是什么? 简单来说,Kafka就是一个消息系统/消息中间件,虽然Kafka新增了流处理(统计分析计算)的新特性,但是我们一般还是使用Spark,Flink等作为流处理的软件. 2 Kafka的作用是什么? 1)应用解耦:多个应用可通过消息队列对消息进行处理,应用之间相互独立,互不影响. 图例: 2)异步处理:相比于串行和井行处理,异步处理可以减少处理的时间. 3)流量削峰:流量高峰期,可通过消息队列来控制流量, 避免流量过大而引起应用系统崩溃. 4)消息通信:实现点对点消息队列,或者多对多的

weixin_47116289的博客 1690

Kafka消息保留-清理策略

Kafka Broker默认的消息保留策略是:要么保留一定时间,要么保留到消息达到一定大小的字节数。 当消息达到设置的条件上限时,旧消息就会过期并被删除,所以,在任何时刻,可用消息的总量都不会超过配置参数所指定的大小。 topic可以配置自己的保留策略,可以将消息保留到不再使用他们为止。 因为在一个大文件里查找和删除消息是很费时的事,也容易出错,所以,分区被划分为若干个片段。默认情况下,每个片段包含1G或者一周的数据,以较小的那个为准。在broker往leader分区写入消息时,如果达到片段上限,就关闭当

曲终人散 3709

尚硅谷大数据技术-Kafka视频教程-笔记01【Kafka 入门】

尚硅谷大数据技术-Kafka视频教程-笔记01【Kafka 入门】

upward 2110

【Kafka基础】-- Log Cleanup 策略

Min.Cleanable.dirty.ratio(默认为0.5):若是设置的更高,则会有更高效的清理,但是更少的清理操作触发。若是设置的更低,则清理的效率稍低,但是会有更多的清理操作被触发。log.cleanup.policy=delete 的策略,根据数据保留的时间、以及log的max size,对数据进行cleanup。如何处理过期数据是根据指定的policy(策略)决定的,而处理过期数据的行为,即为log cleanup。

欢迎来到我的博客,一起探索代码里的世界! 1729

Kafka日志的清除策略

一、说明 Kafka将消息存储在磁盘中,为了控制磁盘占用空间的不断增加就需要对消息做一定的清理操作。Kafka中每一个分区partition都对应一个日志文件,而日志文件又可以分为多个日志分段文件,这样也便于日志的清理操作。Kafka提供了两种日志清理策略:日志删除(Log Deletion):按照一定的保留策略来直接删除不符合条件的日志分段。log.cleanup.policy=delete ...

hyj 4812

Redis架构演进:从主从、哨兵到集群,如何支撑亿级流量的秒杀场景?

本文深入探讨了分布式缓存Redis的三种核心高可用模式:主从复制、哨兵模式与集群模式。以高并发的电商秒杀业务为切入点,我们分析了每种模式的优缺点和适用场景,并最终选择Redis集群模式作为最佳解决方案。文章提供了基于Spring Boot和Spring Data Redis的完整实现代码,详细展示了如何配置和使用Redis集群来应对高并发、高可用的挑战,旨在帮助开发者在实际项目中做出正确的技术选型和架构设计。

lingRJ777的博客 723

Kafka个人笔记中篇

Kafka个人解读中篇Kafka高效读写数据1.顺序写磁盘注意2.Zero拷贝Zookeeper在Kafka中的作用Kafka事务Producer事务Consumer事务Kafka APIProducer API消息发送流程相关参数异步发送API同步发送APIConsumer API自动提交offset手动提交offset同步提交offset异步提交offset自定义存储offset Kafka高...

C_Xiang_Falcon的博客 1190

Postman调试海康ISAPI接口全记录:从鉴权失败到成功修改设备名的踩坑指南

本文详细记录了使用Postman调试海康ISAPI接口的全过程,从鉴权失败到成功修改设备名的实战经验。涵盖Digest认证机制、XML请求体构造、常见错误排查及代码实现过渡,帮助开发者高效解决海康设备集成中的各种问题。

weixin_42620913的博客 660

Kafka个人笔记前篇

Kafka个人总结一Kafka的概述消息队列的回顾消息队列消息队列的好处消息队列的两种模式Kafka的基础架构Kafka架构深入Kafka工作流程及文件存储机制Kafka生产者分区策略数据可靠性保证acks参数配置:故障处理细节Exactly Once语义(精确一次)Kafka消费者消费模式分区分配策略offset维护消费者组测试 Kafka的概述 kafka是一个分布式的消息队列,基于发布/订阅...

C_Xiang_Falcon的博客 766

Matlab Robotics Toolbox实战:四自由度机械臂建模与仿真全流程(附代码)

本文详细介绍了使用Matlab Robotics Toolbox进行四自由度机械臂建模与仿真的全流程,包括DH参数定义、模型构建、可视化、运动学仿真及交互控制。通过实战案例和代码示例,帮助读者快速掌握机械臂建模技巧,提升机器人学习效率。

weixin_42538752的博客 415

【软件系统架构】系列四:嵌入式技术

嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软硬件集成于一体的专用计算机系统。它需要满足功能、可靠性、成本、体积、功耗等方面的严格要求。 嵌入式系统一般由以下组成部分构成:

moton2017的博客 999

kafka个人琐碎笔记

1.kafka处理实时应用和持续流数据(大数据流管道),可以订阅和发布数据流,集群并且可以存储数据。与传统的消息中间件不同的是消息中间件只是传递消息,而它是流的方式处理。Hadoop是大数据的数据分析,kafka是流的方式实时处理。与etl相比除了把数据移动到另外一个地方外还能在移动过程中触发其他数据流应用。总结为流平台系统。 2.存储单元为消息是二进制,并且传输是以批次进行(同一个主题和同一个分...

yuliantao的专栏 257

大疆视觉算法面试,手推极线几何这关刷掉了一半人

摘要:大疆机器视觉算法工程师面试重点考察目标检测工程优化、深度估计几何原理和视觉SLAM全流程。目标检测侧重模型压缩和部署优化,需掌握知识蒸馏、量化及算子融合;深度估计要求推导双目几何并理解单目深度恢复方法;视觉SLAM需熟悉前后端流程及ORB-SLAM3/VINS-Mono区别。面试常要求手推PnP等公式,注重实践能力。准备需重点练习公式推导和代码实现,掌握工程落地细节。

郑伟强dev的专栏 192

flume+kafka消费数据【纯个人笔记】

1.数据生产 使用java代码往一个文件中写入数据 package com.mobile; import java.io.*; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * @author kaiya * @Desc 数据生产 * @date 2020/5/6 20:33 */ public

qq_26904895的博客 1006

【固态变压器(SST)全维度解析】发展历史、技术、玩家、挑战与数据中心趋势

SST正处于技术突破向规模化商用的关键过渡期,随着SiC/GaN器件降价、标准完善、可靠性数据积累,其在数据中心的渗透率将快速提升。短期(2025 - 2027年)以示范项目为主,中长期(2030年后)有望成为超大规模智算中心的主流供电方案。

昔时扬尘处 2127

支付域——“清算、结算、清结算”

本文深入探讨了支付系统中的清算和结算流程,包括核心流程、模块设计及特殊场景处理。文章详细阐述了交易收单、资金冻结、清分规则、清算批处理、结算出账等关键步骤,并讨论了交易失败、数据不一致、退款、汇率波动等异常情况的处理方法。

庄小焱 2558

kafka个人笔记精简版(kafka高吞吐量的奥秘)

kafka高吞吐量的奥秘(详解在下面) kafka主要使用了以下几个方式实现了超高的吞吐率 顺序读写 kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能 顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写 Kafka官方给出了测试数据(Raid-5,7200rpm): 顺序 I/O: 600MB/s 随机 I/...

liao0801_123的博客 435

MediaPipe 教程:从安装到应用-全网最全

MediaPipe是Google推出的开源框架,专为构建机器学习管道设计,可以高效处理视频、音频等时间序列数据。本文教程从安装到应用逐步讲解: 安装步骤简单,只需通过pip安装mediapipe包并验证版本; 重点演示人体姿态检测功能,可识别33个身体关键点; 提供基础代码实现,包括视频捕获、关键点检测与可视化; 强调模块化开发,将功能封装成类以提高代码复用性。 教程适合初学者,通过清晰指引和实用代码示例,帮助快速实现计算机视觉应用。

FJN110的博客 1563

Kafka个人笔记后篇(自定义拦截器及监控,与flume对接)

Kafka个人解读后篇自定义interceptorinterceptore原理interceptor实现第一个时间戳interceptor第二个计数器interceptor创建producerinterceptor结果Kafka监控Kafka EagleFlume对接Kafka 自定义interceptor interceptore原理 Producer拦截器(interceptor)是在Kafk...

C_Xiang_Falcon的博客 763

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

kafka学习总结(该文章仅是个人的学习笔记,不做资料参考的用途)

Kafka学习总结 kafka基础 基础架构 消息队列作用 解耦 缓冲 - 解决生产消息和消费消息不一致性问题 峰值处理 异步通信 Kafka两种模式 点对点 1对1 消费者主动拉 消费者收到既删除 发送消息到Queen 发布/订阅 1对多 一对多 可拉可推 消费者收到不会立即删除 发送消息到topic kafka基础架构 角色: Producer Consumer ConsumerGroup Partition Broker Topic Replica leader fol

weixin_43690366的博客 349

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

大数据个人笔记——Zookeeper、Hadoop、flume、hive、sqoop、hbase、kafka、storm、spark的安装及使用

大数据笔记 Zookeeper的安装及使用 安装步骤如下: [root@localhost ~]# cd /home/software [root@localhost software]# tar -xvf zookeeper-3.4.10.tar.gz [root@localhost software]# cd zookeeper-3.4.10 [root@localhost zookeepe...

Winyar的博客 1756

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

蓝桥杯java随笔分类_京东三面凉凉:java+spring+jvm+kafka+微服务等一个都讲不清

以下来自粉丝投稿:三面大概九十分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了(呜呜呜~)。回来之后把这些题目做了一个分类并整理出答案(强迫症的我~狂补知识~)分为spring+jvm+微服务+kafka+MongoDB等五类,接下来分享一下我的这京东面试的面经+一些我的学习笔记。 注意注意:需要小编整理的spring+jvm+微服务+kafka+MongoDB等五类面试答案、...

weixin_39854730的博客 119

首次出战!腾讯T4大佬秘密分享《Kafka源码实战》,内容之全让你面试不再心惊胆战!

说句实话,如果一个打工人不想提升自己,那便没有工作的意义,毕竟大家也没有到养老的年龄。当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。推荐一份Java架构之路必备的学习笔记,内容相当全面!!!成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?

2401_84691837的博客 812

kafka使用标准个人总结

【推荐】高吞吐量规定:在需要处理海量数据且要求高吞吐量时,选择使用Kafka。原因:得益于其分布式架构、批量传输以及节点间负载均衡,Kafka能够处理更高的并发量和数据流量。【推荐】大数据处理和日志收集规定:对于需要进行实时数据分析和挖掘的大数据处理和日志收集,推荐使用Kafka。原因:Kafka提供了强大的数据处理和存储能力,能够实现数据的实时收集、处理和分发。【推荐】消息持久化规定:当需要长期保留和随时查询历史消息时,应选择Kafka进行消息持久化。

少说,多做。 4885

【MQ】Kafka笔记

笔记来源:尚硅谷视频笔记2.0版+2.1版 黑马视频:Kafka深入探秘者来了 笔记、代码下载地址:https://me.youkuaiyun.com/download/hancoder 第1章 Kafka概述 1.1 定义 Kafka 是一个分布式的基于【发布/订阅模式】的消息队列(Message Queue),主要应用于 大数据实时处理领域。 1.2 消息队列 消息队列又称消息引擎,消息中间件 1.2.1 传统消息队列的应用场景 消息队列的好处 1)解耦: 允许你独立的扩展或修改两边的处理过程,只要确保

努力充实,远方可期 1万+

Kafka框架学习笔记 尚硅谷

Kafka框架学习笔记 尚硅谷 因为本人不是大数据方向的 但是公司一个项目用到了kafka 我就学习一下 如果笔记有什么不对的地方 敬请谅解 文章目录Kafka框架学习笔记 尚硅谷因为本人不是大数据方向的 但是公司一个项目用到了kafka 我就学习一下 如果笔记有什么不对的地方 敬请谅解Kafka概述定义传统消息队列的应用场景使用消息队列的好处消息队列的Kafka基础框架构Kafka快速入门安装操作命令命令行控制台生产者消费者测试数据日志分离Kafka高级工作流程文件存储机制Kafka生产者分区策略生产

weixin_43691773的博客 2751
上一篇: Hive 知识点八股文记录 ——(二)优化
下一篇: Note of CLEAN CODE chapter 2 - Meaningful Name
JamSlade
博客等级 码龄6年 1万+粉丝 403原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值