从这个角度,我终于理解为什么需要Kafka这样的东西了!

Kafka需要知道的一些基础知识点 broker:一个broker代表了一个kafka实例 topic 主题: 对消息进行分类 partition 分区:同一个主题的所有消息,并不是存在一个broker里 而是由1个或多个partition分别存储一部分,这些partition分布在不同的broker里(类似redis的cluster) 这么做的目的是什么? 和所有使用分区/分片概念存储数据的目的是一样的。 partition-leader +partition-follower : 数据备份,只有leader提供服务,fol. 阅读详情

先从数据库说起。

我们都知道,数据库中的数据,只要应用程序员不主动删除,就可以任意次读写,多少次都行。 数据库还对外提供了很漂亮的接口——SQL ——让程序员操作数据。

但是数据库不擅长做“通知”(人家也不是干这种事的): 例如,程序A向数据库插入了一条数据, 然后程序B想知道这次数据更新,然后做点事情。

这种"通知"的事情,一种办法是用轮询实现, 程序B不断地查数据库,看看有没有新数据的到来, 但是这种方法效率很低。 


更直接的办法是让应用程序之间直接交互,例如程序A调用程序B的RESTful API。 

但问题是程序B如果暂时不可用,程序A就会比较悲催,怎么办呢?等一会儿再试?  如果程序B还不行,那就循环再试。 调用方的责任太大。 

于是消息队列(MQ)就出现了,程序A把数据往消息队列中一扔,完事走人,程序B想什么时候读就什么时候读,极其灵活。

所以MQ的重要功能就是解耦,让两个系统可以独立运行,异步操作,互不影响。

MQ还有一个好处就是允许程序A疯狂地向其中放消息,程序B 可以慢悠悠地处理,这就起到了“消峰”的效果。 

可是传统的MQ也有问题,通常情况下,一个消息确认被读取以后,就会被删除。 如果来了一个新的程序C,也想读之前的消息,或者说之前一段时间的消息,传统MQ表示无能无力。

能不能把数据库的特点和MQ的特点结合起来呢? 

消息可以持久化,让多个程序都可以读取,并且还支持发布-订阅这种模式。

Kafka出现了,它也是一个消息队列,但是它能保存很长一段时间的消息(因为在硬盘上),队列中每个消息都有一个编号1,2,3,4....  ,这样就支持多个程序来读取。 

只要记录下每个程序都读到了哪个编号, 这个程序可以断开和Kafka的连接,这个程序可以崩溃,下一次就可以接着读。 

新的消费者程序可以随意加入读取,不影响其他消费者程序, 是不是很爽?

例如:程序B读到了编号为3的消息, 程序C读到了编号为5的消息, 这时候来了一个新的程序D,可以从头开始读。

这其实和数据库复制有点像:Kafka维护者“主数据库”, 每个消费者程序都是“从数据库”, 只要记住编号,消息都可以从“主数据库”复制到“从数据库”。 

当然,Kafka做的远不止于此,它还充分利用硬盘顺序化读取速度快的特性,再加上分区,备份等高可用特性,  一个高吞吐量的分布式发布订阅消息系统就诞生了。

Kafka的这些高级特性, 我们下一次详细讲吧。

最新热门文章

四次面试:程序员越来越悲催了

必须要裁掉那些老家伙

为什么学习编程要从Web开始?

我是一个线程

我是一个Java Class

CPU阿甘

面向对象圣经

TCP/IP之大明邮差

负载均衡的原理

一个故事讲完HTTPs

编程语言的巅峰

JavaScript:一个屌丝的逆袭

640?wx_fmt=jpeg

kafka入门理解 为什么学习kafka? kafka可以应对以下问题: (1)应对数据量激增(Kafka 能够有效隔离上下游业务,将上游突增的流量缓存起来,以平滑的方式传导到下游子系统中,避免了流量的不规则冲击。) (2)数据复杂度增加以及数据变化速率变快 (3)目前 Apache Kafka 被认为是整个消息引擎领域的执牛耳者 另外,从学习技术的角度而言,Kafka 也是很有亮点的。我们仅需要学习一套框架就能在实际业务系统中实现消息引擎应用、应用程序集成、分布式存储构建,甚至是流处理应用的开发与部署,听起来还是很超值的吧。 阅读详情

相关推荐

从原理到实战:ARS548 4D毫米波雷达数据处理与多模态融合全解析

