首页 程序笔记 什么是Kafka?Kafka架构原理

什么是Kafka?Kafka架构原理

在《财富》 500强公司中,超过三分之一的公司使用Kafka。这些公司包括排名前十的旅行社,排名前十的银行中有七个,排名前十的保险公司中有八个,排名前十的电信公司中有九个,等等。LinkedIn,Microsoft和Netflix每天使用Kafka(1,000,000,000,000)处理消息。国内腾讯、阿里、特别是支付宝等,都大量在用。

Kafka用于实时数据流,收集大数据或进行实时分析。Kafka与内存中的微服务一起使用,提供持久性,并且可以将事件馈送到CEP(复杂事件流系统)和IoT / IFTTT风格的自动化系统。

Kafka通常用于实时流数据架构中以提供实时分析。由于Kafka是一种快速,可伸缩,持久且具有容错能力的发布系统,因此Kafka用于JMS、RabbitMQ和AMQP的用例中。

Kafka具有更高的吞吐量,可靠性和复制特性,这使其可用于跟踪服务呼叫或跟踪可能不考虑传统MOM的IoT传感器数据之类的事。

Kafka可以与Flume / Flafka,Spark Streaming,Storm,HBase,Flink和Spark一起使用,以实时提取,分析和处理流数据。也是用于送Hadoop BigData的数据流。同时它还代理支持大量消息流,以便在Hadoop或Spark中进行低延迟的后续分析。此外,Kafka Streams(一个子项目)也可以用于实时分析。

简而言之,Kafka用于流处理,网站活动跟踪,指标收集和监视,日志聚合,实时分析,CEP,将数据摄取到Spark中,将数据摄取到Hadoop,CQRS,重播消息,错误恢复和有保证的分布式提交用于内存计算(微服务)的日志。

许多处理大量数据的大公司都使用Kafka。起源于LinkedIn的LinkedIn用来跟踪活动数据和运营指标。Twitter将其用作Storm的一部分,以提供流处理基础结构。Square使用Kafka作为总线,将所有系统事件移至各个Square数据中心(日志,自定义事件,指标等),向Splunk输出,用于Graphite(仪表板),并实现类似Esper/CEP警报系统。

国外Spotify,Uber,Tumbler,Goldman Sachs,PayPal,Box,Cisco,CloudFlare和Netflix等其他公司也都会使用它。

Kafka具有操作简便性。Kafka易于设置和使用,并且很容易弄清楚Kafka是如何工作的。但是,Kafka受欢迎的主要原因是其出色的性能。它稳定,提供可靠的耐用性,具有灵活的发布/队列,可以很好地适应N个消费者组,具有强大的复制能力,为生产者提供可调的一致性保证,并且可以在分片级别(即Kafka)提供保留的订购主题分区)。

此外,Kafka可以与需要处理数据流的系统配合使用,并使这些系统能够聚合,转换并加载到其他商店中。但是,如果Kafka慢一点,那么这些特征都将无关紧要。

Kafka非常依赖OS内核来快速移动数据。它依赖零复制的原理 。通过Kafka,可以将数据记录分批处理。从生产者——文件系统(Kafka主题日志)——消费者这条路径中,可以端对端地查看这些批次的数据。

批处理允许更有效的数据压缩并减少I / O延迟。Kafka将不可变的提交日志顺序写入磁盘,从而避免了随机磁盘访问和缓慢的磁盘搜索。并通过分片提供水平缩放。它会将主题日志分片到数百个(可能是数千个)分区中,成千上万个服务器。这种分片使Kafka可以处理大量负载。

Kafka最常用于将数据实时流式传输到其他系统中。Kafka是中间层,用于分离实时数据管道。

Kafka核心不适用于直接计算,例如数据聚合或CEP。Kafka流是Kafka生态系统的一部分,提供了进行实时分析的功能。

Kafka可用于为Storm,Flink,Spark流以及您的服务和CEP系统等快速通道系统(实时和操作数据系统)提供数据。还用于流数据以进行批处理数据分析。Kafka支持Hadoop。它将数据流式传输到大数据平台或RDBMS,Cassandra,Spark甚至S3中,以进行将来的数据分析。这些数据存储通常支持数据分析,报告,数据科学处理,合规性审核和备份。

现在,说了上面这些有的没的前缀,说说真正的问题:

Kafka是一个分布式流媒体平台,用于发布和订阅记录流。Kafka用于容错存储。Kafka将主题日志分区复制到多个服务器。Kafka旨在允许您的应用程序在记录发生时进行处理。Kafka快速且通过批处理和压缩记录来有效地使用IO。Kafka用于解耦数据流。Kafka用于将数据流传输到数据库,应用程序和实时流分析系统中。

