练习时长两年的鹅厂经历回顾

2 minute read

工作经历

  • 2021年5月至2023年5月,在腾讯体育担任技术研发岗位,主导体育接入层架构升级,负责弹幕、图文直播、内容池和推荐等业务的开发。
  • 三次绩效评估分别为Good+、Outstanding和Outstanding。

工作内容

项目名称 角色 主要业务贡献
体育接入层升级 负责人 产出:
项目一期,主导体育PHP接入层改造方案的调研和评审,将架构分层为API网关,接口适配层和领域层。引入TAPISIX网关,并搭建了接口适配层的代码框架。在3个月的时间内以弹幕,比赛底层页和赛程接口为试点完成重构,实践出一套从代码重构方法,到接口测试回归方法,再到灰度上线方法的接入层重构实践方案。
项目二期,以网关为起点建立了全链路可观测体系。设计并落地了一整套限流,降级和全链路过载保护的服务容灾方案。
收益:
在该方案的指引下,体育在过去的一年中重构了xxx个接口,覆盖体育xx%的流量,核心接口QPS提升1倍+,响应时间降低xx%,可用性提升至xx%。完成了体育后台微服务化转型。
全链路支持log/trace/metrics上报,实现接口告警x min内触发,问题定位xx min内完成。
多次在过载/网络异常/存储故障时成功兜底信息流首页和比赛直播核心页面。
体育测试环境治理 负责人 产出:
完成体育基线环境治理,实现多环境泳道。
支持随需求流转自动化管理特性环境。
体育测试数据构造和管理方案。
收益:
体育全部需求通过该方案完成开发,联调和测试,客户端,产品和测试同学反馈效率大大提升。
体育后台数据上报链路重构 负责人 服务端数据上报全部使用代码上报,研发效率低,每个数据需求都占1-2天工时;侵入业务代码,可维护性差;数据校验繁琐。
产出:
在网关层实现了“全埋点”的数据上报方式
完成48个互动场景数据上报文档梳理,零代码支持。
体育图文直播改版 核心coder 通过图文直播的改版,让用户在世界杯等非版权赛事中有新的交互方式和更好的图文直播体验。
产出:
快速准确地交付比赛图文直播改版需求,包括完成图文直播内外网管理后台的开发,比赛底层页热聊板块的开发。
推荐工程服务接手和优化 核心coder 由于团队职责变更,从推荐侧接手推荐接入和置顶强插等服务,进行了一系列服务职责边界变更和重构优化的工作。
产出:
完成体育推荐接入层的重构,包括前置插件并行获取数据,内容填充,后置插件编排实验等逻辑。重构后QPS提升50%+,接口耗时降低23%。
设计多层降级方案,包括接口缓存降级和独立的兜底模块降级,多次在推荐服务异常时成功降级。
将体育信息流置顶和强插模块从推荐侧迁移至个性化模块服务,提升需求的迭代效率。

项目1:体育接入层升级

项目背景

  • 体育后台最初是PHP单体应用,随着业务发展逐渐演变为接入层角色
  • 旧接入层存在框架老旧、代码质量差、性能不佳、运营难等问题
  • 在APP重构和业务转型背景下,需要对体育接入层进行改造,向微服务架构演进

方案设计

接入层架构设计

  • 参考业内主流微服务架构分层,提出新的分层方案
  • 引入API网关,承接旧接入层通用功能,为服务治理提供统一流量入口
  • 拆分出接口适配层,将业务逻辑下沉至领域层,解决旧接入层代码冗杂的问题

全链路可观测

  • 旧接入层可观测性差,导致问题定位困难
  • 以API网关为起点构建全链路观测体系,接入监控平台
  • 染色流量上报流量录制平台,保证染色流量的链路信息完整

全链路可容灾

  • 针对流量潮汐效应和故障,设计并落地全链路服务容灾方案
  • 实现请求优先级标记,统一过载拒绝策略,解决请求链路成功率漏斗问题
  • 微服务和接口适配层过载后采取多层降级措施,保障用户体验

