来自 Confluent 的 Confluent Platform 3.0 消息系统支持使用 Kafka Streams 实现实时的数据处理,这家公司也是在背后支撑 Apache Kafka 消息框架的公司,它近日宣布 最新的开源平台已经达到了通用发布(general availability)版本。Confluent Platform可以围绕Apache Kafka创建可扩展的数据平台,Apache Kafka是一个实时的、分布式的、具有容错功能的消息队列,它能够扩展至非常大量的消息。

Kafka Streams是进行数据实时处理的轻量级方案,可以用在欺诈和安全监控、物联网的(Internet of Things,IoT)操作和设备监控。它为Kafka提供了一个新的、原生的流开发环境。开发人员能够使用这个库基于Kafka构建分布式的流处理应用。Kafka涵盖的功能是消息和数据传输,而Kafka Streams涵盖的功能则是数据的处理。

Kafka Streams支持有状态和无状态的处理,同时还支持数据的分布式容错处理。要使用Kafka Streams,并不需要单独的集群、消息转换层或外部依赖。它每次会处理一个事件,而不是小批量(micro-batch)的消息。它还允许数据的延迟抵达并支持windowing处理乱序的数据。

读者可以下载 Confluent Platform 3.0 或查阅新发布版本的 文档 ,其中包含了 Kafka Streams文档 以及 快速起步指南 。

在最近的新闻中,Confluent还宣布了 Confluent Control Center 的发布,这是一个用于管理Kafka集群的商业产品。Confluent Control Center可以作为Confluent Enterprise 3.0的一部分来获取,它的设计目的是帮助数据工程团队操作组织中的Kafka。这个管理工具为运维人员和数据团队提供了监控Kafka系统不同组件的功能,这些组件包括主题、生产者和消费者,并且能够理解数据管道中发生了什么状况。

借助Control Center,运维人员能够在消息级别检查数据环境,从而能够理解消息投递情况、可能出现的瓶颈并且可以在原生的Kafka环境中观察端到端的消息投递。为了满足特定的需求,Control Center UI允许运维人员连接新的数据源到集群上并配置新的数据源连接器。

如果你有兴趣学习Control Center的更多知识,可以关注接下来的 webinar 。

InfoQ采访到了来自Confluent的Joseph Adler(产品管理和数据科学主管)和Michael Noll(产品经理)来进一步了解这些产品发布信息以及这些产品如何帮助开发人员和运维团队。

InfoQ:Kafka Streams与其他的流数据处理框架如 Storm 、 Spark Streaming和 Apache Flink 相比,其差异性是什么呢?

Joseph Adler & Michael Noll:在流处理框架方面,负责流处理的开发人员有很多不同的可选方案。事实上,其中很多方案已经将Kafka用于在它们的流处理管道中了。Kafka Streams构建在Apache Kafka坚实的技术基础之上,从这里它继承了Apache Kafka的可扩展性、弹性、容错性以及很多其他的特性。我们相信Kafka Streams降低了进入流处理领域的门槛,因此能够让很多的公司从实时洞悉业务现状中收益。Kafka Streams也继承了Kafka的安全模型,也就是加密传输中的数据,这对像金融这样的行业来说,是很好的选择。

像Spark和Flink这样的框架通常会用在中心数据工程团队中,用于发挥大数据和数据仓库设施的威力。它们的设计是“大型重量级(heavy lifting)”的——运行复杂的查询,所消耗的时间能够持续数小时甚至更长。

Kafka Streams适用于“快速的应用”或“流应用”——在这些应用中,产生响应的速度是非常重要的。输出可能是购买决策、基于特定场景的报价或者安全告警。这些开发人员一般会位于某个业务处理的流水线之中。

借助Kafka Streams,对于实时处理这样的需求,我们不必像已有的流处理框架那样安装和运维单独的集群。很多人其实已经使用Kafka从事一些实时的数据处理(如欺诈探测、用户活动跟踪或流量监控)并将Kafka作为数据平台中消息系统的基石,所以使用Kafka Streams来处理Kafka原生环境中所有的数据是很自然的选择,这样的话,就没有必要新增另外的基础设施和技术了,如果要新增技术的话,开发人员可能还需要对其理解、优化并保证它的持续运行。

InfoQ:Flink在流数据的处理中,并没有使用micro batch的方式,这与Kafka Streams的工作机制是类似的。Kafka Streams与Flink还有什么相似之处或差异吗?

