Apache Kafka 基准测试:每秒 200 万次写入(在三台廉价机器上)

原文地址

翻译:sealos 是以kubernetes为内核的云操作系统发行版,3min 一键高可用安装自定义kubernetes,500M,100年证书,版本不要太全,生产环境稳如老狗。

我写了一篇关于 LinkedIn 如何使用Apache Kafka作为中央发布-订阅日志的博客文章,用于在应用程序、流处理和 Hadoop 数据摄取之间集成数据。

file

但是,要真正完成这项工作,这个“通用日志”必须是一种廉价的抽象。如果您想将系统用作中央数据中心,它必须快速、可预测且易于扩展,以便您可以将所有数据转储到该系统上。我的经验是,脆弱或昂贵的系统不可避免地会形成一道保护过程墙,以防止人们使用它们;易于扩展的系统通常最终成为关键的架构构建块,因为使用它是构建事物的最简单方法。

我一直很喜欢 Cassandra 的基准测试,它显示它在EC2和Google Compute Engine上的三百台机器上每秒执行一百万次写入。我不知道为什么,也许这是邪恶博士的事情,但每秒做一百万件事情很有趣。

无论如何,Kafka 日志的优点之一是,正如我们将看到的,它很便宜。每秒一百万次写入并不是什么特别大的事情。这是因为日志比数据库或键值存储要简单得多。事实上,我们的生产集群全天每秒进行数千万次读取和写入,而且它们是在相当普通的硬件上完成的。

但是让我们做一些基准测试并看看。

卡夫卡30秒

为了帮助理解基准,让我快速回顾一下 Kafka 是什么以及它如何工作的一些细节。Kafka 是一个分布式消息系统,最初是在 LinkedIn 构建的,现在是Apache 软件基金会的一部分,并被各种公司使用。

一般设置非常简单。生产者将记录发送到保存这些记录并将它们分发给消费者的集群:

file

Kafka 的关键抽象是主题。生产者将他们的记录发布到一个主题,消费者订阅一个或多个主题。Kafka 主题只是一个分片的预写日志。生产者将记录附加到这些日志中,消费者订阅更改。每条记录都是一个键/值对。密钥用于将记录分配给日志分区(除非发布者直接指定分区)。

这是一个简单的例子,一个生产者和消费者从两个分区的主题中读写。

file

这张图片显示了一个附加到两个分区的日志的生产者进程,以及一个从相同日志中读取的消费者。日志中的每条记录都有一个关联的条目号,我们称之为偏移量。消费者使用这个偏移量来描述它在每个日志中的位置。

这些分区分布在一组机器上,允许一个主题保存比任何一台机器都多的数据。

请注意,与大多数消息传递系统不同,日志始终是持久的。收到消息后会立即将其写入文件系统。消息在阅读时不会被删除,但会保留一些可配置的 SLA(比如几天或一周)。这允许在数据使用者可能需要重新加载数据的情况下使用。它还可以支持节省空间的发布-订阅,因为无论有多少

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值