当前位置:首页 > 数码 > 为高性能消息管道优化资源-Apache-如何确定-Kafka-的大小和规模 (为高性能消息的软件)

为高性能消息管道优化资源-Apache-如何确定-Kafka-的大小和规模 (为高性能消息的软件)

admin7个月前 (04-17)数码64

调整或扩展 Kafka 以获得最佳成本和性能的第一步是了解数据流平台如何使用资源。这里给一些实用的建议。

的大小和规模

Kafka 如何利用资源

1. CPU 一般来说,Apache Kafka 在 CPU利用率方面比较轻。在选择基础设施时,我倾向于拥有更多的核心而不是更快的核心,以提高并行化水平。影响 CPU 使用量的因素有很多,其中最主要的是 SSL 身份验证和日志压缩。其他考虑因素是每个代理拥有的分区数量、有多少数据将进入磁盘、Kafka 消费者的数量(此处详细介绍),以及这些消费者离实时性有多近。如果您的数据消费者正在获取旧数据,那么从磁盘获取数据将花费 CPU 时间。我们将在下一节中对此进行深入探讨。了解 CPU 使用背后的这些基本驱动因素对于帮助团队正确确定可用CPU 功率至关重要。 2. RAM RAM 需求主要取决于需要在内存中保留多少热数据并可用于快速访问。一旦收到消息,Kafka 就会将数据交给底层操作系统的页面缓存,后者负责将数据保存到磁盘。从大小和可伸缩性的角度来看,RAM 的正确数量取决于您的用例的数据访问模式。如果您的团队将 Kafka 部署为实时数据流(使用转换并公开消费者将在几秒钟内提取的数据),则 RAM 需求通常很低,因为只需要在内存中存储几秒钟的数据。或者,如果您的 Kafka 消费者需要提取几分钟或几小时的数据,那么您需要考虑 RAM 中需要多少数据。CPU 和 RAM 利用率之间的关系很重要。如果 Kafka 可以访问 RAM 中的数据,那么它就不必花费 CPU 资源从磁盘中获取数据。如果 RAM 中没有可用的数据,代理程序将从磁盘中提取数据,从而消耗 CPU 资源,并在数据传递中增加一些延迟。实现 Kafka 的团队在调整 CPU 和 RAM 资源时应该考虑到这种关系。 3. 存储 有几个因素会影响 Kafka 存储需求,如保留时间、数据转换和适当的复制因素。考虑这个例子:每天有几 TB 的数据落在一个 Kafka 主题上,使用 Kafka 对该数据执行六次转换以保留中间数据,每个主题保留数据三天,复制因子设置为 3。很容易看出,团队可以根据使用 Kafka 的方式,将存储的数据需求快速增加一倍、三倍或四倍。您需要充分了解这些因素才能正确确定存储大小。

Kafka 预定大小示例

以下是我们工作中的一个真实例子,帮助媒体娱乐行业的服务提供商正确确定预先部署的 Kafka 的规模。该业务的峰值吞吐量入口为每秒 10GB。组织需要存储 10% 的数据(每天总计 9TB),并将这些数据保留 30 天。从复制的角度来看,该公司将存储该数据的三个拷贝,总存储需求为 810TB。为了应对潜在的峰值,明智的做法是在预期需求的基础上增加 30-40% 的空间,这意味着组织应该有 1.2PB 的可用存储空间。它们不使用 SSL,而且大多数消费者都需要实时数据,因此 CPU 和 RAM 需求不如存储重要。他们确实有一些批处理进程在运行,但延迟不是一个问题,所以数据来自磁盘是安全的。虽然这个特定的用例仍在构建中,但该示例展示了使用基本数据计算给定 Kafka 实现的最小有效规模的过程,然后从中探索扩大场景的潜在需求。

Kafka 容量规划最佳实践

了解给定用例的特定体系结构——主题设计、消息大小、消息量、数据访问模式、消费者数量等——可以提高预测大小的准确性。请考虑以下最佳实践: 使用监控工具跟踪 CPU、RAM 和存储的使用情况。 使用分区和复制因子来优化性能和可用性。 使用压缩来减少存储需求。 按照需要添加更多代理来扩展 Kafka 集群。 通过遵循这些最佳实践,您可以确保您的 Kafka 集群以最佳成本和性能运行。

结论

调整和扩展 Kafka 以满足您的需求可能是一项具有挑战性的任务。但是,了解 Kafka 如何利用资源以及最佳实践,您可以优化您的部署以实现最佳成本和性能。通过仔细规划和监控,您可以确保您的 Kafka 集群满足您的业务需求。

2019数据架构选型必读:1月数据库产品技术解析

本期目录

DB-Engines数据库排行榜

新闻快讯

一、RDBMS家族

二、NoSQL家族

三、NewSQL家族

四、时间序列

五、大数据生态圈

六、国产数据库概览

七、云数据库

八、推出dbaplus Newsletter的想法

九、感谢名单

为方便阅读、重点呈现,本期Newsletter(2019年1月)将对各个板块的内容进行精简。需要阅读全文的同学可点击文末 【阅读原文】 或登录Newsletter

大数据Kafka中常用Message Queue有哪些区别呢?

