初识kafka

https://www.cnblogs.com/wenBlog/p/9550039.html

简介

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中,以便将来进行一些数据分析。这些数据存储通常支持数据分析、报表、数据科学分析、审计和备份。

what is kafka - Kafka Streaming Architecture Diagram

架构图

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

Kafka是什么?

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

what is kafka - Kafka-Decoupling-Data-Streams

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,reactive,Vert.x, RxJava, Spring 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. 用Apache Kafka构建流数据平台的建议

    在<流数据平台构建实战指南>第一部分中,Confluent联合创始人Jay Kreps介绍了如何构建一个公司范围的实时流数据中心.InfoQ前期对此进行过报道.本文是根据第二部分整理而成. ...

  2. 用Apache Kafka构建流数据平台

    近来,有许多关于“流处理”和“事件数据”的讨论,它们往往都与像Kafka.Storm或Samza这样的技术相关.但并不是每个人都知道如何将这种技术引入他们自己的技术栈.于是,Confluent联合创始 ...

  3. 利用SparkSQL(java版)将离线数据或实时流数据写入hive的用法及坑点

    1. 通常利用SparkSQL将离线或实时流数据的SparkRDD数据写入Hive,一般有两种方法.第一种是利用org.apache.spark.sql.types.StructType和org.ap ...

  4. 重磅开源 KSQL:用于 Apache Kafka 的流数据 SQL 引擎 2017.8.29

    Kafka 的作者 Neha Narkhede 在 Confluent 上发表了一篇博文,介绍了Kafka 新引入的KSQL 引擎——一个基于流的SQL.推出KSQL 是为了降低流式处理的门槛,为处理 ...

  5. Flink+Kafka 接收流数据并打印到控制台

    试验环境 Windows:IDEA Linux:Kafka,Zookeeper POM和Demo <?xml version="1.0" encoding="UTF ...

  6. 相同数据源情况下,使用Kafka实时消费数据 vs 离线环境下全部落表后处理数据,结果存在差异

    原因分析: 当某个consumer宕机时,消费位点(例如2s提交一次)尚未提交到zookeeper,此时Kafka集群自动rebalance后另一consumer来接替该宕机consumer继续消费, ...

  7. Spark集成Kafka实时流计算Java案例

    package com.test; import java.util.*; import org.apache.spark.SparkConf; import org.apache.spark.Tas ...

  8. 使用Oracle Stream Analytics 21步搭建大数据实时流分析平台

    概要: Oracle Stream Analytics(OSA)是企业级大数据流实时分析计算平台.它可以通过使用复杂的关联模式,扩充和机器学习算法来自动处理和分析大规模实时信息.流式传输的大数据可以源 ...

  9. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

随机推荐

  1. 487. Max Consecutive Ones II

    Given a binary array, find the maximum number of consecutive 1s in this array if you can flip at mos ...

  2. vba功能语句

    VBA语句集(第1辑) 定制模块行为(1) Option Explicit '强制对模块内所有变量进行声明Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏 ...

  3. (25)python urllib库

    urllib包包含4个模块,在python3里urllib导入要用包名加模块名的方式. 1.urllib.request 该模块主要用于打开HTTP协议的URL import urllib.reque ...

  4. 洛谷——P1025 数的划分

    P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ...

  5. Java生成读取条形码和二维码图片

    原文:http://www.open-open.com/code/view/1453520722495 package zxing; import com.google.zxing.BarcodeFo ...

  6. Blazor——Asp.net core的新前端框架

    原文:Blazor--Asp.net core的新前端框架 Blazor是微软在Asp.net core 3.0中推出的一个前端MVVM模型,它可以利用Razor页面引擎和C#作为脚本语言来构建WEB ...

  7. OC - 读歌词

    类的头文件: #import <Foundation/Foundation.h> //FILE_PATH是文件名称. #define FILE_PATH @"/Users/qia ...

  8. CSS 的导入方式 (link or import ?)

    前言 最常看见的CSS的使用方式有三种 1. 在span, div 等标签上直接使用 style 属性定义CSS <span style="color:blue">Th ...

  9. 【POJ 3292】 Semi-prime H-numbers

    [POJ 3292] Semi-prime H-numbers 打个表 题意是1 5 9 13...这样的4的n次方+1定义为H-numbers H-numbers中仅仅由1*自己这一种方式组成 即没 ...

  10. PHP读取excel(5)

    如果数据量很大的时候,就需要用PHPExcel迭代器逐行读取,具体代码如下: <?php header("Content-Type:text/html;charset=utf-8&qu ...