在完成搜索组件化技术改造后,使用 PHP 支撑的服务器端渲染架构已渐渐不能适应搜索前端技术的发展。随着搜索渲染架构不断演进,百度引入了 Node.js 作为单独的渲染服务,支撑了搜索移动、PC 的各个业务线,每日承接十亿级的渲染请求。 本次演讲主要分享搜索前端渲染架构的演进历程。
演讲提纲:
- 背景与挑战
- 结果页每条结果使用独立模块运行容器形式进行组织,涉及到 20+ 个团队,每日上线 20 个左右的需求
- 10 亿级的渲染服务
- 搜索架构整体迁移:Go + Node.js
- 大规模渲染服务架构设计与实施
- 架构方案介绍
- 搜索渲染服务化:Node.js 作为一个单独的服务,全面接管搜索渲染工作
- 多进程主从并行渲染架构:充分利用线上机器 CPU(100 核),避免卡片间相互干扰,提升性能
- 将主模板和卡片内容分开,主模板与卡片内容并行渲染
- 多个卡片之间进行并行渲染,单卡渲染失败不影响整页结果输出,提升稳定性
- 方案落地实践
- 页面内部主模板与独立模块运行容器并行,主进程劫持机制
- 多种前端框架,SSR 集成及性能优化
- 主从 60+ 进程数据通讯优化,性能对比,共享内存
- 从进程的预热,不停流预热更新方案
- 方案收益
- 渲染技术的更新换代,优化服务端渲染(SSR)机制,丰富了 SAN 的技术生态
- 前后端渲染同构
- 优化服务端渲染耗时,提升结果页渲染的稳定性
- 在工程化方面,业务迁移方案实践积累
- 抽象出渲染服务,不仅可满足搜索结果页,还在持续为搜索其他业务提供服务
你将获得:
- 学习 Node.js 在渲染服务中的实践方案
- 大前端工程架构以及相关配套设计