在《财富》 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用例简而言之,Kafka用于流处理,网站活动跟踪,指标网络和监视,日志聚合,实时剖析,CEP,将数据摄取到Spark中,将数据摄取到Hadoop,CQRS,重播,缺点规复和有担保的分布式提交用于内存打算(微做事)的日志。
谁利用Kafka?许多处理大量数据的大公司都利用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是如何事情的。但是,Kafka受欢迎的紧张缘故原由是其出色的性能。它稳定,供应可靠的耐用性,具有灵巧的发布/行列步队,可以很好地适应N个消费者组,具有强大的复制能力,为生产者供应可调的同等性担保,并且可以在分片级别(即Kafka)供应保留的订购主题分区)。
此外,Kafka可以与须要处理数据流的系统合营利用,并使这些系统能够聚合,转换并加载到其他商店中。但是,如果Kafka慢一点,那么这些特色都将无关紧要。
为什么Kafka这么快?Kafka非常依赖OS内核来快速移动数据。它依赖零复制的事理 。通过Kafka,可以将数据记录分批处理。从生产者——文件系统(Kafka主题日志)——消费者这条路径中,可以端对端地查看这些批次的数据。
批处理许可更有效的数据压缩并减少I / O延迟。Kafka将不可变的提交日志顺序写入磁盘,从而避免了随机磁盘访问和缓慢的磁盘搜索。并通过分片供应水平缩放。它会将主题日志分片到数百个(可能是数千个)分区中,成千上万个做事器。这种分片使Kafka可以处理大量负载。
Kafka:流式架构Kafka最常用于将数据实时流式传输到其他系统中。Kafka是中间层,用于分离实时数据管道。
Kafka核心不适用于直接打算,例如数据聚合或CEP。Kafka流是Kafka生态系统的一部分,供应了进行实时剖析的功能。
Kafka可用于为Storm,Flink,Spark流以及您的做事和CEP系统等快速通道系统(实时和操作数据系统)供应数据。还用于流数据以进行批处理数据剖析。Kafka支持Hadoop。它将数据流式传输到大数据平台或RDBMS,Cassandra,Spark乃至S3中,以进行将来的数据剖析。这些数据存储常日支持数据剖析,报告,数据科学处理,合规性审核和备份。
Kafka流架构图
现在,说了上面这些有的没的前缀,说说真正的问题:
什么是Kafka?Kafka是一个分布式流媒体平台,用于发布和订阅记录流。Kafka用于容错存储。Kafka将主题日志分区复制到多个做事器。Kafka旨在许可您的运用程序在记录发生时进行处理。Kafka快速且通过批处理和压缩记录来有效地利用IO。Kafka用于解耦数据流。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许可构建实时流数据管道。Kafka支持内存中的微做事(即actor,Akka, Baratine.io,QBit,reactor,reactive,Vert.x,RxJava和Spring Reactor)。Kafka许可构建对流做出反应的实时流运用程序,以进行实时数据剖析,转换,反应,聚合,加入实时数据流,以及实行 CEP(繁芜事宜处理)。
我们可以利用Kafka来帮助网络指标/ KPI,汇总来自许多来源的统计信息以及履行事宜源。可以将其与微做事(内存中)和参与者系统一起利用以实现内存做事(分布式系统的外部提交日志)。可以利用Kafka在节点之间复制数据,为节点重新同步以及规复状态。只管Kafka紧张用于实时数据剖析和流处理,但也可以将其用于日志聚合,通报,点击流跟踪,审计跟踪等。在数据科学和剖析非常主要的天下中,捕获数据以馈入数据湖和实时剖析系统也 很主要。而且由于Kafka可以承受这些特殊繁芜的用例,因此Kafka至关主要。
Kafka是可伸缩的存储Kafka是一个很好的记录/存储系统。Kafka就像高速文件系统一样,用于提交日志的存储和复制。这些特性使Kafka可用于各种运用程序。
写入Kafka主题的记录将保存到磁盘,并复制到其他做事器以实现容错。由于当代驱动器速率快且体积很大,因此非常适宜并且非常有用。Kafka生产者可以等待确认,因此是持久的,由于在复制之前生产者的操作不会完成。Kafka磁盘构造可伸缩。当批量写入大量流时,当代磁盘驱动用具有很高的吞吐量。
同样,Kafka的客户和消费者可以掌握读取位置(偏移量),这许可利用案例,例如,如果存在严重缺点(例如,修复缺点和重新播放),则重播日志。
Kafka的保留记录Kafka集群保留所有已发布的记录。如果未设置限定,它将保留记录,直到磁盘空间用完为止。您可以设置基于韶光的限定(可配置的保留期限),基于大小的限定(可根据大小配置)或压缩(利用键保留最新的记录版本)。例如,您可以将保留策略设置为三天或两周或一个月。可以利用主题日志中的记录,直到按韶光,大小或压缩将其丢弃。花费速率不受大小影响,由于Kafka始终写入主题日志的末端。