Adler & Noll:Kafka Streams学习了行业之前的经验,包括学术上的,也包括开源项目社区的,如Apache Samza。这说明在重要领域具有一定的相似性,比如恰当的时间模型来区分事件时间与处理时间的语义,以及正确处理延迟到达、数据乱序的能力。这些特性对于任何实用的流处理用例都是必需的。

另外一个关键的差异在于Kafka Streams支持弹性,也就是说,可以动态地增加和收缩处理能力。例如,在Kafka Streams中,开始的时候,我们可以只有一台机器运行流处理应用,用它来处理传入的业务数据。当数据量增大,一台机器的处理能力不足以应对的时候,那么就可以(在运行时操作,无需停机)在另外一台机器上启动相同的应用,它们会自动分担工作内容。

InfoQ:Kafka Streams支持Windowing功能。你们能更详细地描述一下这个特性吗,在实时数据处理中,它的作用是什么?

Adler & Noll:windowing允许我们将持续的数据流划分为更小的块(chunk)。这种windowing最为常见的是基于时间,比如基于五分钟的间隔来执行分析。对于很多的使用场景来说,windowing是非常重要的,比如欺诈检测(“这个人在过去从来没有在一个小时内多次使用信用卡,但现在,我们在过去的五分钟内看到了五十笔交易——那么信用卡可能被盗了”)或者热门话题(“在过去的24小时内,Twitter的大多数用户关注美国的总统大选、新的Apple MacBook以及Justin Bieber的最新视频”)。

InfoQ:你们能阐述一下基于时间(Time)和基于会话(Session)的windowing方案的差别吗,以及分别应该在何时使用它们?

Adler & Noll:比如说,基于时间的windowing会将流数据划分为每隔五分钟的数据块。可以将其想象为一个计数器:每隔五分钟,你就会宣布“新窗口的数据!”有很多的使用场景都需要windowing功能,可能绝大多数都是基于时间的。

与之不同,如果是基于会话的windowing,那么它的范围就不是严格的计时器规则了,这是为了将相关的事件分组到一个所谓的会话(session)中。可以将这些会话视为一个阶段内的活动。使用基于会话windowing的一个常见使用场景就是分析用户交互事件,例如理解用户如何阅读《金融时报》的Web站点以及如何与Facebook进行交互。

InfoQ:你们能介绍一下Kafka在安全方面所提供的功能吗,这可能会涵盖到对消息和主题的限制访问以及跨Kafka服务器的加密数据传输?

Adler & Noll:在认证方面,Kafka支持SASL/Kerberos、SASL/PLAIN和SSL/TLS。而在授权方面,Kafka提供了ACL来控制对特定主题的读取/写入/管理访问,该功能可以配置为针对认证用户和特定的IP来进行。

传输中的数据可以使用SSL/TLS进行加密,它的加密发生在数据生产者到Kafka broker之间(服务器),从Kafka broker到数据消费者之间以及Kafka集群内部broker之间的通信。

InfoQ:Kafka集群能否部署到Docker容器之中?是否有什么最佳实践或在线资源,帮助开发人员进行这种集成?

Adler & Noll:是的,可以部署Kafka集群到Docker容器中。Confluent提供了实验性的Docker镜像来运行Confluent Platform,其中就包含了Apache Kafka。也就是说,运行基于Docker的Kafka环境依然还是一种例外的情况,而不是通用的规则。一方面这是因为相对来讲,Docker还是较新的技术,尚没有完全成熟。另一方面,在数据架构中,Kafka的角色是存储数据和提供数据服务,也就是说。它是“有状态”的服务。Docker的哲学和最佳实践是不要在容器内运行有状态的服务——它更适合没有状态的服务——因此,弥合这两个稍微正交的方式需要一些特殊的考量。

InfoQ:在新特性和功能增强方面,Kafka有什么规划?

Adler & Noll:在接下来的发布版本中,Apache Kafka社区规划关注于运维的简便性和更强的投递可靠性。这部分工作包括Apache Kafka中改进的数据平衡、更多的安全增强并支持精确的单次投递。Confluent Platform将会具有更多的客户端、连接器,在Confluent Control Center中则会扩展监控和管理功能。同时,Kafka Streams的第一个版本已经随Kafka 0.10一起发布了,Kafka社区和Confluent将会继续致力于扩展Kafka Streams的功能。我们正在进行的一个特性就是在实现流处理应用的时候,可以使用的一个SQL接口。这是我们想要包含进来的一个特性,它有助于扩展Kafka Streams的用户基础,也能在总体上提升流处理能力。

