AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

每秒处理 480 万会员资料请求,LinkedIn 是如何实现的

作者:Rafal Gancarz

  • 2023-08-14
    北京
  • 本文字数:1182 字

    阅读完需:约 4 分钟

每秒处理480万会员资料请求,LinkedIn是如何实现的

LinkedIn将Couchbase作为集中式缓存层,用于伸缩会员资料读取操作,以应对日益增长的、超出现有数据库集群处理能力的流量。新方案实现了超过 99%的命中率,将尾延迟降低了 60%以上,将年度成本降低了 10%。


多年来,LinkedIn 直接从其Espresso文档平台提供会员资料。Espresso 平台建立在MySQL之上,并使用Avro进行序列化,还包含了Apache HelixDatabus(LinkedIn 的变更捕获系统)组件。Espresso 路由器处理资料读取请求,将读/写请求定向到正确的存储节点,并使用堆外缓存(OHC)进行热键缓存。



图片来源:https://engineering.linkedin.com/blog/2023/upscaling-profile-datastore-while-reducing-costs


随着存储请求量每年翻倍,峰值超过每秒 480 万次,为会员资料提供服务的 Espresso 集群已经达到了伸缩性的极限。团队决定引入一个基于Couchbase的缓存层,而不是重构 Espresso 平台的核心组件,因为超过 99%的请求都是读取操作。


LinkedIn 软件工程师Estella PhamGuanlin Lu解释了团队为什么选择 Couchbase 作为缓存:


在 LinkedIn,我们已经将 Couchbase 用作各种应用程序的分布式键值缓存。它被选中是因为它比 memcached 更强大,包括用于保存服务器重启之间持久化的数据,在集群中的个体节点发生故障时所有文档仍然可用的复制功能,以及可以在不停机的情况下添加或删除节点的动态可伸缩性。


新的缓存层结合了 OCH 和 Couchbase,并被集成到了 Espresso 中,不需要客户端做出修改。其设计重点是 Couchbase 的故障弹性、缓存数据可用性和数据分歧预防。Espresso 路由器会在发生暂时性故障时重试请求,并监控 Couchbase 健康状况以避免将请求发送到不健康的桶。会员资料数据被复制了三次,如果首领副本不可用,路由器会将其转移到其中的一个跟随者副本。


所有的会员资料数据都缓存在每一个数据中心里,由Apache Samza作业根据 Espresso 捕获的写操作进行实时的更新,以及根据数据库快照进行定期的更新。所有的缓存更新都使用了Couchbase Compare-And-Swap(CAS)来检测并发更新,并在必要时重试更新。



图片资料:https://engineering.linkedin.com/blog/2023/upscaling-profile-datastore-while-reducing-costs


经过调整之后,Profile Backend 服务将负责处理一些原先由 Espresso 处理的操作。它会动态评估请求字段并返回保存在缓存中的完整资料数据的子集。它还会处理 Avro 模式转换,并在必要时从注册表获取模式版本。


LinkedIn 的团队进行了进一步的性能优化,简化了 Avro/二进制格式的数据读取,并在反序列化性能方面实现了约 30%的改进。因为引入了新的混合缓存方案,Espresso 的节点数减少了 90%。考虑到运行 Couchebase 集群、缓存更新作业所需的新基础设施和运行后端服务新增的计算资源,为会员资料请求提供服务的总成本每年下降了 10%。


原文链接

https://www.infoq.com/news/2023/07/linkedin-member-profile-caching/


相关阅读:

领英采用 Protobuf 进行微服务集成,将延迟降低了 60%

2023-08-14 08:0012711

评论

发布
暂无评论
发现更多内容

【YashanDB知识库】共享超过32000字节字符串插入CLOB类型方案

YashanDB

数据库 yashandb

【YashanDB知识库】服务器重启后启动yasom和yasagent进程时有告警

YashanDB

数据库 yashandb

年度回顾 | 龙蜥这一年:进化·重构·赴未来

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥 OpenAnolis 2024 年度回顾

代码生成新突破:飞算JavaAI 如何让项目开发提速 40%?

飞算JavaAI开发助手

颠覆传统!飞算JavaAI:一键自动化开发流程,复制粘贴从此成为传说!

飞算JavaAI开发助手

华为云GaussDB助力国家统计局, 开启统计现代化改革新篇章

轶天下事

Java面试题及答案最全总结(2025版)

Geek_Yin

Java 面试 金三银四跳槽 Java 面试题 java 技术提升 #程序员

【YashanDB知识库】共享从 MySQL异常处理CONTINUE HANDLER的改写方法

YashanDB

数据库 yashandb

Zonos-v0.1:开源 TTS 模型,支持多语言和高保真声音克隆;「Apple 智能」或即将在国内上线,苹果举行开发者活动

声网

飞算JavaAI,让繁琐代码“蒸发”的神奇工具!

飞算JavaAI开发助手

飞算JavaAI:开发界的“特斯拉”,带你飞速前行!

飞算JavaAI开发助手

如何用好 AI 编码工具,让通义灵码帮你做更多工作

阿里巴巴云原生

阿里云 云原生 通义灵码

Nacos Python SDK 强势来袭,动态管理大模型 Prompt!

阿里巴巴云原生

阿里云 云原生 nacos

【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法

YashanDB

数据库 yashandb

TikTok运营中的IP问题解析

Ogcloud

TikTok tiktok运营 tiktok矩阵 TikTok矩阵运营

一文详解 RocketMQ 如何利用 Raft 进行高可用保障

阿里巴巴云原生

阿里云 RocketMQ 云原生

【YashanDB知识库】MySQL field 函数的改写方法

YashanDB

数据库 yashandb

华为云软件开发生产线(CodeArts)1月新功能特性

轶天下事

开源安全领航者!华为云CodeArts Governance构建更安全的软件开发生命周期

轶天下事

95年,28岁,聊聊外包四年的真实感受

Geek_Yin

Java 面试 金三银四 跳槽 java 技术提升 IT外包

【YashanDB知识库】数据库升级后用yasboot在线扩充备节点出现报错

YashanDB

数据库 yashandb

Acunetix v25.1 发布,新增功能概览

sysin

Acunetix

央视聚焦!天翼云全栈适配DeepSeek 引领国产智算新纪元

极客天地

飞算JavaAI 来袭!程序员:我可以退休了吗?

飞算JavaAI开发助手

低代码架构驱动企业数字化升级:管理系统平台建设的技术实践与效能评估

不在线第一只蜗牛

低代码 数字化

如何用好 AI 编码工具,让通义灵码帮你做更多工作

阿里云云效

阿里云 云原生

每秒处理480万会员资料请求,LinkedIn是如何实现的_业务架构_InfoQ精选文章