BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用Kafka处理高并发数据流

| 作者 孙镜涛 关注 2 他的粉丝 发布于 2014年11月26日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

如果我们需要持续地处理大约20万条/秒的消息量,同时还需要保证数据的可用性和冗余,我们应该怎么做呢?最近Tadas Vilkeliskis在自己的博客上发表了一篇题为《数据流基础设施》的文章,分享了他们是如何应对这种场景的。

Tadas Vilkeliskis在文章中提到,他们每秒钟大约会收到来自于世界各地的20万次HTTP请求,这些请求包含了用户的行为信息,平均每一条消息的大小约为0.8KB,每秒钟的总数量在150MB左右。为了应对如此高的流量,Tadas Vilkeliskis说他们的方案是Kafka:将这些HTTP请求当成一个事件流,先把接收到的所有请求都推动到Kafka消息队列中,然后再依次进行处理。其中,事件流中的所有请求都可以包含一些会随时间变化的信息,而Kafka消息队列的作用则是保证请求的顺序以及数据的持久化和复制。

之所以会选择Kafka,Tadas Vilkeliskis认为:

“RabbitMQ和ZeroMQ这样的消息系统要么没有如此高的写能力,要么需要牺牲持久性以便获得更好的写性能。数据库也有类似的限制,它们通常都针对特定场景做了优化,但是这样在其他的场景下就难有良好的表现。”

Tadas Vilkeliskis的话可能比较模糊,对于Kafka与其他的消息队列系统之间的比较,InfoQ之前也曾发布过一篇文章《Apache Kafka:下一代分布式消息系统》,其中就从生产和消费两个方面对Kafka、Apache ActiveMQ V5.4和RabbitMQ V2.4的性能做了比较,结果是Kafka遥遥领先,或许这才是支撑Tadas Vilkeliskis使用Kafka的原因。

另外,Tadas Vilkeliskis还在这篇文章中分享了Kafka的数据分发机制,磁盘存储空间的分配、消息格式的处理、服务器选择以及数据压缩等方面的内容,感兴趣的读者可以阅读英文原文

对于Tadas Vilkeliskis分享的方案,也有部分用户提出了自己的想法,Ryan回复说:

“这些都是不错的性能数据。在VoltDB,我们发现有很多人在应对这种速度时会把数据从Kafka转移到VoltDB上。VoltDB能够处理这种速率的流量,同时能够使用内置的输出特性将其推动到下游系统。它可以在Kafka和最终的仓库磁盘之间增加实时的数据抽取、转换、加载、过滤、决策和分析的阶段。”

Tristan Turêves 回复说:

“这是为了处理实时竞价(RTB)么?我也做了相似的事情,但是使用了完全不同的技术。我们的架构是基于NodeJS的,这种情况下我们清楚地知道请求来源于哪个地理位置。我们租用了高性能的专用服务器(最少8核,有充足的RAM),有一个本地node集群监听“内核数量”的端口。然后在这之上有一个HAProxy负责同一台机器端口间的负载均衡。在保持平均响应时间为1秒的情况下,我们的每一台主机每秒钟大约能够处理14万次请求。这是一个非常酷的项目,所有的事情都优化到了极致,同是我们还使用ElasticSearchKibana实现了实时的分析和图形化。”


感谢崔康对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

? by 俊衡 龚

这篇文章真的有意义么

Re: ? by spimes spimes

哈哈

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT