网易首页 > 网易号 > 正文 申请入驻

Kafka存储系统在Twitter的应用分析

0
分享至

当开发者通过API消费Twitter的公共数据时,他们需要获得可靠性、速度和稳定性方面的保证。因此,在不久前,我们推出了Account Activity Replay API帮助开发者们提升他们系统的稳定性。这个API是一个数据恢复工具,开发者可以用它来检索最早发生在5天前的事件,恢复由于各种原因(包括在实时传递时突然发生的服务器中断)没有被传递的事件。

除了构建API来提升开发者体验,我们还做了一些优化:

  • 提高Twitter内部工程师的生产力
  • 保持系统的可维护性。具体来说,就是尽量减少开发人员、站点可靠性工程师和其他与系统交互的人员的上下文切换

基于这些原因,在构建这个API所依赖的回放系统时,我们利用了Account Activity API现有的实时系统设计。这有助于我们重用现有的工作,并最小化上下文切换负担和培训工作。

实时系统采用了发布和订阅架构。为了保持架构的一致性,构建一个可以读取数据的存储层,我们想到了传统的流式技术——Kafka。

背景

两个数据中心产生实时事件,事件被写入到跨数据中心的主题上,实现数据冗余。

但并不是所有的事件都需要被传递,所以会有一个内部应用程序负责对事件进行筛选。这个应用程序消费来自这些主题的事件,根据保存在键值存储中的一组规则来检查每一个事件,并决定是否应该通过我们的公共API 将消息传递给特定的开发者。事件是通过Webhook传递的,每个Webhook URL都有一个开发人员负责维护,并有唯一的ID标识。


存储和分区

通常,在构建一个需要存储层的回放系统时,人们可能会使用基于Hadoop和HDFS的架构。但我们选择了Kafka,主要基于以下两个原因:

  • 已有的实时系统采用了发布和订阅架构
  • 回放系统存储的事件量不是PB级的,我们存储的数据不会超过几天。此外,执行Hadoop的MapReduce作业比在Kafka上消费数据成本更高、速度更慢,达不到开发者的期望

要利用实时管道来构建回放管道,首先要确保事件被存储在Kafka中。我们把Kafka主题叫做delivery_log,每个数据中心都有一个这样的主题。然后,这些主题被交叉复制,实现数据冗余,以便支持来自数据中心之外的重放请求。事件在被传递之前经过去重操作。

在这个Kafka主题上,我们使用默认的分区机制创建了多个分区,分区与WebhookId的散列值(事件记录的键)一一对应。

我们考虑过使用静态分区,但最终决定不使用它,因为如果其中一个开发人员生成的事件多于其他开发人员,那么这个分区包含的数据将多于其他分区,造成了分区的不均衡。

相反,我们选择固定数量的分区,然后使用默认分区策略来分布数据,这样就降低了分区不均衡的风险,并且不需要读取Kafka主题的所有分区。重放服务基于请求的WebhookId来确定要读取哪个分区,并为该分区启动一个新的Kafka消费者。主题的分区数量不会发生变化,因为这会影响键的散列和事件的分布。

我们使用了固态磁盘,根据每个时间段读取的事件数量来分配空间。我们选择这种磁盘而不是传统的硬盘驱动器,以此来获得更快的处理速度,并减少与查找和访问操作相关的开销。因为我们需要访问低频数据,无法获得页面缓存优化的好处,所以最好是使用固态磁盘。

为了最小化存储空间,我们使用了snappy压缩算法。我们知道大部分处理工作都在消费端,之所以选择snappy,是因为它在解压时比其他Kafka所支持的压缩算法 (如gzip和lz4) 更快。

请求和处理

在我们设计的这个系统中,通过API调用来发送重放请求。我们从请求消息体中获取WebhookId和要重放的事件的日期范围。这些请求被持久化到MySQL中,相当于进入了队列,直到它们被重放服务读取。请求中的日期范围用于确定要读取的分区的偏移量。消费者对象的offsetForTimes函数用于获取偏移量。

重放服务处理每个重放请求,它们通过MySQL相互协调,处理数据库中的下一个需要重放的记录。重放进程定期轮询MySQL,获取需要被处理的挂起作业。一个请求会在各种状态之间转换。等待被处理的请求处于开放状态(OPEN STATE),刚退出队列的请求处于启动状态(STARTED STATE),正在被处理的请求处于进行中状态(ONGOING STATE),已处理完成的请求将转换到已完成状态(COMPLETED STATE)。一个重放进程只会选择一个尚未启动的请求 (即处于打开状态的请求)。

每隔一段时间,当一个工作进程将一个请求退出队列后,它会在MySQL表中写入时间戳,表示正在处理当前的重放作业。如果重放进程在处理请求时死掉了,相应的作业将被重新启动。因此,除了将处于打开状态的请求退出队列之外,重放操作还将读取处于已开始或正在进行中的、在预定义的分钟数内没有心跳的作业。

在读取事件时会进行去重操作,然后事件被发布到消费者端的Webhook URL上。去重是通过维护被读取事件的散列值缓存来实现的。如果遇到具有相同散列值的事件,就不传递这个事件。

总的来说,我们的解决方案与传统的将Kafka作为实时、流式系统的用法不一样。我们成功地将Kafka作为存储系统,构建了一个API,在进行事件恢复时提升了用户体验和数据访问能力。我们利用已有的实时系统设计让系统的维护变得更加容易。此外,客户数据的恢复速度达到了我们的预期。

相关大数据开发技术知识:www.atguigu.com

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
跟队记者:刘鹏继续担任上海主帅 下赛季外援大概率四节六人次

