简介

    Kafka经常用于实时流数据架构,用于提供实时分析。本篇将会简单介绍kafka以及它为什么能够广泛应用。

kafka的增长是爆炸性的。2017年超过三分之一的世界五百强公司在使用kafka。这其中很多公司每天通过kafka处理超过TB级别的数据。kafka被用于实时数据流、收集大数据或者做一些实时分析。kafka是也为基于内存的微服务提供数据持久化并把数据传输给复杂的事件流系统和IOT模式的自动化系统。

为什么选择Kafka?

Kafka经常用于实时流数据架构,提供实时分析。由于Kafka是一种快速、可伸缩、持久和容错的发布-订阅消息传递系统,所以考虑到JMS、RabbitMQ和AMQP可能存在容量和响应性的不足,Kafka在某些情况下是更优选择。Kafka具有更高的吞吐量、可靠性和复制特性,这使得它适用于跟踪服务调用(跟踪每一个调用)或跟踪物联网传感器数据,而传统的MOM在这些方面有其自己的问题。

Kafka可以与Flume/Flafka、Spark Streaming、Storm、HBase、Flink和Spark一起工作,对流媒体数据进行实时摄取、分析和处理。Kafka为Hadoop BigData lakes 提供数据流。Kafka代理支持大量消息流,用于Hadoop或Spark的低延迟后续分析。此外,Kafka Streaming(子项目)也可以用于实时分析。

Kafka 使用情况

简而言之,Kafka用于流处理、网站活动跟踪、度量收集和监控、日志聚合、实时分析、CEP、将数据传输到Spark、将数据传输到Hadoop、CQRS、重放消息、错误恢复以及内存计算(微服务)的有保障的分布式提交日志。

那些人需要使用Kafka?

处理大量数据的大公司都使用Kafka。它的发源地LinkedIn使用它来跟踪活动数据和运营指标。Twitter将其作为Storm的一部分来提供流处理基础设施。Square使用Kafka作为总线,将所有系统事件转移到各个Square数据中心(日志、定制事件、度量等等),输出到Splunk,用于仪表板,并实现Esper-like/CEP警报系统。Spotify、Uber、Tumbler、高盛、贝宝(PayPal)、Box、思科(Cisco)、CloudFlare和Netflix等其他公司也在使用这个平台。

为什么如此流行?

首先,操作简单。Kafka是用来设置和使用的,并且很容易知道Kafka是如何工作的。然而,其受欢迎的主要原因是它的出色性能。同时它是稳定的,提供了可靠的持久性,具有灵活的发布-订阅/队列,可以很好地扩展到n个消费者组,具有健壮的复制,为生产者提供了可调的一致性保证,并在碎片级别(即Kafka主题分区)提供了保留的排序。此外,Kafka可以很好地处理具有数据流的系统,并使这些系统能够聚合、转换和加载到其他存储中。但如果kafka处理缓慢,其他优点也就都无关紧要。综上之所以受欢迎就是因为快。

为什么快?

Kafka严重依赖操作系统内核来快速移动数据。它基于零拷贝的原则。Kafka使您能够批量数据记录成块。可以看到这些批数据从生产者到文件系统(Kafka主题日志)到消费者。批处理允许更有效的数据压缩和减少I/O延迟。Kafka将不可变的提交日志按顺序写入磁盘,从而避免了随机磁盘访问和缓慢的磁盘查找。通过分片提供水平分割。它将主题日志分割成数百个(可能是数千个)到数千台服务器的分区。这种分片允许Kafka处理大量的负载。

Kafka: 数据流架构

Kafka经常被用于将实时数据流到其他系统中。Kafka是中间层,可以解耦你的实时数据管道。Kafka core不适合直接计算,比如数据聚合或CEP。Kafka流,是Kafka生态系统的一部分,提供实时分析的能力。Kafka可以提供快速通道系统(实时和操作数据系统),比如Storm, Flink, SparkStreaming,以及你的服务和CEP系统。Kafka还用于批量数据分析的数据流。它可以将数据流到您的大数据平台或RDBMS、Cassandra、Spark甚至S3中,以便将来进行一些数据分析。这些数据存储通常支持数据分析、报表、数据科学分析、审计和备份。

架构图

现在我们来回答一些问题。

Kafka是什么?

Kafka是一个分布式流媒体平台,用于发布和订阅记录流。Kafka用于容错存储。Kafka将主题日志分区复制到多个服务器。Kafka是设计处理来应用程序实时产生的数据。Kafka可以快速和有效地使用IO批处理和压缩数据。Kafka用于解耦数据流。也用于将数据流到数据湖、应用程序和实时流分析系统中。

Kafka 分离数据流

Kafka 支持多种开发语言

来自客户机和服务器的Kafka通信使用了TCP上的协议,经过版本化和文档化。Kafka承诺与老客户端保持向后兼容,并且支持许多语言。在c#、Java、C、Python、Ruby和许多其他语言中都有客户端。

Kafka生态系统还提供了REST代理,允许通过HTTP和JSON进行简单的集成,这使得集成更加容易。Kafka还通过Confluent模式注册表支持Avro模式。Avro和Schema Registry允许用多种编程语言生成和读取复杂的记录,并允许记录的演变。

Kafka 的价值

1.Kafka允许您构建实时流数据管道。Kafka支持内存中的微服务(即actor、Akka、Baratine.io, QBit,reactiveVert.xRxJavaSpring Reactor)。Kafka允许您构建实时流应用程序,对流进行实时数据分析、转换、反应、聚合、加入实时数据流,并执行CEP(复杂事件处理)。

2.您可以使用Kafka来帮助收集度量/ kpi、聚合来自许多来源的统计数据和实现事件源。您可以将其与微服务(内存中)和actor系统一起使用,以实现内存中的服务(分布式系统的外部提交日志)。

3.您可以使用Kafka在节点之间复制数据、重新同步节点和恢复状态。虽然Kafka主要用于实时数据分析和流处理,但也可以用于日志聚合、消息传递、点击流跟踪、审计跟踪等等

在一个数据科学和分析的世界里,捕获数据并将其输入到您的数据湖和实时分析系统也是一个大问题。既然kafka能够处理这些繁重的用例,那这就是它最大的价值所在。

Kafka 是可扩展的消息存储

Kafka是一个很好的记录/消息存储系统。Kafka就像高速文件系统,用于提交日志存储和复制。这些特性使得Kafka对于所有的应用方式都是有用的。写入到Kafka主题的记录将被持久化到磁盘,并复制到其他服务器以实现容错。由于现代驱动器又快又大,所以它很适合,而且非常有用。Kafka生产者可以等待确认,所以消息是持久的,因为生产者写如完整直到消息复制完成。硬盘架构可很好地伸缩因为现代磁盘驱动器在批量写入时具有很高的吞吐量。此外,Kafka客户端和消费者可以控制读位置(偏移量),这允许用例在有关键错误时重放日志(即修复错误和重播)。由于偏移量是按每个消费者组进行跟踪的,因此消费者可以相当灵活(即重放日志)。

Kafka 会保留消费记录

Kafka集群保留所有已发布的记录。如果不设置限制,它将保存记录,直到耗尽磁盘空间。您可以设置基于时间的限制(可配置保留期)、基于大小的限制(可根据大小配置)或压缩(使用键保存最新版本的记录)。例如,你可以设定3天、2周或1个月的保留政策。主题日志中的记录可供使用,直到根据时间、大小或压缩丢弃为止。消费速度不受大小的影响,因为Kafka总是写到主题日志的末尾。

Kafka经常用于实时流数据架构,提供实时分析。由于Kafka是一种快速、可伸缩、持久和容错的发布-订阅消息传递系统,所以Kafka在某些情况下甚至不会考虑JMS、RabbitMQ和AMQP,因为它的容量和响应性。Kafka具有更高的吞吐量、可靠性和复制特性,这使得它适用于跟踪服务调用(跟踪每一个调用)或跟踪物联网传感器数据,而传统的MOM可能不会被考虑在内。

