Wargaming的Kafka:Blitz

为什么选择卡夫卡? 您的总体印象如何? 集群的组成是什么? 在裁员过程中,Wargaming负责可靠性,应用程序体系结构,基础结构和生产的Levon Avakyan面临十几个简短问题。



-您如何选择Kafka? 以前用过什么? 考虑了哪些替代方案?

关于坦克发展,这不是一个非常正确的问题。 公司已经使用Apache Kafka来满足我们数据仓库的需求,最初存在集成任务,然后才看到Kafka可以用于不同的任务。

-您的游戏集群产生了多少事件?

坦克集群是集群的集群,系统是分布式的,并在不同的Kafka中生成事件。 所有群集平均产生12,000条消息,峰值时每秒大约3万条消息。

-您有几个集群,它们的组成是什么?

最大的中央集群由五个铁节点组成。 仅服务于坦克外围设备的较小集群大约每个都有三个节点以及虚拟机。 我们在独联体地区有四个本地集群。

-您有多少生产者和消费者? 读/写速率是多少?

好问题。 对于本地外围设备Kafka,生产者是一个-坦克集群,并且有数十个消费者。 按速率:每秒在中央群集上写入多达75,000条消息,平均为1.2万条,在本地群集上则为每秒七千条,平均为三千条。

-您在卡夫卡写了多少大事件? 有送货时间限制吗?

限制1 MB-没人问。 有些消费者对交货时间有限制,有些则没有。 有些人每周阅读一次。

-分片或复制时是否遇到任何有趣的功能和错误?

由于主题设置,连任期间面临数据丢失。 允许进行肮脏的连任,并选择了错误的ISR。

-碰巧碰到磁盘或网络了吗?

他们没有停留在网络上,我们有10 Gb网络接口。 它们也没有靠在磁盘上。 放在完成的文件描述符上。 从java-1.7.0-openjdk-1.7.0.55-2.4.7.1.el6_5.x86_64升级到jdk1.8.0_66-1.8.0_66-fcs.x86_64后获得了稳定性。

-JVM与Kafka一起带来了哪些开销? 是否需要gc特殊设置? 根据您的情况,一个实例消耗多少内存?

分配了12 GB的内存,其他都是标准的。

-您必须使用Kafka的任何特殊功能吗? 日志压缩?
对某些主题使用了日志压缩,但对《战车世界》项目则未使用。 包含在特定主题上,但结果不清楚,没有人提供反馈。 Offsets.retention.minutes也增加到了7天,因此每周阅读一次的礼宾继续从他们离开的地方开始阅读。

-Kafka使用了哪些Python库? 你喜欢什么

关于Moscow Python Conf ++的报告中只有一篇是关于在WoT中为Kafka使用各种Python库的经验。 我们的资产是Kafka-python,confluent-kafka-python,aiokafka。 这些库中的每一个都有其优缺点。

-与基于内存的存储相比,您如何看待基于文件的存储的优缺点? 您可以推荐哪种类型的任务?

这里的原理很简单。 在文件系统上,它更可靠,但速度较慢。 内存速度更快,但是可靠性更低。 另外,在容量上有一个重要限制:您可以在文件系统中存储TB,但我们仍在内存中使用GB。 从这里开始,您可以从一个特定的实现开始幻想很多。

基于以上内容:如果需要快速处理,则体积较小且安全性不重要,请在内存中使用,否则我们将基于文件。

-卡夫卡的总体印象? 如果您现在要执行相同的任务,您会离开Kafka还是转向其他解决方案?

Kafka是一个很好的简单工具,可用于从外部访问大量数据,然后由不同地方的不同团队根据不同的目的对其进行缓慢处理。 在WoT中,我们有许多不同的工具来解决问题,因此,在适合选择Kafka的地方,我们选择Kafka,在不适合的地方,我们看其他工具。

同样,如果您对我们在Kafka方面的经验的细节感兴趣,请在莫斯科Python Conf ++上发表我的演讲。 我希望许多人觉得它有趣和有用。

Source: https://habr.com/ru/post/zh-CN425703/


All Articles