|  首页  |  资讯  |  评测  |  活动  |  学院  |  访谈  |  专题  |  杂志  |  产服  |  
您现在的位置:硅谷网> 资讯> 软件>

进击的 Kafka:不止消息队列,新一代流数据处理平台

2019-05-13 15:40 作者:佚名 来源:硅谷网 HV: 编辑:吴丹 【搜索试试

为数据而生,以20世纪最具影响力的作家命名,一个很酷的开源项目——我们说的是Kafka。进入出生第九个年头的Kafka已经算不上年轻,但依旧活力四射。这篇文章简单梳理一下Kafka的发展脉络,文末给出了本文的参考资料,以及一个快速实用Kafka的课程,参考资料和课程以供感兴趣的读者深入学习。

诞生背景

每一次科学家们发生分歧,都是因为掌握的数据不够充分。所以我们可以先就获取哪一类数据达成一致。只要获取了数据,问题也就迎刃而解了。要么我是对的,要么你是对的,要么我们都是错的。然后我们继续研究。

——Neil deGrasse Tyson

2010年前后,跟不少互联网公司一样,Linkedin每天采集的数据种类多(日志消息、度量指标、用户活动记录、响应消息,等等),规模大,其中很多数据由不同数据源实时生成。数据生产者和消费者之间点对点的数据传输方式和多个独立发布与订阅系统的维护成本越来越高,由此,把不同来源数据整合到一起集中管理的需求越来越强,公司开始研究一套高效的数据管道。随后,Kafka从Linkedin内部作为一套基于发布与订阅的消息系统诞生。

关键时间节点

2010年10月,Kafka在Linkedin诞生

2011年7月,进入Apache孵化器,并发布第一个开源版本0.7.0

2012年10月,从孵化器毕业,成为顶级开源项目,同时发布0.8.0版本

2014年11月,Confluent成立。同年,发布0.8.2和0.9.0,在0.9.0版本加入了配额和安全性

2017年11月,1.0.0版本正式发布,Exactly-Once与运维性能提升

2018年7月,2.0.0版本发布,注重流式数据平台的在线可进化性

2018年12月,Kafka团队修改KSQL等的开源许可

简单介绍

Kafka数据关键词

消息与键

Kafka的数据单元称为消息,可以把消息看成数据库里的一个“数据行”或一条“记录”。消息由字节数组组成,对于Kafka来说,消息里的数据没有特别的格式或含义。消息可以有一个可选的元数据——键。键也是一个字节数组,没有特殊含义。为消息选取分区的时候会用到键。

消息与批次

为提高效率,消息分批次写入Kafka。批次就是一组消息,它们属于同一个主题和分区。把消息分成批次传输可以减少网络开销。

主题与分区

Kafka的消息通过主题进行分类。主题就好比数据库的表。主题可以被分为若干个分区,一个分区就是一个提交日志。消息以追加的方式写入分区,然后以先入先出的顺序读取。一个主题一般包含几个分区。

图片来自https://kafka.apache.org

我们通常会使用流这个词来描述Kafka这类系统的数据。很多时候,人们把一个主题的数据看成一个流。流是一组从生产者移动到消费者的数据。

核心API

Kafka Producer API:直接生成数据的应用程序(如日志、物联网)

Kafka Connect Source API:用于数据集成的API(如MongoDB、REST API)

Kafka Streams API / KSQL:用于流处理的API,如果能够以SQL方式实现查询逻辑就使用KSQL,如果需要编写复杂逻辑就用Kafka Streams

Kafka Consumer API:读取数据流并执行实时操作(如发送电子邮件)

Kafka Connect Sink API:读取数据流并将其存储到目标存储中(如Kafka到HDFS、Kafka到MongoDB等)

中间部分的Kafka集群,由多个broker组成。一个独立的Kafka服务器被称为broker。broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。broker为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息。根据特定的硬件及其性能特征,单个broker可以轻松处理数千个分区以及每秒百万级的消息量。

应用场景

活动跟踪