重构方法论探索

  • 以核心接口重构为标杆案例,沉淀出通用的代码框架和重构流程指引
  • 接口适配层框架设计的特点:轻薄、单仓多服务、组合微服务
  • 提供从代码设计到灰度上线的全流程指引,针对共性问题总结最佳实践

项目成果

  • 历时1年多,重构上百个接口,覆盖大部分流量,完成微服务化转型
  • 接口性能显著提升,服务治理能力增强,研发效率提高
  • 用户体验改善,APP页面白屏问题基本消除
  • 为公司内部微服务网关的标准化和体育后台架构的进一步演进奠定基础

项目2:体育测试环境治理

项目背景

  • 体育后台测试环境存在诸多痛点,影响需求联调、走查和测试效率
  • 环境问题:切换环境繁琐,环境经常被覆盖,寻址不稳定
  • 测试数据问题:涉及状态变更的需求不可测,数据构造成本高
  • 提出通过测试环境治理项目解决上述问题,分为多环境治理和测试数据自动化构造两部分

方案设计

多环境治理

  • 联动需求管理、代码托管、环境管理等平台能力,搭建环境治理服务,随需求生命周期自动化管理测试环境
  • 每个需求有独立的特性环境,可稳定运行并实现流量隔离,客户端可快速切换

难点一:多环境泳道的实现

  • 特性环境按需拉起服务,减少资源消耗
  • 给流量打标签,根据标签做动态路由实现泳道
  • 适配多种服务寻址方式,通过网关和服务治理框架透传环境标识
  • 实现链路入口的流量标记和规则路由

难点二:特性环境的自动化管理

  • 需求和特性环境按固定粒度关联,解决需求号不一致问题
  • 通过CI/CD实现基线环境自动化更新
  • 通过Git hook实现特性环境自动创建,定时扫描需求状态实现自动销毁

测试数据构造和管理

  • 总结了比赛、内容、互动三类数据的构造方式
  • 比赛数据支持人工干预和不同倍速回放
  • 内容数据从正式环境同步,互动数据支持从正式环境导入

项目成果

  • 治理基线环境,实现服务全面可用,存储和配置隔离
  • 探索出适合的多环境方案,形成基础能力并反哺中台
  • 需求环境阻塞和bug大幅减少,测试数据构造成本从天级降至分钟级
  • 沉淀了通用完整的多环境泳道和环境自动化管理方案,提升研发效能

不务正业环节

开源协同

  • TAPISIX Oteam PMC:负责功能开发、CR和发展方向规划,贡献了元数据路由、金丝雀灰度、限流、熔断、降级缓存、流量录制、链路追踪等核心feature,获得2022年上半年“腾讯开源协同优秀个人奖”。
  • 积极参与平台共建,多次给北极星、tRPC-Go、123平台、流量录制回放相关项目提交特性和问题修复。

中心技术分享

  • TAPISIX调研
  • 体育接入层升级Q4总结
  • 全链路灰度和降级容灾

KM文章

  • 体育测试环境治理 - 多环境篇
  • TAPISIX限流、降级以及过载保护全攻略
  • TAPISIX灰度发布最佳实践
  • TAPISIX可观测实践 - log和metrics上报opentelemetry

自吹环节

  • 对微服务架构有一定的理解,关注前沿技术。可正确分析现有后台架构的问题,能够有效拆解复杂业务模块,合理划分架构层次,提出改造方案并落地。
  • 注重架构的可观测性和可用性,在体育搭建了从Gateway->BFF->微服务的全链路追踪能力,并落地全链路过载保护和降级方案。
  • 主动思考研发过程中的痛点,如测试环境不稳定,无法全链路灰度等。充分地复用和整合公司内部的平台/组件,构建部门的基础设施,提升团队的研发效能。
  • 具备降本增效意识,通过调用链路分析、火焰图等工具找出服务性能瓶颈并优化。熟悉各个存储组件的性能、成本和使用场景。

Updated: