Apache Kafka是处置流式数据的理想规范。随着它在各行各业中的宽泛运行,我经常会听到一个十分无心思的疑问:我什么时刻不适宜经常使用Apache Kafka?流式数据处置平台有哪些限度?Kafka在什么场所下不能胜任?
这篇文章讨论了Kafka长于做的和不长于做的场景。并且用独自的章节列出了何时适宜经常使用Kafka,何时不适宜经常使用Kafka,以及何时可以将Kafka作为可选项。
首先,Kafka的运行如此宽泛,曾经证实了它在流式事情处置畛域有着渺小的市场需求。但同时也要留意:Kafka并没有提供流式事情处置畛域的完整处置打算。简言之,Kafka不是银弹,而是流式事情处置畛域中一个至关关键的组成局部!
当天所在的环球,信息互联互通变得无处不在。这种越来越严密的衔接生成了少量互关系联的实时数据。经过对这些数据的处置和加工,企业可以有效的降落老本微危险,并提高业务支出。
车联网和游戏就是其中两个最典型的例子:
车联网:少量的采集数据和售后服务
以下是Allied Market Research制造的2020-2027年环球时机剖析和行业预测:
车联网畛域所触及的场景和行业比大少数人构想的要宽泛得多,比如:网络基础设备、安保、文娱、批发、售后市场、车辆保险、智慧市区等场景。
游戏行业:数十亿的玩家和庞大的支出
正如Bitkraft所形容的那样,游戏行业曾经超越了一切其余媒体类别的总和,而这只是一个新时代的开局:
环球每个月都有数百万新玩家参与游戏社区。那些生存在不富有国度的玩家,如今也可以累赘得起平价的智能手机和移动网络资费。而新的游戏商业形式,比如经过玩游戏来赚钱,会扭转下一代玩家玩游戏的形式。5G等更具可裁减性和低提前的技术允许新的场景出现。区块链和NFT(非同质化代币)正在永远扭转货币外形和收藏市场。
这些趋向数据印证了实时数据处置的需求日益参与。因此了解何时在名目中经常使用曾经成为大规模数据处置剖析和业务数据流的理想规范的Apache Kafka及其生态系统就变得很有价值。
Apache Kafka能做什么、不能做什么?
一些开发者经常对Kafka配置存在着曲解。例如以为Kafka只是一个信息队列。这很大水平上是由于一些供应商为了开售他们的产品,而只针对Kafka的特定配置(例如将数据导入到数据湖或数据仓库)启动引见。
Kafka能做什么:
Kafka不能做什么:
由此可见,Kafka与其余技术是互补的,而不是竞争性的。因此咱们应该依据义务的特点选用能否经常使用Kafka,并将它和其余的框架联合经常使用!
万物互联环球中的Apache Kafka
Kafka与其余技术联合的成功例子不在少数,这些案例展现了Kafka如何处置了业务疑问。这里的重点是对案例的钻研,实践上关于端到端数据流处置打算,Kafka往往须要和其余组件配合经常使用。
的在Apache Kafka的实时数据流方面,曾经有少量用于车联网、物联网边缘计算、移动互联网游戏等畛域的大数据剖析或业务数据处置de成功案例。
这里我列出了几个不同行业和场景的案例:
像这样的案例不时在不停的参与
但是咱们须要进一步说明何时在Apache Kafka系统中经常使用事情流,以及其余补充处置打算如何和为Kafka提供补充。
何时适宜经常使用Apache Kafka
在讨论什么时刻不经常使用Kafka之前,让咱们先了解应该在何时经常使用Kafka,并了解如何经常使用其余技术来补充Kafka。我将在每个局部中参与实在示例。这会使得了解这些场景变得愈加容易。
1、经过Kafka实时处置物联网和移动端大数据
大数据实时处置是Kafka的关键才干之一。
特斯拉不只仅是一家汽车制造商。还是一家科技公司,他开发了少量翻新和尖端软件。他们为汽车提供动力基础设备,包含特斯拉超级充电站、消费太阳能得超级工厂的等等。特斯拉成功的关键技术之一,就是实时处置和剖析来自汽车智能电网和工厂的数据,并与其余IT后端服务集成。
特斯拉建设了一个基于Kafka的数据平台基础设备,允许数百万台设备和数万亿个数据埋点。2019年,特斯拉在Kafka峰会上展现了他们实时数据业务的演进环节:
请留意,Kafka的作用不只是信息传递。Kafka是一个散布式存储层,它真正将消费者和消费者解耦。此外,Kafka原生处置工具(如Kafka Streams和ksqlDB)允许实时处置。
2、经过Kafka将物联网数据集成到MES和ERP等业务系统
Kafka Connect和其余非Kafka两边件为大规模实时数据集成系统与业务系统(如ERP或MES系统)提供了**的事情流配置。
BMW在边缘节点(即智能工厂)和私有云上部署了着口头关键义务的Kafka实例。对制造业的来说每一分钟的停机期间都会消耗少量资金,因此稳固性就会变得至关关键。而Confluent的Kafka发行版本相比拟原生Kafka在稳固性上有了大幅度提高。
宝马经过对供应链的实时提升和治理。成功了在业务系统(如基于SAP的宝马ERP)中成功正确的物理库存的信息。我在该畛域接触的近50%的客户,都在经常使用Kafka和SAP相互集成的打算。除了和SAP集成,许多下一代ERP和MES平台也间接经常使用了Kafka作为底层技术允许。
3、经过Kafka将部署在边缘端、混合云或多云的非物联网IT系统集成到企业系统。
将Apache Kafka部署在多集群和跨数据中心已成为常态。一些特定的需求或许须要驳回多集群处置打算,包含劫难复原、聚合剖析、云迁徙、关键义务裁减部署、环球Kafka。
相关于其余信息传递平台(如IBM MQ、RabbitMQ或MQTT代理),成功不同协定之间解耦是Kafka的共同长处。关于Kafka的畛域驱动设计(DDD)也是一个值得详细讨论的方向。
4、经过Kafka为跨行业运行提供可基于混合云部署的现代化基础设备。
这方面以Unity公司为例,该公司提供了一个游戏实时3D开发平台,并仰仗其AR/VR配置成功进入制造业等其余行业。2019年,这家数据驱动公司产品生成的内容曾经在环球到达30亿部设备装置,装置次数曾经到达330亿次。同时Unity运营着环球上最大的盈利网络之一。他们的名目团队将这个平台从自建的Kafka迁徙到了托管的Confluent 云上,环节中没有停机或数据失落。
5、Kafka为移动服务和游戏/博彩平台提供可裁减的实时后端
许多游戏和移动服务都将事情流作为其基础设备的支柱。经常使用场景包含用户行为剖析、基于位置的服务、支付、欺诈检测、用户/玩家留存率和用户黏度的处置。游戏和移动服务畛域简直一切的运行都须要大规模的实时数据流。
一个无心思的现象是:并不是每家移动或游戏服务的厂商都在地下议论Kafka的经常使用,但简直每家都在寻觅Kafka专家来开发和运营他们的平台。
这些场景对安保性的要求与银行**平台中的支付流程一样高。遵守合规性和零数据失落也是至关关键。因此应用Kafka多区域集群(例如超越美国东部、中部和西部等地域的Kafka集群)成功了高可用性,即使在出现劫难的状况下也不会出现停机和数据失落。
游戏中的多区域Kafka集群示例
6、在车辆或物联网设备中内嵌独自Kafka实例
边缘计算技术在突飞猛进的开展,出于低提前、老本效率、网络安保或没有互联网衔接等要素的考量,某些场景须要在数据中心外的边缘部署Kafka集群或实例。
皇家加勒比游轮一个成功案例。它运营着环球上四艘最大的游轮。截至2021年1月,该航线运营24艘船舶,另有6艘船舶在订购中。皇家加勒比在边缘侧成功了最驰名的Kafka场景之一。每艘游轮都有一个Kafka集群在本地运转,用于支付处置、用户黏度、客户介绍等业务。
Kafka边缘部署要留意依据实践业务场景做出调整,这样才干保障足够的低时延性能。
Apache Kafka的搁浅区
首先要了解何时经常使用Kafka。才会搞明白什么场景下不实用Kafka。
在本节中,假定咱们讨论的是消费环境,而不是一些奇丑的变通形式,当你须要在环球范围外部署和弹性伸缩、遵守合规性并保障业务性服务不会失落数据时,状况就会出现变动。思考到这一点,关于一些用例和疑问来说,把Kafka扫除在外是相对容易的:
1、Kafka不是齐全实时的
实时一词的定义很难。这通常是一个营销术语。实时程序必定保障在指定的期间限度内做出照应。Kafka(以及在此高低文中经常使用的一切其余框架、产品和云服务)只是相对实时的,并且是为IT运行构建的。但是许多智能化控制和物联网运行须要具有零提前峰值的齐全实时。
实时一词的定义很难。这通常是一个营销术语。实时程序必定保障在指定的期间限度内做出照应。Kafka(以及在此高低文中经常使用的一切其余框架、产品和云服务)只是相对实时的,并且是为IT运行构建的。但是许多智能化控制和物联网运行须要具有零提前峰值的齐全实时。
Kafka是实时的,但不是齐全实时的。相对实时通罕用于以下运行:
假设运行程序须要亚毫秒的提前,那么Kafka不是适宜的技术。例如,高频买卖通常经过专门构建的专有商业处置打算来成功。
请一直记住:在争取最低提前的较量中,Kafka每次都会输,最低提前的最佳打算是基本不经常使用信息传递系统,而是只经常使用共享内存。 但是,关于审计日志和业务日志或耐久化引擎的交流局部来说,没有什么数据失落比提前和Kafka的胜利更关键 。实践上大少数实时场景只要要毫秒到秒范围内的数据处置。在这种状况下,Kafka是一个完美的处置打算。许多金融科技公司,如罗宾汉,依赖Kafka成功关键义务的业务上班,甚至是金融买卖。多接入边缘计算(MEC)则是经过Apache Kafka和云原生5G基础设备构建的低提前数据流的另一个低劣示例。
2、Kafka关于嵌入式和安保关键型系统来说是不确定的
须要明白的是,Kafka不是一个确定性系统。不能用于汽车发起机控制系统、医疗系统(如心脏起搏器)或工业环节控制器等安保关键型运行程序。
Kafka不实用的典型场景如下:
安保关系数据处置并非Kafka能胜任的,必定经常使用公用的低级编程言语和处置打算来成功。雷同,类Kafka 的软件如IBM MQ、Flink、Spark、Snowflake也不实用。
3、Kafka不是为不稳固的网络而建
Kafka须要客户端和实例之间良好稳固的网络衔接。因此,假设网络不稳固,造成客户端须要不停地尝试从新衔接,那么这种状况往往很难到达预先设定的SLA。
也有一些例外,例如经过其余技术来处置不良网络疑问而构建的。MQTT是最典型的例子。因此,Kafka和MQTT是好友,而不是死敌。这种组合配置弱小,在各个行业中宽泛经常使用。因此,我写了一系列关于Kafka和MQTT的Blog。
例如咱们经常使用MQTT、Kafka和TensorFlow构建了一个Kappa架构的汽车衔接基础设备,用于处置100000个数据流以启动实时预测。
4、Kafka不提供与不可胜数个客户端的衔接
将Kafka定义为集成处置打算的另一个详细点是,Kafka无法衔接到数万个客户端。假设您须要为移动玩家构建互联汽车基础设备或游戏平台,客户端(即汽车或智能手机)将经过一个集成了Kafka 的处置打算衔接,而不会间接衔接到Kafka。
普通来说在数千个客户端和Kafka之间参与一个公用代理(如HTTP网关或MQTT代理)担任客户端和Kafka的衔接,而数据最终会被Kafka集成到数据仓库,数据湖或许自定义后端运行中。
Kafka客户端衔接的限度在哪里? 通常状况下,这很难说。我看到客户经过.net间接从工厂车间衔接,经过Java Kafka客户端间接衔接到运转Kafka集群的云。假设机器plc、物联网网关和物联网设备的数量在数百台,间接混合衔接通常会上班得很好。关于更多的客户端运行程序,开发者须要针对以下疑问来启动评价:
什么时刻有或许经常使用Apache Kafka?
这里讨论一下哪些场景中Kafka是可选的选用:
1、Kafka(通常)不会交流另一个数据库
Apache Kafka自身是一个提供了ACID保障,并被数百家公司用于义务关键型部署的数据库。但是大少数状况下Kafka与其余数据库相比并没有竞争力。Kafka是一个事情流平台,用于实时大规模的信息传递、存储、处置和集成,并保障无停机期间或有数据失落。
Kafka通常被用作流式数据集成层。而后依据运行场景选用其余数据库作为实体视图,照实时时序剖析、近似实时的将文本导入搜查基础设备、经过数据湖启动数据的常年存储。
总之,当你被问及Kafka能否可以取代数据库时,可以启动如下的回答:
2、Kafka(通常)不处置大型信息
Kafka不是为大型信息而设计的。
但是越来越多的名目经过Kafka发送和处置1MB、10MB甚至更大的文件或其余的大信息体。一个要素是Kafka是为大容量/吞吐量设计的,这是大信息所须要的。经常出现的一个十分经常出现的用法是,经常使用Kafka从遗留系统中提取和处置大文件。并处置过的数据存入数据仓库。但是并不是一切的大信息都适宜用Kafka处置。普通来说您应该经常使用正确的存储系统,仅仅应用Kafka启动编排。基于援用的信息传递(行将文件存储在存储系统中并只发送链接和元数据)通常是更好的设计形式:
了解不同的设计形式,并为选用正确的技术。
无关经常使用Kafka处置大型文件的更多详细信息和场景,请参阅以下博客文章:《经常使用Apache Kafka处置大型信息(CSV、XML、图像、视频、音频、文件)》。
3、Kafka(通常)不作为物联网工业协定的最后一公里集成网
物联网设备和移动运行程序的最后一公里集成是一个辣手的疑问。如上所述,Kafka无法衔接到数千个客户端。但是,许多物联网和移动运行只要数十或数百个客户端。在这种状况下,就可以经常使用环球上简直任何编程言语的都提供允许各种Kafka客户端,直连到Kafka实例。
假设出现了无法在TCP协定层面上建设到Kafka服务端的衔接的状况下。一个十分盛行的处置打算是经过REST代理作为客户端和Kafka集群之间的代理。客户端经过同步HTTP(S)协定与REST代理通讯。Apache Kafka的HTTP和REST API场景包含控制平面(=治理)、数据平面(=生成和消费信息)和DevOps智能化义务。
可怜的是,许多物联网名目须要更复杂的集成。这里不能只讨论经过MQTT或OPC-UA衔接器启动的相对便捷的集成。工业物联网名目面临的应战包含:
因此,许多物联网名目用一个专门构建的物联网平台来补充Kafka。大少数物联网产品和云服务是专有的,但提供放开的接口和架构。在这个行业中开源的名目相对较少。一个很好的打算(关于某些场景)是Apache PLC4X。该框架集成了许多遗留专有的协定,如Siemens S7、Modbus、Allen Bradley、Beckhoff ADS等。PLC4X还提供了一个Kafka Connect衔接器,用于本地和可裁减的Kafka集成。
现代数据记载系统是放开和灵敏的。许多基于混合云的现代化物联网名目是由事情流驱动的:
4、Kafka与区块链
Kafka不是区块链(但与web3、加密买卖、NFT、链外、侧链、预言机关系)。
Kafka是一个散布式日志提交系统。这些概念和基础十分相似于区块链。关于大少数企业名目,区块链会参与不用要的复杂性。这种状况下用一个散布式提交日志(= Kafka)或一个防窜改散布式账本(= enhanced Kafka)就足够了。只要当不同的不受信赖方须要协作时,才应经常使用区块链。
幽默的是,越来越多的公司在其加密买卖平台、市场买卖所和代币买卖市场中经常使用Kafka。
须要明白的是:Kafka并不用于造成这些平台上的区块链。区块链是一种像比特币一样的加密货币,或许像以太坊一样提供智能合约的平台,人们可以在那里为游戏或艺术行业构建新的散布式运行程序(dApps),如NFT。Kafka是将这些区块链与其余预言机(=非区块链运行)衔接起来的流平台,如CRM,数据湖,数据仓库等。
TokenAnalyst是一个典型的例子,它用Kafka把比特币/以太坊的区块链数据和他们的剖析工具集成起来。Kafka Streams提供了一个有形态的流式运行程序来防止在下游聚算计算中经常使用有效块。例如,TokenAnalyst开发了一个块确认器组件,该组件经过暂时保管块来处置重组场景,并仅在到达少量确认(开掘该块的子块)的阈值时启动流传。
在一些初级场景中,Kafka用于成功边链或链外平台,由于原始区块链的裁减性不够好(区块链称为链上数据)。并非只要比特币存在每秒只处置个位数买卖的疑问(!)。大少数现代区块链处置打算的性能没有方法裁减到Kafka的处置速度。
无论是去中心化自治组织还是蓝筹公司,在散布式网络中权衡区块链基础设备和物联网组件的肥壮状况,防止停机,确保基础设备的安保,并使区块链数据可访问都是十分必要的。Kafka提供了一种无代理和可裁减的形式来展现数据给关系各方,并确保在节点失落之前,关系数据被地下给正确的团队。这与最前沿的Web3物联网名目(如Helium)或更便捷的敞开散布式账本(DLT)(如R3 Corda)无关。
我最近宣布了一篇关于活动流媒体和Kafka扭转批发元环球的实时商业的文章,展现了批发和游戏行业是如何衔接虚构和实体事物的。批发业务流程和客户沟通是实时出现的;无论你是想卖衣服、智能手机还是为你的收藏品或视频游戏发售基于区块链的NFT代币。
写在最后
小结一下,Kafka不能取代数据库或数据仓库,也不实用于齐全实时性的安保关键性嵌入式业务、不稳固网络中数千个客户端的代理、API治理处置打算、物联网网关,也更不同等于区块链。
关于某些场景和需求,很容易将Kafka扫除。
但是,简直一切行业的剖析和业务上班都经常使用Kafka。它是无处不在的事情流的理想规范。因此Kafka经常与其余技术联合经常使用。
译者引见
吉锴,社区编辑,18年软件开发阅历。如今阿里云环球培训中心任讲师,担任云计算,云原生,数字化转型等畛域的课程设计,交付。先后于富士通,联想团体,欢聚时代,搜狗任职,手机YY首任架构师。2014年开局从事专业技术培训和顾问上班。