常用Message Queue对比3.1 RabbitMQRabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。 同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。 对路由,负载均衡或者数据持久化都有很好的支持。 3.2 RedisRedis是一个基于Key-Value对的NoSQL数据库,开发维护很活跃。 虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。 对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。 测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。 实验表明:入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。 3.3 ZeroMQZeroMQ号称最快的消息队列系统,尤其针对大吞吐量的需求场景。 ZeroMQ能够实现RabbitMQ不擅长的高级/复杂的队列,但是开发人员需要自己组合多种技术框架,技术上的复杂度是对这MQ能够应用成功的挑战。 ZeroMQ具有一个独特的非中间件的模式,你不需要安装和运行一个消息服务器或中间件,因为你的应用程序将扮演这个服务器角色。 你只需要简单的引用ZeroMQ程序库,可以使用NuGet安装,然后你就可以愉快的在应用程序之间发送消息了。 但是ZeroMQ仅提供非持久性的队列,也就是说如果宕机,数据将会丢失。 其中,Twitter的Storm 0.9.0以前的版本中默认使用ZeroMQ作为数据流的传输(Storm从0.9版本开始同时支持ZeroMQ和Netty作为传输模块)。 3.4 ActiveMQActiveMQ是Apache下的一个子项目。 类似于ZeroMQ,它能够以代理人和点对点的技术实现队列。 同时类似于RabbitMQ,它少量代码就可以高效地实现高级应用场景。 3.5 Kafka/JafkaKafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,而Jafka是在Kafka之上孵化而来的,即Kafka的一个升级版。 具有以下特性:快速持久化,可以在O(1)的系统开销下进行消息持久化;高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动实现负载均衡;支持Hadoop数据并行加载,对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。 Kafka通过Hadoop的并行加载机制统一了在线和离线的消息处理。 Apache Kafka相对于ActiveMQ是一个非常轻量级的消息系统,除了性能非常好之外,还是一个工作良好的分布式系统。 上图中一个topic配置了3个partition。 Partition1有两个offset:0和1。 Partition2有4个offset。 Partition3有1个offset。 副本的id和副本所在的机器的id恰好相同。 如果一个topic的副本数为3,那么Kafka将在集群中为每个partition创建3个相同的副本。 集群中的每个broker存储一个或多个partition。 多个producer和consumer可同时生产和消费数据。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Kafka

“为高性能消息管道优化资源-Apache-如何确定-Kafka-的大小和规模 (为高性能消息的软件)” 的相关文章

运维兄弟!Kafka超时疑问本源大起底 (运维小哥)

运维兄弟!Kafka超时疑问本源大起底 (运维小哥)

现象 清晨,当运维刚躺下,就被业务研发的电话叫醒,"哥们!kafka服务又意外了?影响到业务了,快看看",业务研发给出的意外日志如下: 基本剖析 抓包剖析 基本确定意外和集...

Kafka-下一代数据湖 (kafka工作原理)

Kafka-下一代数据湖 (kafka工作原理)

引言 数据管理向数据湖的转变是不可避免的,也是一次全平台的变革。通过集成 Spark、Trino 或 ClickHouse 等计算引擎,数据湖已演变成数据湖屋,不仅有助于存储海量数据,还可高...

连忙补一下-href=-面试为啥都问Kafka-a-a (妈妈连忙补充句子)

连忙补一下-href=-面试为啥都问Kafka-a-a (妈妈连忙补充句子)

大家好,我是哪吒。 Kafka简直是当今时代背景下数据管道的首选,无论你是做后端开发、还是大数据开发,对它或许都不生疏。开源软件Kafka的运行越来越宽泛。 面对Kafka的遍及和学习...

Kafka-的应用场景 (kafka是做什么的)

Kafka-的应用场景 (kafka是做什么的)

Kafka 是一个分布式流处理平台,具有高吞吐量、低延迟和可扩展性。它在许多行业和应用中得到广泛应用,以下是 Kafka 一些最常见的应用场景: 1. 日志处理与分析 Kafka 是处理和分析日...

优化实时数据处置的关键-解密Kafka主题的分区战略 (优化实时数据的方法)

优化实时数据处置的关键-解密Kafka主题的分区战略 (优化实时数据的方法)

Kafka简直是当今时代背景下数据管道的首选,无论你是做后端开发、还是大数据开发,对它或者都不生疏。开源软件Kafka的运行越来越宽泛。 面对Kafka的遍及和学习热潮,哪吒想分享一下自己多...

图解-深入浅出-全网最全-Kafka-适用场景 (深入浅出ddr)

图解-深入浅出-全网最全-Kafka-适用场景 (深入浅出ddr)

Apache Kafka 是一种分布式流处理平台,因其高吞吐量、低延迟和容错性而闻名。它在各种行业和用例中都有广泛的应用,包括消息传递、存储系统、日志聚合、网站活动跟踪和推荐系统。...

Kafka-解锁大数据时代的搜索与分析 (kafka工作原理)

Kafka-解锁大数据时代的搜索与分析 (kafka工作原理)

随着大数据时代的到来,数据湖作为一种新的数据存储和分析解决方案受到了越来越多的企业的青睐。作为一种高性能、可扩展的事件流平台,Kafka 在数据湖领域发挥着重要的作用。本文将深入探讨 Kafka...

Kafka两种集群详解和搭建教程 (kafka两种连接方式)

Kafka两种集群详解和搭建教程 (kafka两种连接方式)

Kafka是一个能够支持高并发以及流式信息处置的信息两边件,并且Kafka天生就是支持集群的,当天就关键来引见一下如何搭建Kafka集群。 Kafka目前支持经常使用Zookeeper形式搭...