LinkedIn Engineering - Architecture

11 篇内容

工程实践LinkedIn Engineering - Architecture

Rebuilding messaging: How we designed our new system

文章复盘LinkedIn消息系统从邮件式单体架构到全新架构的设计阶段。旧系统最初使用单一Oracle数据库和分片复制,消息量五年增长四倍后,产品向聊天体验演进但代码复杂度剧增,导致开发效率下降。作者提出产品与工程需求,特别强调迁移自定义业务逻辑需要近60个转换器,并决定将数据持久化拆分到多个服务以独立扩展,同时接受分布式事务代价。团队通过高层架构文档、设定设计原则和赋权技术负责人并行推进,制定正确性优先、构建正确、再求快等原则。文章还总结了迁移策略、异步处理、团队结构和项目组织方面的经验教训,但未深入具体实现细节。

推荐收录:这是LinkedIn真实消息系统重构的工程案例,包含从单体到分片再到新架构的演进、明确需求和设计原则,以及迁移与团队组织的教训。适合架构师、后端工程师和技术负责人参考大型系统重新设计、跨团队协作和数据迁移的可迁移方法。

工程实践LinkedIn Engineering - Architecture

Rebuilding messaging: How we bootstrapped our platform

文章复盘 LinkedIn 重建消息平台时的存量数据迁移过程。旧系统单体且数据非规范化,共享内容与个人元数据冗余存储;新系统改为规范化微服务,将共享消息与个人元数据分离。迁移采用三阶段方案:先双写实时复制新写入,再通过确定性 UUID v5 生成新旧 ID 映射,最后对 17 年快照做 Hadoop ETL、变换和批量上传。文章重点介绍了阴影验证机制、基于 If-Unmodified-Since 避免覆盖在线更新,以及表索引数量影响上传吞吐等经验。整体展示了大规模在线数据迁移中可迁移的架构权衡与实施细节。

推荐收录:文章提供了 LinkedIn 超大规模消息系统数据迁移的完整工程案例,包含三阶段方案、双写一致性、离线变换与阴影验证等具体实践。对负责数据库迁移、分布式一致性和后端架构的读者具有直接参考价值,尤其展示了复杂在线系统零停机迁移的可操作方法。

工程实践LinkedIn Engineering - Architecture

How LinkedIn Is Using Embeddings to Up Its Match Game for Job ...

文章来自 LinkedIn Engineering,系统介绍了利用嵌入检索(EBR)技术提升求职匹配的工程实践。作者首先解释了嵌入和 EBR 的基本概念,及其在搜索和推荐系统中的早期检索阶段作用。随后详细描述了 LinkedIn 为此构建的基础设施组件:支持复合多任务学习的模型训练框架、名为 Feature Cloud 的离线和流式嵌入生成平台、增强的托管搜索系统(包含自动嵌入版本管理和 IVFPQ 等近似最近邻算法),以及基于 Ray Serve 的 Model Cloud 推理图编排。在 Job Search 应用中,团队采用两塔模型和 softmax 损失训练请求与职位嵌入,并通过 Zelda 框架进行 IVFPQ 索引和在线近似搜索。上线后观测到申请数、点击率和成功会话等参与度指标显著提升,同时简化了原有文本检索并降低了 p95 延迟。文章重点在工程架构和实际落地经验,边界是未深入模型理论细节,更多展示系统设计和版本管理方案。

推荐收录,因为这是一篇来自一线大厂的完整工程案例,详细展示了在规模化搜索场景中引入 EBR 的架构设计、模型训练、版本管理和在线服务方案,并给出了明确的业务收益。对搜索引擎、推荐系统、机器学习平台和基础设施团队具有直接参考价值,尤其是嵌入版本一致性管理、流式嵌入生成和复合模型推理编排等实践可以迁移到类似系统中。

工程实践LinkedIn Engineering - Architecture

From Lambda to Lambda-less: Lessons learned

文章记录了 LinkedIn 的 “谁看过你的个人资料” 功能从 Lambda 架构迁移到 Lambda-less 架构的工程实践。原架构以近线 Kafka 处理为速度层、Hadoop MapReduce 为批处理层、Pinot 为服务层,但双管道导致业务逻辑重复、维护成本高和 bug 风险增加。迁移后,团队采用 Samza 作业统一处理 ProfileViewEvent 和 NavigationEvent,移除与流处理重叠的离线逻辑,仅保留一个离线作业将实时数据复制到离线表以优化查询性能和数据保留。文章重点讨论了流式处理中的消息可重处理性与去重策略,包括分场景修复错误、Kafka offset 回退,以及在服务层和通知层去重。最终,该迁移使开发速度翻倍、维护开销减半,并改善了用户体验,为面临类似架构冗余的团队提供了可参考的经验。