Kafka最初的使用场景是跟踪用户的活动。网站用户与前端应用程序发生交互,前端应用程序生成用户活动相关的消息。这些消息可以是一些静态的信息,比如页面访问次数和点击量,也可以是一些复杂的操作,比如添加用户资料。这些消息被发布到一个或多个主题上,由后端应用程序负责读取。这样,我们就可以生成报告,为机器学习系统提供数据,更新搜索结果,或者实现其他更多的功能。

传递消息

Kafka的另一个基本用途是传递消息。应用程序向用户发送通知(比如邮件)就是通过传递消息来实现的。这些应用程序组件可以生成消息,而不需要关心消息的格式,也不需要关心消息是如何被发送的。一个公共应用程序会读取这些消息,对它们进行处理:

格式化消息(也就是所谓的装饰);

将多个消息放在同一个通知里发送;

根据用户配置的首选项来发送数据。

使用公共组件的好处在于,不需要在多个应用程序上开发重复的功能,而且可以在公共组件上做一些有趣的转换,比如把多个消息聚合成一个单独的通知,而这些工作是无法在其他地方完成的。

度量指标和日志记录

Kafka也可以用于收集应用程序和系统度量指标以及日志。Kafka支持多个生产者的特性在这个时候就可以派上用场。应用程序定期把度量指标发布到Kafka主题上,监控系统或告警系统读取这些消息。Kafka也可以用在像Hadoop这样的离线系统上,进行较长时间片段的数据分析,比如年度增长走势预测。日志消息也可以被发布到Kafka主题上,然后被路由到专门的日志搜索系统(比如Elasticsearch)或安全分析应用程序。更改目标系统(比如日志存储系统)不会影响到前端应用或聚合方法,这是Kafka的另一个优点。

提交日志

Kafka的基本概念来源于提交日志,所以使用Kafka作为提交日志是件顺理成章的事。我们可以把数据库的更新发布到Kafka上,应用程序通过监控事件流来接收数据库的实时更新。这种变更日志流也可以用于把数据库的更新复制到远程系统上,或者合并多个应用程序的更新到一个单独的数据库视图上。数据持久化为变更日志提供了缓冲区,也就是说,如果消费者应用程序发生故障,可以通过重放这些日志来恢复系统状态。另外,紧凑型日志主题只为每个键保留一个变更数据,所以可以长时间使用,不需要担心消息过期问题。

流处理

流处理是又一个能提供多种类型应用程序的领域。可以说,它们提供的功能与Hadoop里的map和reduce有点类似,只不过它们操作的是实时数据流,而Hadoop则处理更长时间片段的数据,可能是几个小时或者几天,Hadoop会对这些数据进行批处理。通过使用流式处理框架,用户可以编写小型应用程序来操作Kafka消息,比如计算度量指标,为其他应用程序有效地处理消息分区,或者对来自多个数据源的消息进行转换。

为什么选择Kafka

基于发布与订阅的消息系统那么多,为什么Kafka会是一个更好的选择呢?

多个生产者

Kafka可以无缝地支持多个生产者,不管客户端在使用单个主题还是多个主题。所以它很适合用来从多个前端系统收集数据,并以统一的格式对外提供数据。例如,一个包含了多个微服务的网站,可以为页面视图创建一个单独的主题,所有服务都以相同的消息格式向该主题写入数据。消费者应用程序会获得统一的页面视图,而无需协调来自不同生产者的数据流。

多个消费者

除了支持多个生产者外,Kafka也支持多个消费者从一个单独的消息流上读取数据,而且消费者之间互不影响。这与其他队列系统不同,其他队列系统的消息一旦被一个客户端读取,其他客户端就无法再读取它。另外,多个消费者可以组成一个群组,它们共享一个消息流,并保证整个群组对每个给定的消息只处理一次。

基于磁盘的数据存储