来自客户端和服务器的Kafka通信使用经过版本控制和记录的TCP有线协议。Kafka承诺与较旧的客户端保持向后兼容性,并且支持多种语言。有C#,Java,C,Python,Ruby和许多其他语言的客户端。Kafka生态系统还提供REST代理,允许通过HTTP和JSON轻松集成,这使得集成更加容易。

Kafka还通过Confluent Schema Registry for Kafka支持Avro模式。Avro和Schema Registry允许客户端以多种编程语言生成和读取复杂的记录,并允许记录的演变。因此它是真正的多语种。

Kafka允许构建实时流数据管道。Kafka支持内存中的微服务(即actor,Akka, Baratine.io,QBit,reactor,reactive,Vert.x,RxJava和Spring Reactor)。Kafka允许构建对流做出反应的实时流应用程序,以进行实时数据分析,转换,反应,聚合,加入实时数据流,以及执行 CEP(复杂事件处理)。

在数据科学和分析非常重要的世界中,捕获数据以馈入数据湖和实时分析系统也 很重要。而且由于Kafka可以承受这些特别复杂的用例,因此Kafka至关重要。

Kafka是一个很好的记录/消息存储系统。Kafka就像高速文件系统一样,用于提交日志的存储和复制。这些特性使Kafka可用于各种应用程序。

写入Kafka主题的记录将保存到磁盘,并复制到其他服务器以实现容错。由于现代驱动器速度快且体积很大,因此非常适合并且非常有用。Kafka生产者可以等待确认,因此消息是持久的,因为在消息复制之前生产者的操作不会完成。Kafka磁盘结构可伸缩。当批量写入大量流时,现代磁盘驱动器具有很高的吞吐量。

同样,Kafka的客户和消费者可以控制读取位置(偏移量),这允许使用案例,例如,如果存在严重错误(例如,修复错误和重新播放),则重播日志。

Kafka集群保留所有已发布的记录。如果未设置限制,它将保留记录,直到磁盘空间用完为止。您可以设置基于时间的限制(可配置的保留期限),基于大小的限制(可根据大小配置)或压缩(使用键保留最新的记录版本)。例如,您可以将保留策略设置为三天或两周或一个月。可以使用主题日志中的记录,直到按时间,大小或压缩将其丢弃。消耗速度不受大小影响,因为Kafka始终写入主题日志的末尾。

2

站心网

在《财富》 500强公司中,超过三分之一的公司使用Kafka。这些公司包括排名前十的旅行社,排名前十的银行中..

为您推荐

微服务架构定义与特点总结

1. 定义微服务是一种架构风格,将应用程序拆分为多个小型、独立的服务,每个服务运行在自己的进程中,通过轻量级通信机制(如HTTP/REST)交互。每个服务围绕特定业务功能构建,可独立开发、部署和扩展。2. 特点独立..

架构与思维:微服务架构的思想本质

我们为什么需要微服务架构,它一定是为了解决我们某些问题才出现了。这篇文章我们讨论下微服务架构模式所解决的问题,带来的挑战,以及他的核心思想本质。1 早期的服务架构上图是一个典型的服务分层架构:Client: ..

架构与思维:秒杀和竞拍的业务架构,永不过时的话题

1 互联网架构越来越复杂?为啥感觉互联网架构越来越复杂了,早期我们的系统,可能也就那么少部分人使用,大都是一些后台管理系统。所以不用考虑很多东西,比如:流量少,无需考虑并发问题数据少,不用考虑什么索引优..

一文搞懂SaaS架构建设流程:业务战略设计、架构蓝图设计、领域系统架构设计、架构治理与实施

大家好,我是汤师爷~SaaS架构建设是一项复杂的系统工程,不仅需要技术层面的实现,更要从业务战略、架构设计、治理与实施等多个维度进行全面规划。一个成功的SaaS架构可以帮助企业降低IT成本、提升业务灵活性、加快..

架构知识点(一)

执行阶段(Execution Stage)执行阶段是 CPU 流水线中的一个步骤,通常发生在取指阶段(Instruction Fetch, IF)和解码阶段(Instruction Decode, ID)之后。在执行阶段,CPU 会进行以下操作:执行算术或逻辑操作:..

一文搞懂架构设计的衡量标准:功能性、可用性、性能、可扩展性、安全性、协作效率、复杂度、成本效益

大家好,我是汤师爷~架构设计的首要目标是服务于业务需求。因此,我们不应该盲目追求所谓的"最厉害的"架构,而应该致力于寻找最适合当前业务环境和未来发展需求的架构方案。衡量架构的合理性是一个复杂的过程,需要..