查看英文原文: Confluent Platform 3.0 Supports Kafka Streams for Real-Time Data Processing

Confluent Platform 3.0支持使用Kafka Streams实现实时的数据处理(最新版已经是3.1了,支持kafka0.10了)的更多相关文章

  1. [翻译]Kafka Streams简介: 让流处理变得更简单

    Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...

  2. Kafka Streams简介: 让流处理变得更简单

    Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...

  3. Kafka学习笔记之confluent platform入门

    0x00 下载 http://www.confluent.io/download,打开后,显示最新版本3.0.0,然后在右边填写信息后,点击Download下载. 之后跳转到下载页面,选择zip 或者 ...

  4. Confluent介绍(二)--confluent platform quickstart

    下载 http://www.confluent.io/download,打开后,显示最新版本3.0.0,然后在右边填写信息后,点击Download下载. 之后跳转到下载页面,选择zip 或者 tar都 ...

  5. 浅谈kafka streams

    随着数据时代的到来,数据的实时计算也越来越被大家重视.实时计算的一个重要方向就是实时流计算,目前关于流计算的有很多成熟的技术实现方案,比如Storm.Spark Streaming.flink等.我今 ...

  6. Kafka Streams开发入门(1)

    背景 最近发现Confluent公司在官网上发布了Kafka Streams教程,共有10节课,每节课给出了Kafka Streams的一个功能介绍.这个系列教程对于我们了解Kafka Streams ...

  7. Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何选择流处理框架

    根据最新的统计显示,仅在过去的两年中,当今世界上90%的数据都是在新产生的,每天创建2.5万亿字节的数据,并且随着新设备,传感器和技术的出现,数据增长速度可能会进一步加快. 从技术上讲,这意味着我们的 ...

  8. Kafka入门实战教程(7):Kafka Streams

    1 关于流处理 流处理平台(Streaming Systems)是处理无限数据集(Unbounded Dataset)的数据处理引擎,而流处理是与批处理(Batch Processing)相对应的.所 ...

  9. 大全Kafka Streams

    本文将从以下三个方面全面介绍Kafka Streams 一. Kafka Streams 概念 二. Kafka Streams 使用 三. Kafka Streams WordCount   一. ...

随机推荐

  1. mysql备份与还原

    一.直接拷贝数据库文件 直接拷贝数据库文件一般是使用文件系统备份工具cp,适合小型数据库,是最可靠的. 当你拷贝数据库文件时,必须保证表没有正在使用.如果服务器在你拷贝一个表的时候改变这个表,拷贝就失 ...

  2. WPF三大模板简介

    WPF支持以下类型的模板: (1) 控件模板.控件模板可以将自定义模板应用到某一特定类型的所有控件,或是控件的某一实例.决定控件外观的是ControlTemplate,它决定了控件“长成什么样子”,因 ...

  3. cxLookupComboBox 控件

    cxLookupComboBox cxLookupComboBox1.Properties.ListSource        //显示数据源     dtsTmnList cxLookupCombo ...

  4. Divide and conquer:Sumsets(POJ 2549)

    数集 题目大意:给定一些数的集合,要你求出集合中满足a+b+c=d的最大的d(每个数只能用一次) 这题有两种解法, 第一种就是对分,把a+b的和先求出来,然后再枚举d-c,枚举的时候输入按照降序搜索就 ...

  5. Android状态栏微技巧,带你真正意义上的沉浸式

    记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解. 其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发 ...

  6. yum Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

    今天使用yum时出现如上问题,解决办法: 1.编辑:/etc/yum.repos.d/epel.repo 将baseurl的注释取消, mirrorlist注释掉,如图:

  7. 用Python套接字创建HTTP客户与服务器程序

    最近在学习python,网络编程中,python寥寥几句,就可以创建一个服务端和客户端程序: 服务端: import sockets = socket.socket()host = socket.ge ...

  8. [Android Pro] app_process command in Android

    reference to : http://blog.csdn.net/wangkaiblog/article/details/46050587 本来以为存放在/systen/bin/下的monkey ...

  9. 立方体旋转 【web前端学习部落22群120342833】

    效果: HTML部分: <body class="body"> <div class="rect-wrap">   <!-- // ...

  10. HTML5 – 4.canvas

    1.绘制矩形 2.绘制圆形 3.绘制文字 4.保存文件 什么是 Canvas? HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. < ...