写点什么

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

评论

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

实现Promise的原型方法--前端面试能力提升

helloworld1024fd

JavaScript

GaiaX开源解读 | 给Stretch(Rust编写的Flexbox布局引擎)新增特性,我掉了好多头发

阿里巴巴文娱技术

开源 rust 后端 rust语言 GaiaX

公交车LED电子路牌宣传效果更好吗

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

手把手教你成为荣耀开发者:应用管理指南

荣耀开发者服务平台

前端 快应用 荣耀 honor 应用集成

从TiDB搭建到监控闭环

TiDB 社区干货传送门

监控 管理与运维

百度前端一面必会vue面试题合集

bb_xiaxia1998

Vue

深度剖析 | 【JVM深层系列】[HotSpotVM研究系列] JVM调优的"标准参数"的各种陷阱和坑点分析(攻克盲点及混淆点)「 1 」

码界西柚

JVM 12 月 PK 榜 调优参数 调优技术

中移链合约常用开发介绍 (一)开发基本流程

BSN研习社

中移链

星环数据云平台 TDC 3.1 发布,新增滚动重启、存储回收站等八大核心功能

星环科技

民航二所马勇:数据安全防护体系的探索与思考

极盾科技

数据安全

五大亮点来袭!神州云科冬季发布会报名通道开启,千份精美礼品等你来拿!

通明湖

搜电充电:创新“服务卡片”,让即时充电更便捷

HarmonyOS开发者

HarmonyOS

能不能手写Vue响应式?前端面试进阶

bb_xiaxia1998

Vue

RocketMQ Connect 构建流式数据处理平台

Apache RocketMQ

RocketMQ Connect

XTransfer技术专家亮相Flink Forward Asia 2022

XTransfer技术

社招前端常考手写面试题总结

helloworld1024fd

JavaScript

几个常见的js手写题,你能写出来几道

helloworld1024fd

JavaScript

破记录!国产数据库KunDB 单节点TPC-C事务性能超180万tpmC

星环科技

全球首家!星环科技通过3TB TPCx-AI测试,实现大数据与AI的完美融合

星环科技

别再秃头背锅了!这个小技巧统计第三方接口耗时很安逸

Java永远的神

Java 程序员 后端 架构师 springboot

每日一题之请描述Vue组件渲染流程

bb_xiaxia1998

Vue

必会vue面试题总结

bb_xiaxia1998

Vue

将渲染计算搬到云端,开启低成本、强交互、沉浸式体验

阿里云CloudImagine

云计算 阿里云 云渲染 串流

重写Nacos服务发现:多个服务器如何跨命名空间,访问公共服务?

LigaAI

Java 测试 nacos 测试环境 12 月 PK 榜

聊聊电商系统架构, 常见的9个大坑

Java全栈架构师

程序员 后端 架构师 电商 系统秒杀

腾讯前端常考react面试题(持续更新中)

beifeng1996

React

前端二面高频手写面试题

helloworld1024fd

JavaScript

【敏捷转型,效能提升】敏捷转型实践系列分享

京东科技开发者

敏捷 敏捷团队 效能度量 效能提升 #DevOps

性能最大提升60%,阿里云发布基于第四代英特尔至强的第八代ECS实例

云布道师

阿里云

【12.9-12.16】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动

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