架构知识点(二)

轮询调度(Round Robin Scheduling)是一种时间片轮转调度算法,主要用于多任务系统中。其基本思想是将所有任务排成一个队列,每次调度时,系统会从队列中取出下一个任务执行,直到任务完成或达到其时间片限制。当任..

.NET 主程序的.dll.config文件有什么用?

.dll.config 文件通常是在开发过程中自动生成的,它的主要作用是为某个类库(.dll 文件)提供一个独立的配置文件,以便开发者可以为该类库单独定义或测试配置项。以下是生成 .dll.config 文件的原因和机制:1. 配置..

CPU、GPU 和 TPU 之间有什么区别?

什么是 CPU、GPU 和 TPU?它们都是用于计算任务的处理器芯片。可以把你的大脑想象成一台计算机,能够完成诸如阅读书籍或解决数学问题的任务。每一项活动都类似于一个计算任务。例如,当你用手机拍照、发送短信或打开..

.NET9 F#有什么新特性?

F# 9 的新特性简介F# 9 是 .NET 9 的一部分,带来了多项增强功能,旨在提升开发效率和语言特性的一致性。这些改进不仅为现有的 F# 开发者提供了更强大的工具,也使新手更容易上手。以下是主要特性概览:1. 改进的类..

尤雨溪的VoidZero到底是什么?

尤雨溪创立的VoidZero是一家致力于打造下一代JavaScript工具链的公司,其核心目的是解决当前JavaScript开发工具在性能和效率上的痛点。这个工具链的目标包括提高速度、减少重复处理,并用统一的架构简化开发者的操作..

什么是.NET渐进式Web应用(PWA)

.NET 渐进式 Web 应用(PWA,Progressive Web Apps)是一种结合了 Web 应用的跨平台性和本地应用体验的应用程序。通过 PWA 技术,.NET 开发者可以使用 Blazor 和 WebAssembly 创建 Web 应用,支持在各种设备和操作系..

.NET9在ASP.NET MVC有什么更新?

在.NET 9 中,ASP.NET Core MVC 和其他 ASP.NET 功能进行了多项增强,以改善开发者的体验和应用性能:静态文件处理和缓存优化:ASP.NET Core MVC 现在支持静态文件的“指纹化”处理,发布时会生成包含唯一..

每一个程序员,都希望能成为分布式系统架构师

有很多读者经常问我,程序员的学习、成长之路应该怎么规划,才能早日成为一名架构师。作为一个曾经的架构师,在我走上技术管理这条路之后,管理的团队越来越大,现在我管理的技术团队有一百多人,最大的体会就是操心..

工作这么多年,你能向新人解释清到底什么是面向对象编程吗?

面向对象编程想必大家都耳熟能详,但是写了这么多代码你对面向对象有清晰的认识吗?来看看这几个问题:到底什么是面向对象编程?和面向过程编程有什么区别?什么又称为面向对象语言、面向过程语言?用面向对象语言写..

技术实力的本质是什么?

背景今天,我们来讨论一个问题:技术实力的本质究竟是什么?在工作中,你可能会遇到,为什么他的实力不如我,他却可以晋升?在面试中,你可能会遇到,我把系统性能优化了10倍,为什么面试官还是看不上我?为什么?到..

服务架构进化论

1.原始分布式时代一直以来,我可能和大多数的人认知一样,认为我们的服务架构的源头是单体架构,其实不然,早在单体系统盛行之前,我们的前辈们就已经探索过使用多个独立的分布式服务共同完成一个大型的系统的实现方..

什么是VoidZero?Vue和Vite之父尤雨溪成立的技术公司

VoidZero是一家由Vue和Vite之父尤雨溪成立的技术公司,主要致力于解决JavaScript工具链的碎片化、依赖复杂以及性能瓶颈问题,通过提供一个统一、高性能的开发工具链来改善开发者的开发体验。优点分析统一性:VoidZer..

Blazor的N种渲染模式原理和常见问题说明

我们从下面这幅图开始,下图显示了三种渲染模式,分别称之为静态SSR、交互式SSR(即之前的BlazorServer)、交互式CSR(即之前的BlazorWasm)。还有一种渲染模式BlazorHybrid,稍后说。一、先浅层理解一个图例静态SSR:经..

CLS 问题:超过 0.1(桌面设备) 是什么意思?

在网页设计和开发中,CLS(Cumulative Layout Shift)是指页面布局的累计偏移量。当一个用户与页面互动时,如果页面的某些元素突然改变位置或大小,导致整个布局发生偏移,就会产生布局偏移。这种偏移可能会影响用户..

发表回复

返回顶部