在现代互联网服务架构中,数据导向的服务网格作为链接多方数据与业务逻辑的关键基础设施,扮演着越来越核心的角色。作为Airbnb内部打造的专属解决方案,Viaduct自五年前诞生以来,经历了从初创到成熟的蜕变。如今,Viaduct不仅支撑了公司日益增长的服务调用和业务复杂度,更通过技术创新实现了架构升级,并将核心代码库开源,期望引领更广泛的工程社区共同推动服务网格的发展。 Viaduct的诞生背景源于Airbnb为应对庞大且复杂的服务生态所面临的挑战。随着服务数量和数据量的激增,传统微服务模式中接口管理、数据访问和业务逻辑复用等问题日益凸显。为此,Viaduct以GraphQL为核心构建了一个统一的中央架构体,一体化管理全公司的数据与服务接口,极大地简化了数据调用流程,增强了服务间协作的灵活性和可控性。
自2020年首次发布以来,Viaduct在Airbnb内部迅速普及。五年间,系统流量增长了八倍,托管代码库规模跃升至一百五十万行,活跃开发者数翻倍,超过130个团队使用此平台协同开发。令人瞩目的是,系统的运营复杂度并未随之攀升,事故时长减半,且成本增长基本与请求量线性相关,数据表明Viaduct的设计不仅可扩展且高效运营。 从架构设计角度看,Viaduct秉持三大核心原则:中央统一的GraphQL模式、托管的业务逻辑以及所谓的"可重入性"。这三者形成服务网格的基石,确保数据维度和服务功能的高度整合。 中央统一模式意味着Viaduct维护一个高度关联的统一GraphQL schema,涵盖了公司所有业务领域,由多团队协作去分散式开发维护。
该模式消除了数据孤岛,提升了跨业务线的数据访问效率和一致性。事实上,超过75%的请求均为内部调用,显示出Viaduct作为"数据一站式"平台的地位。 业务逻辑托管则打破了GraphQL传统应作为薄层代理微服务的理念。Airbnb团队为Viaduct开发了无服务器化业务逻辑平台,将业务代码直接托管于服务网格内,减少了服务碎片化带来的复杂运维压力。工程师可以专注于实现业务价值,享受到更优质、更统一的开发体验。 而"可重入性"促进模块间的代码组合与复用。
业务逻辑通过GraphQL片段和查询进行互相调用和扩展,避免了单块巨大单体的弊端,提升系统的模块化程度和维护灵活度。这种机制有效地支持了庞大代码库下的并行开发和渐进扩展。 随着用户规模和需求的多样化,原有的Viaduct版本逐渐暴露出API复杂度高、接口设计松散等痛点,给开发者带来困惑,降低了新团队的上手效率。老旧的接口缺乏统一的抽象边界,也增加了系统变更时的风险和成本。为此,Airbnb工程师启动了名为"Viaduct Modern"的重构计划,彻底改造开发者体验和底层执行引擎。 "Viaduct Modern"聚焦于简化开发者API,推出新的"Tenant API"机制,将旧版中多种代码实现方式大幅精简为节点解析器与字段解析器两种。
这种根据Schema自然驱动的划分取代了此前基于功能特征的复杂分类,统一的API接口规范令代码变得更加简洁直观,使得开发者能够更加轻松地完成业务功能开发。 模块化设计是此次升级的另一核心,强调强边界和职责单一原则。通过"租户模块"概念,把Schema和业务实现代码打包成单元,归属于独立团队,模块之间以声明式的数据需求和GraphQL组合机制进行关联,避免了传统代码依赖导致的耦合和重复。这促成了规模宏大的服务网格也能保持灵活且稳定的演进态势。 在框架内部,"Viaduct Modern"划分了三大层次:GraphQL执行引擎、租户API和托管业务代码,且重新定义了它们之间的接口边界。尤其是引擎与租户API的严格隔离利用动态类型与静态类型之间的桥接,保障了二者可以独立演进。
借助强抽象,团队可以更快速地专注于性能优化和开发体验升级,同时降低改动对现有应用的冲击。 为了避免对海量代码库的冲击,"Viaduct Modern"设计了平滑迁移策略,支持新旧API并存。这不仅让团队得以逐步享受到引擎带来的成本和性能优势,也为新API的推广和完善赢得时间。同时,双API策略也推动了引擎接口设计的规范性和通用性,为未来可能支持多语言的接口扩展打下基础。 此外,Viaduct在观测能力、构建优化、流量调度等方面也取得了显著进步。通过明确划分框架代码和业务代码的界限,系统的责任归属和指标统计变得更加精准,提升了故障定位和责任判定效率。
构建流程采用面向Schema的代码生成及直接生成字节码的方式,大幅缩减了构建时间。其部署在Kubernetes环境中,利用洗牌分片技术优化流量隔离和容灾能力,保障了高可用性和安全性。 更具开创性的是,Airbnb宣布将Viaduct开源,希望通过开放协作推动该项目走向更广泛的行业应用。当前,尽管新引擎已进入生产阶段,现代化的租户API仍处于Alpha版本,团队正积极寻求社区贡献和反馈。此举不仅符合开源初心,也期待借助外界力量加速创新,打造更具适应性和易用性的服务网格方案。 Viaduct的案例展现了数据驱动服务网格演进的前沿实践,同时为大企业复杂多团队协作带来启示。
其强调统一数据模式、业务逻辑托管与可重入代码的理念,在保障可扩展性与灵活性的基础上,兼顾了开发者体验与运维效率。通过持续的升级改造和开放合作,Viaduct为现代大型互联网服务构建高效、可靠且易维护的基础设施树立了标杆。 总的来说,Viaduct五年来的变革与创新,正引导服务网格迈向更加现代化、模块化和开放的新时代。其简化的API设计和清晰的模块边界,不仅极大提升了开发效率,也为未来的技术演进提供了坚实基础。随着开源社区的壮大,Viaduct有望成为全球开发者构建数据导向服务基础设施的重要选择。无论是初创阶段的小团队,还是承载亿级请求的超大规模图谱系统,Viaduct都展示出强大的适用性与扩展潜能,成为数据驱动业务数字化转型的有力引擎。
。