kafka的学习心得

Kafka学习心得(初级) 项目需要使用kafka消息队列来获取订阅推送的消息,一开始是完全懵逼的,之前根本没有接触过啊,kafka是个啥东西,他是怎么工作的,需要哪些jar包等,一窍不通,无从下手。询问过公司的几位老员工,都表示之前没用过,想抄近路的想法泡汤,只能自己去慢慢啃了。 首先是上网搜索了下,kafka到底是个啥,kafka是用来干啥的,他是怎么样来工作的,都是一些书面概括的知识点,看完之后只能说是大概了解了,不... 阅读详情

最近项目开始使用kafka作为消息中间件,理由是支持更高的吞吐量和轻量级(相对传统的mq,如rabbit)。

与rabbitmq的不同

重broker与重consumer

kafka跟rabbit的设计上有很多不同,rabbit上存在exchange、queue以及两者binding,生产者根据需要需要发送给不同类型exchange,经exchange的绑定关系路由到特定的queue上,然后由消费者在指定的queue上消费消息,整个流程由rabbit进行分配,因此是重broker的。而kafka是重视consumer,消费哪种消息由客户端自己控制,broker上只是简单的存储下消息体。kafka通过客户端自己记录下的offset在每个队列(实际是分区partition)中的读取的最后一个索引,下次读取则在当前的offset上做文章。
这里写图片描述

消息持久化

kafka和rabbit都支持消息的持久化,但是两者说的不是一回事。rabbit是将开启了持久化的队列保存到磁盘中,以便宕机后能恢复到队列中。rabbit的消息由消费者消费后手动或者自动应答ask,rabbit才将消息从队列中删除,而这个点,也是跟kafka一个很大不同的地方。在kafka上,消息被消费者消费后,不会从队列中删除,而是继续保存在队列中,当然这个会有一个过期时间。因此可以将kafka当成一个日志管理系统,这样做还有个优点,消费者可以重新消费历史记录(利用上述的offset)。

综合以上,一般在互联网的应用上,kafka可能会更受青睐,因为不需要实现像rabbit这样笨重的协议AMQP,更加轻量级;还有着更高的吞吐量,rabbit默认的吞吐量上限是10W,大于这个数运维就拒绝消息了。而kafka远不止这个数字。但是如果应用上的消息需要支持事务型,不能丢消息的场景下,使用rabbit会更适合,比如营收系统,少一条都是一次纠纷。同时rabbit还有如延迟队列等优点。

kafka分区partition、topic、replication

之前一直对于kafka的分区不是很理解,其实我觉得叫分片可能更适合,对于有学习过一些nosql的同学可能更容易对号上座。kafka将所有数据进行分片,所以每个分片上的数据都是不同,所有分片上的消息合在一起就是整个topic的消息。而replication针对的粒度,也是一个partition。所以当看到topic的配置信息为partition=10,replication=2的时候,理论上该topic上的partition的消息就是10*2。

这里写图片描述

刚学习kafka的时候还有一个疑惑,官网的例子中使用了三个broker节点,同时replication也是3个,于是一股脑认为broker的个数(一般为机器)就是replication的数量,因为这样每个broker就会有在另外两台机器是上有个备份。但是自从看了下面这张图后,就打破了原有的认知。会产生这种错误的分歧,主要是没理解好分片partition的概念,replication的粒度是partition,而不是一台机器!
这里写图片描述

消费组

当一个partition有多个消费者的时候,这个时候消息是被其中一个消费了,还是广播给所有消费者呢?下面这张图是最好的答案。如果消费者是在不同的消费组consumer group中,那么每个消费者都会收到广播。如果都在同一个消费组中(即消费组的名字一样),那么只会在消费组中的任一个消费者消费,这可以用作负载均衡。当然可以同时支持上述两种情况,如图所示。图中consumer groupB有四个消费者,刚好有四个分区,从负载去看,每个消费者消费一个partition刚刚好,但是假如C3挂了,那p0将有哪个消费呢,根据负载,将随机在C4、C5、C6中选择一个。这里就涉及到消费组中客户端的数量和分区大小的关系了。
这里写图片描述

【COMSOL】将一个面上数据导出CSV或txt格式的方法 在COMSOL中参数化扫描后,把一个面上或体里的数据按照CSV或TXT格式导出的方法。 阅读详情

相关推荐

ENVI水体提取流程实践与问题

ENVI水体提取流程实践与问题 卫片解译中,水体属于比较好判别的一类。有水体指数、阈值法、监督分类等一系列方法进行提取,今天介绍利用水体指数和ENVI提取水体的过程。 1.所用数据 Landsat8卫片1景、ENVI5.3。 2.辐射定标与水陆分离 由于要对卫片进行水体指数的计算,因此需要对数据进行辐射定标以及大气校正的预处理。 辐射定标就是将图像的数字量化值(DN)转化为辐射亮度值或者反射率或者表面温度等物理量的处理过程。在工具栏中搜索Radiometric Correction,点开进行辐射定标。

