硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

评论

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

打造自主可控云网算力,天翼云为湖南数字经济发展注入新动能

天翼云开发者社区

人工智能 LLM 革命前夜:一文读懂ChatGPT缘起的自然语言处理模型Transformer

阿里技术

人工智能 自然语言处理

C#/VB.NET 如何在不同工作簿之间复制单元格范围

在下毛毛雨

C# .net Excel 文档操作

如何在Excel中查找并高亮数据

Geek_249eec

C# .net Excel VB.NET

Apipost正式发布《API行业白皮书》!

不想敲代码

API 白皮书 行业趋势 行业报告

分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟

MQTT发布/订阅模式介绍

EMQ映云科技

物联网 IoT mqtt 客户端 企业号 2 月 PK 榜

安全可信| 首批!天翼云智算平台率先通过可信算力服务评估

天翼云开发者社区

全网招募P图高手!阿里巴巴持续训练鉴假AI

阿里技术

人工智能

业务“兔”飞猛进,只因他们做对了这件事

华为云开发者联盟

数据库 华为云 企业号 2 月 PK 榜 华为云开发者联盟

从MVC到DDD转变过程中的一点碎碎念

为自己带盐

DDD CQRS

快速开发光伏电站数字孪生运维系统——实践类

阿里云AIoT

阿里云 物联网 IoT

接口测试的测试要点

Liam

测试 接口测试 接口测试软件

git使用ssh

刘旭东

git SSH

eKuiper 1.8.0发布:零代码实现图像/视频流的实时AI推理

EMQ映云科技

物联网 IoT 视频流 流式计算 企业号 2 月 PK 榜

IoT Studio场景最佳实践——实践类

阿里云AIoT

阿里云 物联网 IoT

深度访谈 Eolink 高管|研发团队如何更好地进行 API 管理?

万事ONES

项目管理 软件研发 API管理

OpenYurt v1.2 亮点速览丨云边流量峰值相比原生 K8s 降低 90%

阿里巴巴云原生

阿里云 开源 容器 云原生 openyurt

LED显示屏怎么翻新?

Dylan

LED LED显示屏 led显示屏厂家

Teradata的离开,是国内ToB服务转变的信号

ToB行业头条

天翼云联合国际咨询机构IDC发布《中国医疗云建设与应用白皮书》

天翼云开发者社区

serverless与容器优缺点

天翼云开发者社区

serverles

关于DataLeap中的Notebook,你想知道的都在这

字节跳动数据平台

数据库 大数据 数据治理 数据研发 企业号 2 月 PK 榜

如何从0开始搭建 Vue 组件库

京东科技开发者

npm UI vant Vue3 组件库

接口调试时如何实现接口之间的数据传递?

不想敲代码

了解医疗上云门道,尽在“共铸国云 红云行业思想汇”!

天翼云开发者社区

创建MQTT连接时如何设置参数?

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 连接参数

火山引擎数智平台的这款产品,正在帮助APP提升用户活跃度

字节跳动数据平台

大数据 客户数据平台 客户 客户数据 企业号 2 月 PK 榜

PostgreSQL:内存结构

天翼云开发者社区

聚焦现代化应用安全,F5的安全扩增,稳了!

F5 Inc

架构 安全 API 应用

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