Kafka不仅支持多个消费者,还允许消费者非实时地读取消息,这要归功于Kafka的数据保留特性。消息被提交到磁盘,根据设置的保留规则进行保存。每个主题可以设置单独的保留规则,以便满足不同消费者的需求,各个主题可以保留不同数量的消息。消费者可能会因为处理速度慢或突发的流量高峰导致无法及时读取消息,而持久化数据可以保证数据不会丢失。消费者可以在进行应用程序维护时离线一小段时间,而无需担心消息丢失或堵塞在生产者端。消费者可以被关闭,但消息会继续保留在Kafka里。消费者可以从上次中断的地方继续处理消息。

伸缩性

为了能够轻松处理大量数据,Kafka从一开始就被设计成一个具有灵活伸缩性的系统。用户在开发阶段可以先使用单个broker,再扩展到包含3个broker的小型开发集群,然后随着数据量不断增长,部署到生产环境的集群可能包含上百个broker。对在线集群进行扩展丝毫不影响整体系统的可用性。也就是说,一个包含多个broker的集群,即使个别broker失效,仍然可以持续地为客户提供服务。要提高集群的容错能力,需要配置较高的复制系数。

高性能

上面提到的所有特性,让Kafka成为了一个高性能的发布与订阅消息系统。通过横向扩展生产者、消费者和broker,Kafka可以轻松处理巨大的消息流。在处理大量数据的同时,它还能保证亚秒级的消息延迟。

生态系统

Kafka为数据生态系统带来了循环系统,如图所示。它在基础设施的各个组件之间传递消息,为所有客户端提供一致的接口。当与提供消息模式的系统集成时,生产者和消费者之间不再有紧密的耦合,也不需要在它们之间建立任何类型的直连。我们可以根据业务需要添加或移除组件,因为生产者不再关心谁在使用数据,也不关心有多少个消费者。

受欢迎程度

王国璋在“Kafka从0.7到1.0:过去7年我们踩过哪些坑?”这篇文章中提到如下数据:2018年上半年,Confluent做过一个统计,在福布斯500强公司里,大概有35%的公司都在使用Kafka。具体到不同的行业,全世界前10大旅行公司中有6个在使用Kafka,全世界最大的10个银行有7个在用Kafka,最大的10个保险公司有8个在用Kafka,最大的10个通讯公司中有9个在用Kafka。在国外,Netflix、Uber、Airbnb、PayPal、The New York Times等都是Kafka的重度用户。

道且长

Kafka一直是最受欢迎的消息队列解决方案。近年,Kafka努力转型为一个流数据平台。随着基础设施的云化和容器化,跟容器化架构的整合,与既有框架的结合等是Kafka面临的主要挑战。在计算与存储分离、更好地适应容器化架构方面,Pulsar的呼声渐高。Jesse Anderson详细比较了使用Kafka 和Pulsar创建工作队列的优缺点,你可以访问jesse-anderson的网站参考这篇文章《Creating Work Queues with Apache Kafka and Apache Pulsar》。未来,不管哪个架构都需要不断进化。

深入了解与使用

如果你想深入细致了解使用Kafka快速高效地构建生产者和消费者实例,使用Kafka Streams、Kafka Connect和KSQL在流处理和运维上提升Kafka的平台性能,以及整个生态系统的发展趋势,那么——

资深大数据工程师、培训师Jesse Anderson在O’Reilly主办的AI Conference 2019北京站上主讲的「Kafka专业开发」课程值得学习。

即使你并不会编写复杂的代码,KSQL也会让你快速上手流处理。

导师:Jesse Anderson (Big Data Institute)

Topic: Professional Kafka Development

下面是一个为期两天的培训大纲。

周三(6月18日)

Data at scale

Data movement concepts

Moving data at scale

Kafka concepts

Kafka system

Basic concepts

Advanced concepts

Developing with Kafka

Using Apache Maven

Kafka APIs

KafkaAPIcaveats

Advanced Kafka development

Advanced consumers and producers

Advanced offset handling

Transactions

Multithreading consumers

周四(6月19日)

Kafka and Avro

Why serialize

Avro and serialization formats

Kafka Connect

Using Kafka Connect

Importing fromJDBC

Exporting toHDFS

Kafka Streams

Kafka Streams

The Kafka StreamsAPI

KSQL

UsingKSQL

Wrap-up and Q&A

参会指南

AI Conference 2019北京站正在火热报名中,请搜索AI大会或人工智能大会,进入官网查看讲师和议题详情。

【对“进击的 Kafka:不止消息队列,新一代流数据处理平台”发布评论】

版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
广告
相关
·谷歌将于秋季发布新一代Android:Android 10
·打造新一代社交招聘小程序,猎多多率先在社交招
·工信部部长苗圩:软件是新一代信息技术的灵魂
· 紫光西部数据发布新一代智能数据中心战略 引领
·研发协助系统“BugDone”发布全新一代2.0版本
·新一代企业知识资产运营管理系统OK Power首亮相
·化繁为简随需而变 新华三新一代网络管理平台iMC3
·芯时代:金品发布新一代Purley平台服务器
头条
“魔搜”软件开发者张某被判刑1年2个月缓刑1年10个月 “魔搜”软件开发者张某被判刑1年2个月缓刑1
一个取名魔搜的软件篡改消费者在电商平台的购物浏览记录,企图通过数据造假制造爆款。……
·“魔搜”软件开发者张某被判刑1年2个月缓刑1
·45款应用程序遭谷歌下架 猎豹移动股价惨跌16.
·腾讯会议一星好评,如何占得线上视频会议市场
·高仿APP捞钱套路:蹭官方、发广告、索取隐私
·报告称APP的支出和使用率在2019年达到创纪录
图文
“远程办公”战线拉长,如何确保“私有化”办公?
“远程办公”战线拉长,如何确保“私有化”
友盟+智能认证:用户增长始于头,体验提升只需1.3秒
友盟+智能认证:用户增长始于头,体验提升
知米背单词APP那些不为人知的小细节(图)
知米背单词APP那些不为人知的小细节(图)
Realme引入广告什么情况 Realme广告怎么设置关闭?
Realme引入广告什么情况 Realme广告怎么设
最新
·“远程办公”战线拉长,如何确保“私有化”办公?
·友盟+智能认证:用户增长始于头,体验提升只需1.3
·“魔搜”软件开发者张某被判刑1年2个月缓刑1年10
·字节跳动称旗下办公产品飞书被微信全面封禁
·疫情下的危机,如何通过“信源豆豆”实现企业安全
热点
·群控、云控时代即将终结,智控时代已到来
·106短信群发平台APP,致力于成为领域内佼佼者
·DT小听App:防偷拍,还是用这款国产app(图)
·软件技术行业发展变化非常快,软件人才要按需
·嗨学网一级消防可靠吗?新手妈妈亲生经历告诉
旧闻
·喜推人工智能名片:看懂客户心,销售才能更欢
·漂亮有创意的思维导图怎么画?办公也有小技巧
·微软发布2013年首批补丁 暂未修复IE漏洞
·社会“抢票软件”存隐患随时有可能被屏蔽
·全国多地上线电子社保卡 微信10秒即可申领
广告
硅谷影像
“远程办公”战线拉长,如何确保“私有化”办公?
“远程办公”战线拉长,如何确保“私有化”办公?
友盟+智能认证:用户增长始于头,体验提升只需1.3秒
友盟+智能认证:用户增长始于头,体验提升只需1.3
“魔搜”软件开发者张某被判刑1年2个月缓刑1年10个月
“魔搜”软件开发者张某被判刑1年2个月缓刑1年10
打响“科技防疫战” 中软国际解放号在行动
打响“科技防疫战” 中软国际解放号在行动
钉钉5.0新增在线办公室、圈子,满足用户个性化需求
钉钉5.0新增在线办公室、圈子,满足用户个性化需
钉钉5.0产品见面会 彩蛋Real如我曝光号召无压力分享
钉钉5.0产品见面会 彩蛋Real如我曝光号召无压力分
关于我们·About | 联系我们·contact | 加入我们·Join | 关注我们·Invest | Site Map | Tags | RSS Map
电脑版·PC版 移动版·MD版 网站热线:(+86)010-57255600
Copyright © 2007-2020 硅谷网. 版权所有. All Rights Reserved. <京ICP备12003855号-2>