cla*_*lay 4 capacity-planning apache-kafka
我的雇主有一个Kafka集群处理有价值的数据.有什么办法可以让我们了解集群运行的容量百分比是多少?我们的集群可以处理更大量的流量吗?如果单个节点出现故障,我们可以存活一小时或一天吗?
Rya*_*cox 18
我不能确定究竟你的意思,所以我要采取广泛的传播途径.
你的容量是什么意思,"我的Kafka集群会保留我的所有日志吗?".这是一个功能:
如果您有2周的保留期,没有日志压缩(当消息消失时它已经消失),没有日志压缩,并且在这两周内您希望推送1k大的10,000条消息(在这2周内)重复3次......你最好拥有30,000k的存储空间,或30MB.
至于进一步的计算,围绕群集的大小以及在遇到问题,磁盘空间,IO之前可以关闭多少台机器,这样的操作问题,这里有关于该主题的一些很棒的链接:
如果你的容量是你的意思,"我的Kafka集群,也就是我的Kafka集群中的"物理"盒子可以处理多少Kafka流量?":即Kafka在你的盒子上存储数据有多快,那就是另一个问题.如果您想知道(例如)哪种AWS实例类型最快处理Kafka数据,或者为JVM提供了多少内存/您可以在该代理上运行哪些内容,那么这是一件好事.
值得注意的是,从Unix的角度来看,盒子上的可用内存越多,Unix内核就可以用于文件缓存越多(所以不要只是天真地将它全部交给JVM;)).而且网卡的类型/容量也非常重要.
这里有几个有趣的事情要读:
与理论最大值("超过你永远需要")的想法,这是可能是值得它来测试你的个人经纪人/安装.要么使用Ranger,一个类似的工具,要么只是大量的实际数据(也许测试你的数据管道,同时转换到我的下一个点......)
如果按容量表示 "多长时间,平均值或中位数时间,消息通过我的数据管道,生成Kafka,由微服务消费,转换,生成新主题,再次消耗,需要多长时间?并最终登陆微服务集群/数据管道的末端?"
这是一个函数:
假设你有一个关于分区级并发的好策略,我会在每条消息中添加跟踪信息.如果你想保持简单,愚蠢,也许在你的消息中添加"初始摄取时间"字段.对于更复杂的跟踪,您可以为每条消息传递跟踪ID(初始生产者创建此消息,所有其他消费者只是将其传递,或者如果将消息拆分为比特等,则将其用于父母).如果您有初始摄取时间,那么您的上一个微服务可以检查当前时间并计算您的计算长度指标.
不同的微服务将花费不同的时间来处理它们的消息.如果你有一个跟踪ID,你可以做一些有趣的事情,比如让每个微服务写一个Kafka主题,告诉你当前服务处理当前消息需要多长时间.(将更多Kafka应用于您的Kafka问题!).或者让每个主题都写入搜索数据存储,并在数据上使用小TTL:例如,使用Elasticsearch查询最近的Kafka数据,这样您可以获得跨主题的搜索结果,这是我见过的一个巧妙的技巧.然后你可以看到微服务5很慢,你需要花一些时间来调整它.
编辑:您也可以通过LinkedIn的Kafka的Burrow工具监控您的生产流程(看起来它仍然在2017年积极地获得爱情),将监控您的消费者是否落后以及其他事情.
我希望这有帮助.这是一个不幸的更广泛的问题,它表面上看来.最终它是%磁盘空间,%CPU和%你的SLA围绕数据管道的功能...这有时归结为独特的因素,例如你的消息大小,你是或想要运行什么类型的机器,你的微服务有多快.Kafka技术可以处理大量的流量:LinkedIn不是一个小网站,而且Kafka被互联网上一些流量最大的网站使用.理论上,一个构造良好的代理群集应该能够处理你抛出的任何东西.实际的部分是当你的工作流程,你的需求是什么,你实际在做什么,等等.
归档时间: |
|
查看次数: |
3582 次 |
最近记录: |