本文深入解析了4D毫米波雷达ARS548的工作原理与数据处理全流程。从FMCW测距测速、MIMO虚拟天线阵列到点云生成的三步FFT处理,提供了详尽的Python代码实现。文章进一步探讨了与激光雷达、相机的多模态时空对齐与融合策略,并指导如何构建用于自动驾驶感知训练的多模态标注数据集,为相关算法工程师提供了从理论到实践的完整指南。

weixin_29161719的博客 366

​放弃数据库,改用Kafka!

长期以来,数据库一直充当着记录系统,它们以可靠且持久的方式存储和管理关键数据,也赢得了大多数公司的信赖。但时代在变。许多新兴趋势正在影响当今数据的存储和管理方式,不得不让一些技术决策者们重新考虑数据存储究竟还有哪些创新途径。或许,关系型数据库开始变得不合时宜了。 本篇文章为诸君提供了一种“跳出框框”的记录系统的新玩法——为什么组织需要以不同的方式思考数据存储、使用 Kafka 作为记录系统的好处以及有哪些好的实现思路等,希望对诸君有所启发。

Z__7Gk的博客 931

AutoSAR RTE调度机制揭秘:从定时器事件到Runnable执行的完整流程

本文深入解析了AutoSAR RTE(运行时环境)的核心调度机制,详细阐述了从定时器事件触发到Runnable(可运行实体)执行的完整流程。通过剖析Rte_Start()函数、OS任务与警报的交互,以及事件驱动循环,揭示了RTE如何作为幕后指挥家,高效、可靠地协调软件组件间的周期性任务执行,是打通AutoSAR应用开发的关键。

weixin_29169899的博客 226

为什么使用 Kafka?

前言 本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系 正文 可扩展性 能够高速处理大量数据。 能实现每秒数百 MB 的处理速度,以及 TB 级的吞吐量。 分布式 Kafka 采用了分布式设计,具有如下分布式功能。 副本:副本功能是任何分布式技术都需要使用的默认功能,也是 Kafka 的内置特性。 分区能力:同理,分区能力也是分布式架构天然需要的特性之一。 高速

Shockang的博客 1万+

保姆级避坑指南:在NVMe SSD上安装Ubuntu 24.04,搞定RST错误和分区方案

本文提供在NVMe SSD上安装Ubuntu 24.04的详细指南,解决RST错误和分区方案问题。从BIOS设置到分区策略优化,帮助用户充分发挥NVMe固态硬盘性能,避免常见安装陷阱,实现无痛安装和后期调优。

weixin_26976635的博客 560

告别Keil!用VSCode+PlatformIO玩转STC单片机(附自动下载配置)

本文详细介绍了如何从Keil迁移到VSCode+PlatformIO进行STC单片机开发,包括环境搭建、自动下载配置等实用技巧。通过对比传统IDE与现代工具链的差异,展示了VSCode+PlatformIO在代码编辑体验、跨平台支持和开发效率上的优势,帮助开发者实现更流畅的STC单片机开发流程。

weixin_27252001的博客 457

读书笔记丨远程服务调用和RESTful,如何分析和抉择?

相信未来REST 规范将会变得更加流行和普及。

华为云官方博客 1471

Dell R730安装Windows Server 2008 R2

一、RAID驱动准备  在安装Windows server2008 R2操作系统时,如果没有发现硬盘,请将下面的阵列卡驱动先解压(在下载的.exe文件,双击点下一步会自动解压),解压后把那文件夹复制到U盘中。阵列卡 PERC9 H330 - H730 - H730P - H830 Controllers for Windows Server 2008 R2二、系统安装方法方法一:光盘安装  ①请您...

MarshLin 2万+

数据通信(RESTful、RPC、消息队列)

RPC RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发分布式程序就像开发本地程序一样简单。 RPC采用客户端(服务调用方)/服务器端(服务提供方)...

LTY_Sun的博客 1560

MFC属性网格控件(CMFCPropertyGridCtrl)完全指南:构建专业属性编辑界面

本文详细介绍了MFC中的CMFCPropertyGridCtrl控件的使用方法。主要内容包括:控件基础用法(初始化、添加属性、事件处理)、高级设置(自定义外观、创建属性类型、动态更新)、派生类实现(自定义绘制、搜索过滤功能)、界面集成技巧(对话框布局、属性编辑器)以及实际应用示例。文章重点讲解了如何通过继承和自定义实现复杂功能,并提供了性能优化、多语言支持等最佳实践方案。该控件适用于需要大量参数配置的应用程序,能够创建类似Visual Studio属性窗口的专业界面。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 154

