NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

每秒处理 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:0012425

评论

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

面了三十个人,说说真实感受

三分恶

面试 面试官 8月月更

Python 教程之输入输出(4)—— 用于竞争性编程的 Python 输入法

海拥(haiyong.site)

Python 8月月更

6000字深度总结!极狐GitLab 首次揭秘内部 DevOps 最佳实践

极狐GitLab

git DevOps gitlab 安全 CI/CD

博云入选Gartner中国云原生领域代表性厂商

BoCloud博云

云计算 容器 云原生 Gartner

重新审视分布式系统:永远不会有完美的一致性方案……

JAVA活菩萨

Java 程序员 java程序员 java 编程

力拓信创生态,博睿数据多款产品获得东方通与达梦数据库产品兼容互认证明

博睿数据

可观测性 智能运维 博睿数据 东方通 达梦数据

Typora收费?搭建VS Code MarkDown写作环境

三分恶

工具 markdown 8月月更

不需要服务器,教你仅用30行代码搞定实时健康码识别

华为云开发者联盟

云计算 疫情 文字识别 健康码

华为应用市场“图章链接”功能上线 让APP分发突破机型壁垒

Geek_2d6073

深入聊聊Linux五种IO模型

C++后台开发

epoll 网络模型 I/O模型 C/C++后台开发 C/C++开发

现代 ABAP 编程语言中的正则表达式

Jerry Wang

正则表达式 编程语言 SAP abap 8月月更

阿里大牛最新分享springboot实战派文档,开发之路必不可少

Java工程师

Java spring springboot

【Android逆向】rpc调用某安App的X-App-Token签名函数

小陈

逆向技术

精品!阿里P7爆款《K8s+Jenkins》技术笔记,高质量干货必收藏!

冉然学Java

jenkins java; 技术笔记 编程‘’ #k8s

Spring之JDK动态代理与CGLIB动态代理

echoes

面渣逆袭:MySQL六十六问,两万字+五十图详解

三分恶

MySQL 8月月更

阿里出品Spring Security王者晋级笔记,并附上源码解析

冉然学Java

编程 spring security java; Spring Boot CLI 源码、

从云计算到函数计算

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

NFT盲盒挖矿系统dapp开发NFT链游搭建

薇電13242772558

dapp NFT

开源一夏 | 文件和目录操作|多进程和多线程【python进阶篇】

恒山其若陋兮

开源 8月月更

5种kafka消费端性能优化方法

华为云开发者联盟

大数据 kafka 后端 MRS

小程序+自定义插件的混合模式

Geek_99967b

小程序

攻防视角下,初创企业安全实战经验分享

声网

网络安全

学python,怎么能不学习scrapy呢!

华为云开发者联盟

Python 爬虫 开发 代码

【iOS逆向】某车之家sign签名分析

小陈

iOS逆向

RabbitMQ(五)死信队列

JAVA活菩萨

Java 程序员 后端 java程序员 java编程

移动平台助力推进智慧型科研院所信息化建设

WorkPlus

容器化 | 在 NFS 备份恢复 RadonDB MySQL 集群数据

RadonDB

MySQL 数据库 容器化 Kubernetes 集群 备份 & 恢复

2022版史上最全Java八股文,没有任何异议

Java工程师

Java 面试 八股文

iOS逆向之某茅台App抓包

小陈

iOS逆向 i茅台

iOS逆向之某多多App抓包

小陈

拼多多 iOS逆向

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