推荐收录,因为这是一篇真实的架构演进案例,详细展示了 Lambda 架构的实际痛点、简化决策过程以及流式处理中非幂等问题的应对方法。文中对 Samza、Pinot 的选型理由和去重策略有具体描述,对从事数据管道设计、流/批处理和分布式系统演进的后端工程师极具参考价值。需要注意的是,方案的选择与业务实时性要求紧密相关,直接照搬需评估自身场景。

工程实践LinkedIn Engineering - Architecture

How we reduced latency and cost-to-serve by merging two systems

本文介绍 LinkedIn 将身份服务中的 midtier 和 data service 两层合并为一个服务的实践。原架构中 data service 仅提供数据验证和 Espresso 存储访问,业务逻辑薄弱但维护成本高,且增加网络跳数。团队在保持对外 API 不变的前提下,先将 data service 的 REST API 作为本地库嵌入 midtier,随后通过 T-REX 框架逐步灰度、下线旧服务并清理技术债。性能测试使用 Dark Canary 复制生产流量对比,结果显示 p50、p90、p99 延迟分别降低 14%、6.9%、9.6%,内存分配率下降 28.6%。最终下线整个 data service 集群,节省超过 12000 核和 13000GB 内存。文章强调这是针对特定场景的权衡,并非所有微服务都应合并。

推荐收录,因为文章提供了完整的工程案例:从问题动机、架构决策、灰度实施到性能验证,数据详实。直接证据包括 p50/p90/p99 延迟改善、内存分配下降和资源节省。适合关注微服务粒度、性能优化和成本控制的架构师与后端工程师。可迁移价值在于展示了当数据服务逻辑薄弱时合并服务的考量方法,以及利用灰度发布和流量镜像降低高风险变更的实践。

工程实践LinkedIn Engineering - Architecture

Costwiz: Saving cost for LinkedIn enterprise on Azure

LinkedIn 工程团队开发 Costwiz 以控制 Azure 云成本。系统摄取 Azure Advisor 的优化建议,通过状态机管理工单生命周期,并利用可插拔框架和工作流实现自动化。数据平台基于 ETL 架构,采用 Azure Data Factory、Databricks 和多种存储,支持资源所有权识别与清理沙箱资源。关键设计包括逐级升级机制、所有权识别模块和基于 TTL 的沙箱清理。实践表明,约 36% 的建议资源被回收,沙箱订阅成本占比从 45% 降至 5%。文章还指出,真正的挑战在于推动工程师采取行动而非仅生成建议,并总结了权限识别和数据水印等方案取舍。

推荐收录。文章详细还原了 LinkedIn 在 Azure 上构建 Costwiz 的全过程,包括工作流状态机、可插拔框架、数据平台、资源所有权识别和升级机制,并给出了成本节省的具体数据(沙箱成本从 45% 降至 5%)。其适用于云基础设施团队、SRE 和成本管理人员,其中关于责任落实、自动化清理和渐进式升级的设计具有跨云平台的可迁移价值。

工程实践LinkedIn Engineering - Architecture

Rebuilding messaging: How we built for extensibility

文章是 LinkedIn 工程师对重建消息平台时如何设计可扩展性的复盘。作者首先明确了要解决的问题:保护收件箱质量、成员隐私以及将业务逻辑从平台剥离。文章核心方法是引入插件框架,在消息和会话的生命周期中定义 pre/post 回调(如 conversationPreCreate、messagePreCreate),插件通过注册这些回调并附加自身元数据来实现定制逻辑,平台只负责存储和投递,不解析插件元数据。文中还介绍了插件失败隔离、延迟要求、安全审查和分阶段发布等稳定性措施。作者通过一个邀请功能的例子展示了插件如何快速迭代,并分享了元数据契约设计的一次教训:从允许删除改为只允许增改,以简化插件开发并降低平台风险。文章结论强调可扩展性设计需要前期分析用例、明确原则,并建议用简单和复杂两个试点来验证系统。

推荐收录,因为文章提供了一套可复用的平台扩展性设计方法:插件框架、生命周期回调、元数据隔离和失败隔离,并包含真实的契约设计教训。适合从事平台工程、消息系统或微服务架构设计的工程师参考,文中的原则和权衡可直接迁移到类似需要第三方扩展的系统设计中。

工程实践LinkedIn Engineering - Architecture

Unifying Messaging Experiences across LinkedIn