StarRocks 面试题及参考答案详解(万字详解)

Broker Load的过程通常涉及到数据的解析、转换和加载,它支持多种数据格式,并且可以处理复杂的数据导入任务。一方面,压缩可以减少磁盘I/O操作,因为压缩后的数据占用的空间更小,需要读取的数据块数量也就更少。在StarRocks中,表数据可以被划分成多个分区,每个分区包含表的一部分数据。在传统的行存储模型中,数据是按行组织的,这意味着在执行分析查询时,系统需要读取并处理整行数据,即使很多时候只需要查询其中的少数几列。物化视图的更新可以是完全重算,也可以是增量更新,取决于物化视图的定义和数据变更的模式。

大模型大数据攻城狮的专栏 2080

为什么使用kafka

从五个方面来处理: 1,缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器去保证冗余 (数据冗余是指同一个数据在系统中多次重复出现)。kafka可以起到一个缓冲的作用,把消息暂存到kafka中,下游服务就可以按照自己的节奏慢慢处理。 2,解耦和扩展性:项目开始时,不确定具体的需求,消息队列可以作为一个接口层,解耦重要业务流程,只需要遵守约定,针对数据编程即可获取扩展能力。 3,冗余:采用一对多方式,一个生产者生产消息,可以被多个订阅topic的消费服务到,供多个毫无关联的业务应用。

weixin_45417821的博客 2625

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

从这个角度,我终于理解为什么需要Kafka这样的东西了!

先从数据库说起。 我们都知道,数据库中的数据,只要应用程序员不主动删除,就可以任意次读写,多少次都行。数据库还对外提供了很漂亮的接口——SQL ——让程序员操作数据。 但是数据库不擅长做“通知”(人家也不是干这种事的):例如,程序A向数据库插入了一条数据, 然后程序B想知道这次数据更新,然后做点事情。 这种"通知"的事情,一种办法是用轮询实现, 程序B不断地查数据库,看看有没有新数据的到来, 但是...

Java_supermanNO1的博客 708

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

kafka之集群工作机制理解

回想一下,我们搭建kafka集群是如何搭建?修改kafka得配置文件,多个Kafka服务注册到同一个zookeeper集群上的节点,会自动组成集群。学习服务端原理,通常我们是去读服务端的那些抽象的代码,但是Kafka为了保证高吞吐,高性能,高可扩展的三高架构,很多具体设计都是相当复杂的。如果直接跳进去学习研究,估计我们很快就会晕头转向。那么有没有一些可见的东西让我们更具体的理解Kafka的Broker运行机制呢?所有Kafka服务都以相同的逻辑运行。

weixin_43134177的博客 1141

Devexpress16.2.6破解工具

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

开篇词 | 为什么要学习Kafka?

另外对生产环境的监控也是重中之重的工作,Kafka 提供了超多的 JMX 监控指标,你可以选择任意你熟知的框架进行监控。之后如何利用已有的监控指标来找出系统瓶颈,然后提升整个系统的吞吐量,这也是最能体现你工作价值的地方。就拿数据量激增来说,Kafka 能够有效隔离上下游业务,将上游突增的流量缓存起来,以平滑的方式传导到下游子系统中,避免了流量的不规则冲击。由于这些系统都是为公司业务服务的,所以通常来说它们仅仅是执行一些常规的业务逻辑,因此它们不能算是计算密集型应用,相反更应该是数据密集型的。

qq_37756660的博客 1001

进字节了,Kafka 为什么这么快?

『码哥』的 Redis 系列文章有一篇讲透了 Redis 的性能优化 ——《Redis 核心篇:唯快不破的秘密》。深入地从 IO、线程、数据结构、编码等方面剖析了 Redis “快”的内部秘密。65 哥深受启发,在学习 Kafka 的过程中,发现 Kafka 也是一个性能十分优秀的中间件,遂要求『码哥』讲一讲 Kafka 性能优化方面的知识,所以『码哥』决定将这篇性能方面的博文作为 Kafka 系...

码哥字节 914

从运维角度看待Kafka和Hbase