跟队记者:刘鹏继续担任上海主帅 下赛季外援大概率四节六人次

橙汁的味道123
2024-04-29 22:24:50
布克说想夺冠,杜兰特说我明年表现更好,也许要换队离开比尔才行

布克说想夺冠,杜兰特说我明年表现更好,也许要换队离开比尔才行

好火子
2024-04-30 00:35:49
暂别国乒,国乒小张继科官宣决定,加盟法国,刘国梁看懂了

暂别国乒,国乒小张继科官宣决定,加盟法国,刘国梁看懂了

东球弟
2024-04-29 16:57:11
北约秘书长突访基辅:我会诚实告诉乌总统,北约没能兑现承诺

北约秘书长突访基辅:我会诚实告诉乌总统,北约没能兑现承诺

环球网资讯
2024-04-29 21:24:26
我34岁是三胎宝爸,妻子在外打拼我在家带娃,每月给我4000零花钱

我34岁是三胎宝爸,妻子在外打拼我在家带娃,每月给我4000零花钱

肖寒先僧
2024-04-28 22:55:08
赵本山黑脸巡视儿子公司!生意冷清亏损严重,砸钱数亿或血本无归

赵本山黑脸巡视儿子公司!生意冷清亏损严重,砸钱数亿或血本无归

清欢渡语
2024-04-28 22:38:17
为何以前五一放7天,现在却改成五天还得调休,原来都是他的建议

为何以前五一放7天,现在却改成五天还得调休,原来都是他的建议

动漫里的童话
2024-04-28 17:12:23
突然重伤!森林狼话事人髌腱撕裂!NBA第一支半决赛球队诞生……

突然重伤!森林狼话事人髌腱撕裂!NBA第一支半决赛球队诞生……

篮球实战宝典
2024-04-29 14:48:38
田馥甄取消大陆演出,好友Ella发声回应,称私下关心已约好聚会

田馥甄取消大陆演出,好友Ella发声回应,称私下关心已约好聚会

开开森森
2024-04-29 16:10:52
万达集团创始人王健林宣布退出公司并将全部股权转让给中国儒意

万达集团创始人王健林宣布退出公司并将全部股权转让给中国儒意

鹏飞深文
2024-04-22 12:19:28
后续!警察开警车喊话村民嫖娼,涉事民警已停职,网友评论区沦陷

后续!警察开警车喊话村民嫖娼,涉事民警已停职,网友评论区沦陷

芷夕说文
2024-04-28 23:40:34
成都楼市全军覆没,连累西安房价下跌,西安房价降至不足15000元

成都楼市全军覆没,连累西安房价下跌,西安房价降至不足15000元

有事问彭叔
2024-04-29 15:43:06
孙俪逛超市被偶遇;真人比电视上五官更精致,很难相信她都42岁了

孙俪逛超市被偶遇;真人比电视上五官更精致,很难相信她都42岁了

光影纪史
2024-04-29 16:48:39
88斤的蔡文静,瘦下来果然很漂亮,但是太瘦了也不健康吧…

88斤的蔡文静,瘦下来果然很漂亮,但是太瘦了也不健康吧…

娱乐的小灶
2024-04-30 00:58:51
67军军长李湘战场离奇死亡!彭德怀:坏了,莫非是?当即隐瞒死因

67军军长李湘战场离奇死亡!彭德怀:坏了,莫非是?当即隐瞒死因

丛丛岁月
2024-01-19 22:27:47
大批“爱国者”导弹正在到来!英国防部称已击落100多架俄军战机

大批“爱国者”导弹正在到来!英国防部称已击落100多架俄军战机

鹰眼Defence
2024-04-27 17:42:20
曼联6-3南安普顿,结束四轮不胜,惠特利梅开二度,经历神奇的4月

曼联6-3南安普顿,结束四轮不胜,惠特利梅开二度,经历神奇的4月

刺头体育
2024-04-30 01:38:17
不腐女尸引出水底千年尸库,749局调查发现传说中滇国遗迹

不腐女尸引出水底千年尸库,749局调查发现传说中滇国遗迹

真实故事汇
2023-10-02 15:25:15
真相!上海病毒实验室被强关,顶级专家睡门口抗议,更多内幕曝出

真相!上海病毒实验室被强关,顶级专家睡门口抗议,更多内幕曝出

毒舌说历史1
2024-04-29 19:17:13
运城高速回应问界M7追尾事故:养护车在移动作业,设有警示装置!司机曾下车施救

运城高速回应问界M7追尾事故:养护车在移动作业,设有警示装置!司机曾下车施救

和讯网
2024-04-29 15:38:11
2024-04-30 06:12:49
IT爱好者小尚
IT爱好者小尚
分享IT教育类信息
630文章数 55关注度
往期回顾 全部

科技要闻

马斯克收获大礼,李彦宏梅开二度?

头条要闻

周鸿祎近10天里热搜不断 背后是360市值蒸发4000多亿

头条要闻

周鸿祎近10天里热搜不断 背后是360市值蒸发4000多亿

体育要闻

足球童话!执教16年,从业余联赛到德甲

娱乐要闻

田馥甄遭抵制,蔡依林却能稳稳捞金?

财经要闻

建信人寿巨亏40亿 部分产品退保率93%

汽车要闻

配置更丰富 静态体验2024款欧拉好猫

态度原创

数码
健康
亲子
本地
公开课

数码要闻

Counterpoint:预计 2024 年华为鸿蒙手表国内市场份额达 61%

春天野菜不知不识莫乱吃

亲子要闻

当三小只走进莫奈的画里

本地新闻

食味印象 | 潍坊:碳水脑袋的人间乐园

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版