本文介绍LinkedIn如何通过内部Messenger SDK统一旗舰、Recruiter、Sales Navigator等多个应用的消息体验。文章回顾了后端消息平台的建立,指出前端开发因缺少共享UI和数据层而困难。作者详细说明了SDK架构:API库(messenger-api)提供GraphQL抽象、错误检查和回调接口定制;客户端库(messenger-data)采用事件驱动数据层,包含Store、Mailbox API、Reactive Adapter、Realtime Manager和API连接层,实现本地数据同步和响应式更新。文中以InCareers为例,展示SDK节省40+开发周、代码量降至1/8的收益。最后总结迁移成果并规划可复用UI组件。文章主要呈现LinkedIn内部平台化实践,未深入底层实现或失败教训,但提供了可借鉴的架构思路。

推荐收录,因为文章不是泛泛介绍,而是给出了完整的SDK架构设计、数据同步机制、回调扩展点以及真实项目收益数据。适合架构师、跨平台开发者和平台工程团队参考,其‘薄层应用+平台库’的模式可迁移到多应用共享核心能力的场景,对大型组织统一前端能力和提升开发效率有长期借鉴价值。

工程实践LinkedIn Engineering - Architecture

Navigating the transition: adopting Azure Linux as LinkedIn’s ...

本文复盘了 LinkedIn 将服务器、虚拟机和容器从 CentOS 7 迁移到 Azure Linux 的完整历程,包括动机、规划、实施、挑战和效果。迁移核心动因是 CentOS 7 生命周期结束和业务对现代安全、性能及 AI 功能的需求,同时考虑了成本、合规和供应商支持。实施过程涵盖基础设施准备、容器镜像构建、开发者 VM 改造、配置管理适配和自动化迁移,重点解决了 XFS 文件系统调优、硬件驱动签名和开发者远程环境等难题。迁移后引导时间从1小时缩短至10-30分钟,安全性、部署速度和系统可靠性显著提升,文章还讨论了监控体系升级和反馈闭环。该案例适用于大型企业基础设施现代化场景,文中经验和方法具有可迁移性。

本文提供了大型互联网公司操作系统迁移的第一手工程实践,详细描述了从需求评估、试点到全量迁移的完整路径,包含具体技术挑战和解决方案(如容器镜像兼容、驱动签名、开发者环境),对于负责基础设施升级、云计算平台迁移或 DevOps 实践的工程师极具参考价值。适合企业架构师、SRE、系统管理员和云平台团队借鉴其迁移策略和自动化方法。

工程实践LinkedIn Engineering - Architecture

Journey of next generation control plane for data systems

文章介绍LinkedIn数据基础设施控制平面Nuage的演进,从1.0单体自服务、2.0去中心化SDK到3.0以Nuage Resource Manager为中心的架构。3.0将横向控制平面能力与资源提供方业务逻辑解耦,通过API与数据模型契约、RBAC、搜索缓存、审计、异步工作流等实现统一治理。文中详述客户端交互、请求路由、数据治理与MCE联动、监控告警以及横向服务。并给出性能提升(如Espresso读P90从10秒降至3秒以下)、安全改善和MySQL接入成本降低70%等量化结果。适用边界是LinkedIn内部多平台环境,偏重架构与运营模式,未涉及具体代码实现。

推荐收录,因为文章不是概念介绍,而是完整呈现从单体到去中心化再到集中式资源管理器的工程演进,包含明确的架构约束、安全与性能权衡,以及70%接入成本降低、P90延迟改善等可验证数据。适合平台工程、数据基础设施和SRE团队参考,其资源提供者契约、RBAC、审计与异步工作流设计可迁移到类似控制平面系统,主要风险是LinkedIn内部细节较多,需结合自身规模判断。

工程实践LinkedIn Engineering - Architecture

Open Sourcing iris-message-processor

文章介绍了 LinkedIn 开源的新组件 iris-message-processor,用于替换原有 Iris 事件管理系统中单 leader 的 Python 子进程 iris-sender。旧架构串行处理消息、依赖 Galera 强一致数据库作为消息队列,在高负载下出现延迟激增和复制死锁。新服务用 Go 编写,采用分布式 bucket 动态分配,节点可水平扩展,数据库不再充当队列。压测显示高负载下性能提升约 86 倍,6000 条突发消息处理时间从近 30 分钟降至 10 秒内,节点失效后 30 秒内自动重平衡。该组件已生产运行一年无中断,并与现有 Iris-api 保持兼容,支持渐进式切换。

推荐收录,因为文章提供了从单点瓶颈到分布式架构的完整演进案例,包含明确的问题定位、设计取舍、压测数据和生产验证。对负责高吞吐消息处理、事件驱动系统或 on-call 基础设施的工程师有直接参考价值,特别是水平扩展、去数据库队列和渐进式上线策略可迁移到类似场景。