Soul_taker的博客 4万+

spring-cloud-stream 整合rabbitmq 消息分区

本Demo是在以下工程的基础上构建的https://blog.youkuaiyun.com/qq_41712271/article/details/118294352 目前情况是,如果生产者一下子发送10条消息,在同一个group组的情况下,其中一个消费者可能消费了4条,另一个消费者可能收到 6条 但在某些场景下分组还不能满足我们的需求。比如,同时有多条同一个用户的数据发送过来,我们需要根据用户统计,但是消息被分散到了不同的集群节点上了,这时我们就可以考虑使用消息分区了。 当生产者将消息发送给多个消费者时,保证同.

小哇 745

Unity Shader学习笔记/Urp/水墨风效果

Unity Shader学习

qq_63133691的博客 2117

【rabbitmq怎样实现消费分组?rabbitmq怎么实现类似kafka的comsumerGroup分组机制?】

rabbitmq分组消费

qq_24845157的博客 5723

STM32 使用rtthread的DMA 串口发送失败

在一次使用RTthread的DMA 串口发送时,持续性通过DMA 发送串口数据时,偶发发送过程中后续数据包无法正常发送出去,后经查,发现为RT-Thread的串口中断处理有瑕疵,后做出修改。另,为了更方便的排查为题,建议修改。左为修改前,右为修改后。

qq_39294918的博客 1108

DSP28377内存不够用?手把手教你合并RAM/FLASH块,解决CCS20链接器报错

本文详细介绍了在CCS20开发环境中解决DSP28377内存不足问题的方法,通过合并RAM/FLASH块优化CMD文件配置,有效解决链接器报错。文章包含内存布局对比、改写步骤、FreeRTOS集成注意事项及调试技巧,帮助开发者提升内存利用率与项目性能。

weixin_42524762的博客 143

SpringCloud Stream+RabbitMQ消息分区

本篇记录SpringCloud Stream+RabbitMQ 消息分区功能的实现。 消息分区介绍         有一些场景需要满足, 同一个特征的数据被同一个实例消费, 比如同一个id的传感器监测数据必须被同一个实例统计计算分析, 否则可能无法获取全部的数据.    &nbsp...

mameng1988的博客 3697

xctf攻防世界 MISC高手进阶区 low

1. 进入环境,下载附件 给出的一张bmp图片,没有其他信息 2. 问题分析 扔进binwalk中,没有发现有用信息 使用zsteg,没有有用信息 塞入StegSolve中,发现有点猫腻,如图: 有点二维码的感觉,emmm,需要像素处理,但不知道如何下手,参考网上的wp,发现是让使用lsb隐写,copy代码: from PIL import Image img = Image.open('./pic/low.bmp') img_tmp = img.copy() pix = img_tmp.load()

l8947943的博客 1万+

RabbitMQ

原文连接https://zhuanlan.zhihu.com/p/84007327 芋道源码 RabbitMQ有什么功能? 解耦,异步,削峰 1.解耦 假设用户微服务想要发送短信,如果没有消息队列,则要调用发送短信微服务提供的API,万一接口逻辑修改,我还要修改调用API的逻辑。有了消息队列,我就只需要将发送短信给谁的消息传递给消息队列,短息微服务监听消息,取出消息,发送短信。这样,用户微服务就不用关心发送短信的API,只需要将发送人和发送信息给消息队列。 2.异步 如果调用发送短息AP

baihehaitangyijiu的博客 543

Python遥感图像处理应用篇(二十三):Python+GDAL 批量拼接图像

遥感影像拼接分多种不同的情况,比如比较常用的是两幅影像拼接或者多个图像合并为一个图像。GDAL中实现影像拼接的方式也有多种,比如常用可以通过numpy读取影像数组,并计算各个图像的numpy数组范围,合并多个numpy数组为一个最终的结果,并将其重新输出为一幅新的图像,即可实现图像的拼接。另外比较方便的一种方法便是使用GDAL.warp()函数方法。这个函数的功能很多,可以实现多种不同的目的,比如用于坐标系转换、投影变换、图像合并与镶嵌、地理范围裁剪、更改分辨率、矢量裁剪等多种功能。这些功能可以通过设置Op

soderayer的博客 4643

VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用(启动SolidWorks代码/直接驱动模型代码/路径下模型驱动代码/创建两个文

VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用(启动SolidWorks代码/直接驱动模型代码/路径下模型驱动代码/创建两个文件夹对话框代码/重新生成三维图代码/导出工程图代码)之详细攻略 目录 基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用 1、调用SW的模型,并进行参数修改 1.1、VB按钮之SW的三维零件之间切换思想 1.2、调用SW 2、基础案例经验 2.1、设计SW的拉

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 3037

Spring Cloud Stream Rabbit 3.2.1消费者分组与消息分区

Spring Cloud Stream消息队列持久化与消息分区

StoNENee的博客 2060

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成。

kevin1499的博客 2566

kafka学习心得

1.Kafka概述 1.1.定义 Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 1.2.消息队列(Message Queue) 1.2.1 传统消息队列的应用场景 1.2.2 消息队列的两种模式 (1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费...

魔法革1996 723

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

kafka 学习心得

kafka 学习心得

HelloWouldH的博客 872

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Kafka学习心得及总结

Kafka 1.kafka是什么?使用场景? kafka是一个高吞吐的分布式消息队列系统。特点是生产者消费者模式,先进先出(FIFO)保证顺序,自己不丢数据,默认每隔7天清理数据。消息列队常见场景:系统之间解耦合、峰值压力缓冲、异步通信。底层使用的是nio的零拷贝,直接将信息写入文件磁盘,不用经过用户的内存空间。 2.kafka生产消息、存储消息、消费消息 ...

龙ygl龙的博客 988

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java springboot-kafka的一些学习心得

连接: 首先pom中添加kafka的依赖 <!-- kafka --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> 然后 application.properties中添加kafka的配置 spring.kafka.bo...

cv的感觉比写代码好多了 288

一条珍藏多年的计算机书单(文末送书)

冲

公号:一条coding 1万+

知识脑图之Kafka(一)

脑图学习之Kafka(一)Kafka学习脑图(一) 很早就想把自己学到的东西以博文的方式发布出来,一来可以帮自己回顾以往的只是,二来用于交流,有不明白的或者理解错误的地方可以让大家指正,但苦于写作能力无法支撑博文创作工作,一直未能付诸实践,如今发现一个很好的方式来创作博文,脑图,一Kaf个让思路清晰,知识集中的神器,所以便从此开始以脑图的方式,将自己的所学,所思,所做发布出来,以此与各路大神们交流学习。有错误的地方或者有帮助的咱们评论区见… Kafka学习脑图(一) ...

weixin_35788229的博客 474

Sparkstreaming以kafka作为数据源在IDEA中进行测试。

这两天看到了sparkstreaming连接上kafka作为数据源在idea中进行测试,一路颠沛流离,特此记录。 首先虚拟机上要有zookeeper和kafka(我这里只用了一台虚拟机进行测试)。 安装完zookeeper和kafka之后,再对IDEA进行配置。 我用的spark,Scala,streaming以及streaming-kafka都是2.11版本的。 关键配置文件如下: <dependency> <groupId>org.apache.spark

啊帅和和的博客 684

[kafka]kafka的基础架构

前言 传送门-尚硅谷kafka基础架构 看了这个视频的学习笔记,同时也买了书和掘金小册。 都一起看看吧~这次找工作不能太着急,要自信一点。 唉,缺乏自信,觉得自己太菜了。 不过,学技术和赚w都是很重要的,并不丢人,加油dk。 概览 图就直接借用了尚硅谷的视频中的图。 需要注意的是: 一个消费组内的消费者a 和消费者b,他们都是对leader分区进行的读写,而且,假如a正在读0号分区,那么同个消费组内的b就读不了这个0好分区了。 zk:zk需要注意的是,0.9版本之前,..

新一的技术笔记 311

学Java自学还是报班?

自学

公号:一条coding 1328

Java入门:你要的spring知识大纲已整理好了,顺利拿到offer

前言 ⽂章有点⻓,请耐⼼看完,绝对有收获!不想听我BB直接进⼊⾯试分享: 准备过程 蚂蚁⾦服⾯试分享 拼多多⾯试分享 字节跳动⾯试分享 最后总结个人所得(供大家参考学习) 当时我⾃⼰也准备出去看看机会,顺便看看⾃⼰的实⼒。当时我其实挺纠结的,⼀⽅⾯现在部⻔也正需要我,还是可以有⼀番作为的,另⼀⽅⾯觉得近⼀年来进步缓慢,没有以前⻜速进步的成就感了,⽽且业务和技术偏于稳定,加上⾃⼰也属于那种⽐较懒散的⼈,⻣⼦⾥还是希望能够突破现状,持续在技术上有所精进 那么问题来了,⽬标是啥?就我⽽⾔,短期⽬标是深⼊研究某

m0_56662340的博客 105

实时计算股票处理中的问题

在实验中,我对Flink的流处理能力有了更深刻的理解,特别是其对实时数据处理的强大支持。在数据插入方面,Redis采用内存存储数据(部分数据也可持久化到磁盘),相比于传统关系型数据库将数据存储在磁盘上并通过复杂的事务处理机制进行插入操作,Redis的插入操作非常迅速。我对Redis的数据结构,如字符串、哈希、列表、集合和有序集合等有了更深入的了解,并能够根据应用场景选择合适的数据结构。例如,在处理海量的日志数据时,足够的内存可以确保Kafka能够快速地接收、处理和转发这些数据,避免数据积压。

2301_78309077的博客 383
上一篇: 关于状态的一点总结
下一篇: http协议笔记
@云师兄
博客等级 码龄10年 10粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值