主要观点:推送代码到 GitHub 会引发一系列后续操作,如拉取请求同步、推送 webhooks 触发、工作流启动等,但之前这些操作由一个巨大的后台任务负责,存在诸多问题,如任务庞大难以重试、大部分步骤不重试、多关注点紧密耦合导致问题影响范围大、长序列流程延迟高等。为此,将长序列流程解耦为多个独立并行的流程,通过添加 Kafka 主题、分组任务、设置新后台任务及配置等方式进行改进,取得了问题影响范围减小、推送处理延迟降低、可观测性提高、推送处理更可靠等成果。
关键信息:
- 之前的“RepositoryPushJob”任务庞大复杂,存在重试困难、大部分步骤不重试、耦合度高、延迟大等问题。
- 改进措施包括添加 Kafka 主题、分组任务、设置新后台任务及配置等,以实现并行处理。
- 改进后取得了问题影响范围减小、推送处理延迟降低、可观测性提高、推送处理更可靠等成果,如拉取请求同步时间缩短等。
重要细节:
- 推送触发 Kafka 事件,通过独立消费者分发给多个隔离的任务处理,各任务有明确所有者和适当的重试配置。
- 为支持新架构进行了多项投资,如创建可靠的 Kafka 事件发布者、设置专用工作线程池、提高可观测性、设计一致的事件功能标记系统等。
- 改进后每天约 3 亿次推送处理操作中,约 99.999%的推送能完全处理,之前的“RepositoryPushJob”系统约 99.897%的推送能完全处理。
- 开发者每天大量推送代码,过去 30 天收到约 5 亿次推送,来自 850 万用户。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。