说句实话,我刚开始真的不敢写这个东西,因为我压根什么都不知道,脑子里面一团浆糊,根本理不清什么对什么,甚至Kafka和Hbase是什么我都不敢正面的回答,因为我慌啊,我不懂啊,所以我就得学啊,找资料啊,恶补啊!所以我就开始从最基础的Kafka是什么,怎么部署搭建,再到后来的kafka与hbase之间的传输,基本上算是过了一遍。所以只是以我个人的角度来写这篇文章,可能是有点拙劣,但是我感觉这是我的一...

陈苏漾的IT生涯 3535

0. 为什么要学习Kafka?

截止到 2019 年,当下互联网行业最火的技术当属 ABC 了,即所谓的 AI 人工智能、BigData 大数据和 Cloud 云计算云平台。我个人对区块链技术发展前景存疑,毕竟目前没有看到特别好的落地应用场景,也许在未来几年它会更令人刮目相看吧。 对于数据密集型应用来说,如何应对数据量激增、数据复杂度增加以及数据变化速率变快,是彰显大数据工程师、架构师功力的最有效表征。我们欣喜地发现 Kafka 在帮助你应对这些问题方面能起到非常好的效果。就拿数据量激增来说,Kafka 能够有效隔离上下游业务,将上游突增

爱死亡机器人 438

MQ选型:ActiveMQ、RocketMQ、RabbitMQ、Kafka对比

关于ActiveMQ、RocketMQ、RabbitMQ、Kafka一些总结和区别 本文大概围绕如下几点进行阐述: 为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何保证消息的顺序性? 我们围绕以上七点进行阐述。需要说明一下,本文不是《消息队列从入门到精通》这种课程,...

老树的技术博客 2万+

tcp实时传输kafka数据_KAFKA 遇到 TCP 之 认识 TCP

零、背景最近在做一个kafka相关项目时,遇到一个悖论问题:业务即想要数据有序,又想要高性能,还想要高可靠。这个初步看显然不可能。有序就要一个一个发,而且只能上个包正常返回时才能发下一个。这样算下来,假设数据一次来回是 20ms ,那每秒处理了就是 50个。在这样的背景下,我初步实现了相关项目代码。实现代码与测试代码的过程中,我对 kafka 理解越来越深了,对这个问题理解也越来越深了。静下来想了...

weixin_40008644的博客 845

Kafka性能篇:为何Kafka这么"快"?

以讲解性能作为 Kafka 之旅的开篇之作,让我们一起来深入了解 Kafka “快”的内部秘密。你不仅可以学习到 Kafka 性能优化的各种手段,也可以提炼出各种性能优化的方法论,这些方法...

方志朋的博客 194

Kafka : Kafka入门教程和JAVA客户端使用

目录 目录 Kafka简介 环境介绍 术语介绍 消费模式 下载 集群安装配置 命令使用 JAVA实战 参考文献 Kafka简介 由Scala和Java编写,Kafka是一种高吞吐量的分布式发布订阅消息系统. 环境介绍 操作系统:centos6.5 kafka:1.0.1 zookeeper:3.4.6 术语介绍 Broker : Kafka集群包含一个或...

shangmingtao的博客 6万+

kafka介绍(一)

这个部分,需要简单的解答一下,其实MQ就是消息队列,那么本质上,就是一个 FIFO的队列数据结构。因此,早期的使用方法,都是启动一个线程发送消息,写入消息队列,作为消息缓存,然后再启动一个线程消费消息。早期的windows程序(桌面程序)的设计方法。后期,随着分布式微服务的快速发展,消息这个东西变成了组件,变成了中间件,直接分离出来使用了。kafka是一款分布式、支持分区的、多副本,基于zookeeper协调的分布式消息系统。最大的特性就是可以实时处理大量数据来满足需求。

梁老师教你编程序 2959

前传(1):Kafka 的前生今世

不错的文章,转发下 Kafka只是消息引擎系统吗? 要搞清楚这个问题,我们不可避免地要了解一下 Apache Kafka 的发展历程。有的时候我们会觉得说了解一个系统或框架的前世今生似乎没什么必要,直接开始学具体的技术不是更快更好吗? 其实,不论是学习哪种技术,直接扎到具体的细节中,亦或是从一个很小的点开始学习,你很快就会感到厌烦。为什么呢?因为你虽然快速地搞定了某个技术细节,但无法建立全局的认知观,这会导致你只是在单个的点上有所进展,却没法将其串联成一条线进而扩展成一个面,从而实现系统地学习。 我这么.

water Wang 712
上一篇: 真正的高手,都在培养系统
下一篇: 小心!别踩到我和百度的TCP连接,说不定还在握手呢!
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值