初识kafka的更多相关文章

  1. [Kafka][1][初识Kafka]

    目录 第1章 初识Kafka 1.1 发布与订阅消息系统 1.1.1 如何开始 1.1.2 独立的队列系统 1.2 Kafka登场 1.2.1 消息和批次(Message and batch) 1.2 ...

  2. Kafka权威指南 读书笔记之(一)初识Kafka

    发布与订阅消息系统 数据(消息)的发送者(发布者)不会直接把消息发送给接收者,这是发布与订阅消息系统的一个特点.发布者以某种方式对消息进行分类,接收者(订阅者)订阅它们, 以便接收特定类型的消息.发布 ...

  3. 初识Kafka:构架、生产消费模型以及其他相关概念

    当前使用的事件总线采用的是Kafka分布式消息队列来完成的,近来项目需要接入到事件总线中,故开启了kafka的学习之旅(之前一直在听说kafka这玩意儿,但是学习计划中还没有将它安排进去,借着这个机会 ...

  4. kafka 教程(一)-初识kafka

    消息队列 MQ 消息队列就是 消息 message 加 队列 queue,是一种消息传输的容器,提供生产和消费 API 来存储和获取消息. 消息队列分两种:点对点(p2p).发布订阅(pub/sub) ...

  5. 初识 Kafka Producer 生产者

    目录 1.KafkaProducer 概述 2.KafkaProducer 类图 3.KafkaProducer 简单示例 温馨提示:整个 Kafka Client 专栏基于 kafka-2.3.0 ...

  6. kafka学习(一)初识kafka

    文章更新时间:2020/06/08 一.简介 定义:kafka是一个分布式,基于zookeeper协调的发布/订阅模式的消息系统,本质是一个MQ(消息队列Message Queue),主要用于大数据实 ...

  7. Kafka从入门到放弃(一) —— 初识Kafka

    消息中间件的使用已经越来越广泛,基本上具有一定规模的系统都会用到它,在大数据领域也是个必需品,但为什么使用它呢?一个技术的广泛使用必然有它的道理. 背景与问题 以前一些传统的系统,基本上都是" ...

  8. 《Kafka笔记》1、Kafka初识

    目录 一.初识Kafka 1 apache kafka简介 2 消息中间件kafka的使用场景 2.1 订阅与发布队列 2.2 流处理 3 kafka对数据的管理形式 4 kafka基础架构 5 Ka ...

  9. Kafka学习(一)kafka指南(about云翻译)

    kafka 权威指南中文版 问题导读 1. 为什么数据管道是数据驱动企业的一个关键组成部分? 2. 发布/订阅消息的概念及其重要性是什么? 第一章 初识 kafka 企业是由数据驱动的.我们获取信息, ...

随机推荐

  1. 【CSS】flex布局初认识

     1. 父容器为Flex容器,它有以下六个属性: 1)flex-direction: 作用:决定主轴的方向(如果为row,那么x方向为主轴:如果为column,那么y方向为主轴) 属性:row | r ...

  2. 基于vue技术的企业移动办公系统的设计与实现

    如何打包: http://www.cnblogs.com/smilehuanxiao/p/7693858.html http://www.cnblogs.com/1314y/p/6207153.htm ...

  3. 为什么使用SLF4J比使用log4j或者java.util.logging更好

    1.SLF4j是什么? SLF4J 并没有真正地实现日志记录,它只是一个允许你使用任何java日志记录库的抽象适配层. 如果你正在编写内部或者外部使用的API或者应用库的话,如果使用了slf4j,那么 ...

  4. MySQL优化(2)--------常用优化

    前言 之前已经简单介绍了MySQL的优化步骤,那么接下来自然而是就是常用的SQL优化,比如inseer.group by等常用SQL的优化,会涉及SQL语句内部细节(这正是我缺乏的).最后希望自己能记 ...

  5. golang高性能RPC:Apache Thrift安装使用完全攻略

    在企业应用中RPC的使用可以说是十分的广泛,使用该技术可以方便的与各种程序交互而不用考虑其编写使用的语言. 如果你对RPC的概念还不太清楚,可以点击这里. 现今市面上已经有许多应用广泛的RPC框架,比 ...

  6. PHP开发中bcscale timezone charset的设定

    关于php的开发,有几个细节设定,需要知悉下:在项目的init.php 或 index.php 或 api.php 1. bcscale(18); 表示bc函数,默认小数点位数. 没有设定的话,默认为 ...

  7. 在.net中怎么解析json串 [Error reading JObject from JsonReader. Current JsonReader item is not an obj]

    编辑时间:2017-05-10,增加一种转化list的方法 一.以前知道一种解析json串的方法,觉得有点麻烦.就从别的地方搜到了另一种 string json = vlt.getlist(); JO ...

  8. curl模拟请求常用参数

    封装一个curl模拟浏览器请求的函数,如下: /** * curl模拟浏览器请求 * @param unknown $url 请求的地址 * @param array $params 请求地址所需要的 ...

  9. php获取服务器信息常用方法(零碎知识记忆)

    突然整理下零碎小知识.......加深下印象: $info = array( '操作系统'=>PHP_OS, '运行环境'=>$_SERVER["SERVER_SOFTWARE& ...

  10. redis复制

    一.官网解释 redis支持简单且易用的主从复制 ( master-slave replication )功能,改功能可以让服务器 ( slave server ) 成为主服务器 ( master s ...