Apache kafka 卡夫卡能力规划

Apache kafka 卡夫卡能力规划,apache-kafka,capacity-planning,Apache Kafka,Capacity Planning,我的雇主有一个卡夫卡集群来处理有价值的数据。我们有没有办法知道我们的群集运行时的容量百分比?我们的群集能否处理更大的流量?如果一个节点发生故障,我们能存活一小时或一天吗?我不确定你的确切意思,所以我将采取广泛的方法 您所说的容量是指“我的卡夫卡集群会容纳我所有的日志吗?”。这是一个功能: 主题的保留期 你的 卡夫卡消息的平均大小 您希望通过系统推送的消息量 您的复制因子 如果你有。另见: 如果您有一个2周的保留期,没有日志压缩(当一条消息消失时,它就消失了),没有日志压缩,并且在这两周内,您

我的雇主有一个卡夫卡集群来处理有价值的数据。我们有没有办法知道我们的群集运行时的容量百分比?我们的群集能否处理更大的流量?如果一个节点发生故障,我们能存活一小时或一天吗?

我不确定你的确切意思,所以我将采取广泛的方法

您所说的容量是指“我的卡夫卡集群会容纳我所有的日志吗?”。这是一个功能:

  • 主题的保留期
  • 你的
  • 卡夫卡消息的平均大小
  • 您希望通过系统推送的消息量
  • 您的复制因子
  • 如果你有。另见:
如果您有一个2周的保留期,没有日志压缩(当一条消息消失时,它就消失了),没有日志压缩,并且在这两周内,您希望推送10000条1k大的消息(在这两周内),并复制3次。。。你最好有30000K的存储空间,或者30MB

至于进一步的计算,关于集群的大小,以及在出现问题之前可以关闭多少台机器,磁盘空间,IO,-操作问题,诸如此类,这里有一些关于该主题的非常棒的链接:

  • (我认为在这几年的过渡期内,这方面的变化不大)
如果您所说的容量是指“我的卡夫卡群集,即我的卡夫卡群集中的“物理”框可以处理多少卡夫卡流量?”:即卡夫卡在您的框中存储数据的速度有多快,那么这是另一个问题。如果您想知道(例如)哪种AWS实例类型处理Kafka数据最快,或者为JVM提供多少内存/您还可以在该代理上运行什么,那么这是一件好事

这里值得注意的是,从Unix的角度来看,盒子上的可用内存越多(所以不要天真地把所有内存都给JVM;)。网卡的类型/容量也非常重要

这里有几件有趣的事情值得一读:

有了这个理论上的最大值(“超过你所需要的”),测试你的个人代理/安装可能是值得的。或者使用Ranger,一个类似的工具,或者只是在它上面转储大量的真实数据(可能同时测试您的数据管道,过渡到我的下一点…)

如果您所说的容量是指,“一条消息通过我的数据管道、进入卡夫卡、被微服务消费、转换、生成新主题、再次消费……并最终到达微服务集群/数据管道末端需要多长时间、平均时间或中间时间?”

这是一个函数:

  • 你要多少钱
  • 如果您的使用者组中有足够的使用者来处理所有分区
  • 每个微服务处理需要多长时间
假设您有一个很好的分区级并发策略,我会在每条消息中添加跟踪信息。如果你想让它简单、愚蠢,也许可以在你的消息中添加“首次摄取时间”字段。对于更复杂的跟踪,您可以将跟踪ID与每条消息一起传递(最初的生产者创建跟踪ID,所有其他消费者只传递跟踪ID,或者如果您将消息拆分为位,则将跟踪ID用作父项,等等)。如果您有初始摄取时间,那么您的最后一个微服务可以检查当前时间并计算您的计算长度度量

不同的微服务需要不同的时间来处理它们的消息。如果你有一个跟踪ID,你可以做一些有趣的事情,比如让每个微服务向卡夫卡主题写入关于当前服务处理当前消息所用时间的信息。(对卡夫卡问题应用更多卡夫卡!)。或者让每个主题都写入一个搜索数据存储,并在数据上添加一个小TTL:例如,使用Elasticsearch来查询最近的卡夫卡数据,这样您就可以跨主题获得搜索结果,这是我见过的一个巧妙的技巧。然后您会发现microservice 5的速度很慢,您需要花一些时间对其进行性能调优

编辑:你也可能有幸监测你的生产线(看起来它仍然在2017年积极获得爱),将监测,看看你的消费者是否落后,以及其他事情


我希望这有帮助。不幸的是,表面上看,这是一个更广泛的问题。最终,它是数据管道中%磁盘空间、%CPU和%SLA的函数。。。这有时可以归结为一些独特的因素,比如您的消息大小,您是或想要运行的机器类型,以及您的微服务的速度。卡夫卡这项技术可以处理惊人的流量:LinkedIn不是一个小网站,互联网上一些流量最大的网站都在使用卡夫卡。理论上,一个构造良好的代理集群应该能够处理您向它抛出的任何东西。实际部分涉及到您的工作流、您的需求、您实际使用它做什么等等。

我们的群集运行的容量百分比--听起来您需要硬件级别的适当监控解决方案,而不仅仅是Kafka JVM监控。您能否生存取决于主题复制因素(您没有提到),或者您的集群isI有多大?它有一个完整的普罗米修斯度量跟踪系统,跟踪通过JMX报告的所有卡夫卡度量,还使用普罗米修斯节点导出器跟踪系统度量,如CPU/RAM/磁盘使用等。你是说JMX监控而不是JVM监控吗?这是不是一个“合适的”监控解决方案?JMX是一种监控JVM的技术,所以这就是我的意思。Kafka占用CPU和磁盘资源,分配一些堆空间,并执行GC调用。。。如果不提供更多的inf,您在这里寻找的答案就不太清楚了