行使Scala开拓Apache Kafka的TOP 20大最佳实践!
副问题[/!--empirenews.page--]
本文作者是一位软件工程师,他对20位开拓职员和数据科学家行使Apache Kafka的方法举办了最大限度得深入研究,最终将出产实践环节必要留意的题目总结为本文所列的20条提议。 ![]() Apache Kafka是一个广受接待的漫衍式流媒体平台,New Relic、Uber以及Square等数千家公司都在行使它构建可扩展、高吞吐量、靠得住的及时流媒系一切。譬喻,New Relic的Kafka集群每秒处理赏罚高出1500万条动静,总数据速度靠近1 Tbps。 Kafka在应用措施开拓职员和数据科学家中很是受接待,由于它极大简化了数据流的处理赏罚进程。可是,Kafka在Scala上实践会较量伟大。假如斲丧者无法跟上数据流,而且动静在他们看到之前就消散了,那么具有自动数据保存限定的高吞吐量宣布/订阅模式并没有多大用。同样,假如托管数据流的体系无法扩展以满意需求可能不行靠,也没有什么用。 为了低落这种伟大性,作者将也许的题目分为4大类共20条,以利便用户领略:
Kafka是一种高效漫衍式动静转达体系,可提供内置数据冗余和弹性,同时保存高吞吐量和可扩展性。它包罗自动数据保存限定,使其很是得当将数据视为流的应用措施,而且还支持对键值对映射建模的“压缩”流。 相识最佳实践之前,你必要认识一些要害术语:
第一部门:行使分区的最佳实践! 在分区部门,我们必要相识分区的数据速度,以确保拥有正确的保存空间。分区的数据速度是天生数据的速度。换句话说,它是均匀动静巨细乘以每秒动静数。数据速度抉择了给按时刻内所需的保存空间(以字节为单元)。假如不知道数据速度,则无法正确计较满意根基保存方针所需的空间巨细。数据速度指定了单个斲丧者必要支持的最低机能而担保不会呈现Lag。 除非有其他架构需求,不然在写入topic时行使随机分区。当举办大局限操纵时,分区之间的数据速度不均也许难以打点。必要留意以下三方面: 1、起首,“热门”(更高吞吐量)分区的斲丧者必需处理赏罚比斲丧者群组中其他斲丧者更多的动静,这也许导致处理赏罚和收集瓶颈。 2、其次,必需为具有最高数据速度的分区调解topic保存空间巨细,这也许会导致topic中其他分区的磁盘行使量增进。 3、最后,在分区率领方面实现最佳均衡比简朴地扩展到全部 brokers更伟大。“热门”分区的份量也许是统一topic中另一分区的10倍。 第二部门:行使斲丧者最佳实践! 假如斲丧者运行的Kafka版本低于0.10,请进级。在0.8.x版本中,斲丧者行使Apache ZooKeeper举办斲丧者群组和谐,而且很多已知错误也许导致恒久运行的均衡乃至是从头均衡算法的失败(我们称之为“从头均衡风暴”)。在从头均衡时代,将一个或多个分区分派给行使者群组中的每个行使者。在再均衡中,分区全部权在斲丧者中不绝变通,阻止任何斲丧者在斲丧方面取得现实盼望。 4、调解斲丧者套接字缓冲区以举办高速获取。在Kafka 0.10.x中,参数为isreceive.buffer.bytes,默以为64kB。在Kafka 0.8.x中,参数是socket.receive.buffer.bytes,默以为100kB。对付高吞吐量情形,这两个默认值都太小,出格是假如brocker和斲丧者之间的收集带宽耽误大于局域网(LAN)。对付耽误为1毫秒或更长的高带宽收集(10 Gbps或更高),请思量将套接字缓冲区配置为8或16 MB。假如内存不敷,请思量1 MB,也可以行使值-1,这样底层操纵体系可以按照收集前提调解缓冲区巨细。可是,对付必要启动“热门”斲丧者的体系而言,自动调解的速率也许或较量慢。 5、计划高吞吐量斲丧者,以便在有担保的环境下实验背压,最好只耗损可以有用处理赏罚的对象,而不是耗损太多,以至于进程遏制,退出斲丧者群组。 斲丧者应该行使牢靠巨细的缓冲区(拜见Disruptor模式),假如在Java假造机(JVM)中运行,最好是在堆外行使。牢靠巨细的缓冲区将阻止斲丧者将大量数据拖到堆上,JVM耗费全部时刻来执行垃圾网络而不是做你想让它处理赏罚的事变——处理赏罚动静。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |