主题与其丰富的配置相结合,可用于隔离单个 kafka 集群中的不同工作负载。有哪些经验法则可以用来确定是否将单个 kafka 集群分解为多个?
多数据中心部署在许多场景下本质上需要多个kafka集群。还有哪些常见的场景和注意事项?
以下是我遇到的一些场景,其中多个集群被证明是有用的:
>
需要以不同速度升级Kafka的团队-一些团队非常保守,基本上宁愿永远不碰Kafka。其他团队需要升级,因为他们需要新功能(0.10.0中的Kafka Streams,0.10.1.0中的基于时间的索引)或bug修复。积极的升级者和保守派应该得到单独的集群。
某些配置是集群范围的,如果两个用例要求不同的配置,则您没有太多选择。
不同的性能要求有时意味着不同的硬件,让Kafka在一组服务器上保留一些主题,而在另一组服务器中保留其他主题是一种PITA。不同的集群更有意义。
类似的:一些用例是实验性的,会在Kafka上产生不可预测的负载,其他的则需要非常稳定和可预测的性能。为了每个人的理智,把他们分开。
类似:Kafka只有非常基本的QoS保证,所以一个超级活跃的话题(比如说点击流)可能会导致其他人(比如说支付处理)变慢。
不同的SLA:如果一个用例需要你经常在半夜跳起来,而其他的不需要,也许给它自己的集群来减少跳起来的频率。
不同的安全要求:Kafka 可以有选择地保护主题,但我注意到,如果您将敏感数据放在一个集群上,将不敏感数据放在另一个集群上,每个人都会睡得更好。这也与性能有关 - SSL 加密占用大量 CPU,因此,如果可以将其限制为一个集群,则可以节省硬件/ec2 成本。
希望这能有所帮助:)我很确定我甚至没有覆盖一半…