| 语言 | 格式 | 评分 |
|---|---|---|
中文(简体) | .pdf | 3 |
| 摘要 | ||
文档介绍了基于Go构建的B站作业平台Job。该平台是一套基于Agent/SSH双模式的原子平台,具备上万台机器并发处理能力,支持脚本执行、文件分发、定时任务等基础运维场景,并通过流程调度能力将单个任务组装成自动化作业流程。平台架构经历了从SSH模式到Agent/SSH双模式混合架构的演进,2021年起利用Kratos框架重构。平台面临系统集成、自动化编排、安全性、性能优化、故障排除和用户体验等挑战,以及资源变更、兼容性、回源问题和运维复杂等具体问题。平台组件包括Apiserver、Etcd、Scheduler和Worker,分别负责鉴权与任务初始化、作业存储、作业调度和作业执行与日志上报。 | ||
| AI总结 | ||
B站基于Go语言重构了海量作业平台(Job),以应对业务增长带来的性能、稳定性和可观测性挑战。
**1. 作业平台简介与核心对象**
* **核心概念**:将日常运维操作(如软件安装、服务启停)抽象为“作业”。
* **主要对象**:包括命令(独立操作,如关机)、文件分发/下载、作业(命令与文件操作的有序组合及执行对象)、定时作业。
**2. 面临的挑战**
* **系统集成**:需集成多供应商、多操作系统。
* **自动化编排**:核心是自动化作业流程。
* **安全性**:需处理敏感数据,要求严格的认证授权。
* **性能与可伸缩性**:需处理海量数据与任务。
* **故障排除**:需完善的机制快速定位问题。
* **用户体验**:需友好的界面。
* **其他难点**:资源变更与权限管理、跨基础设施兼容性、海外业务日志回源、组件升级维护成本高。
**3. B站作业平台(Job)介绍与演进**
* **定位**:基于Agent/SSH双模式,提供基础操作的原子平台,支持万级别并发,可通过流程调度组装自动化流程。
* **架构演进**:
* 早期:基于SSH模式,解决单机房问题,但SSH并发弊端随业务增长显现。
* 2021年起:利用Kratos框架(Go语言)重构,实现组件插件化,灵活集成公司内部工具链(服务发现、ORM、MQ、可观测组件等)。
* **当前架构**:参照K8S设计,分为四大组件:
* **ApiServer**:大脑,负责统一鉴权、任务初始化,对外暴露接口。
* **Etcd**:作业分发依赖的中间件,用于存储。
* **Scheduler**:调度器,负责将作业调度至Worker。
* **Worker**:负责作业执行(通过SSH模块远程执行)及日志上报。
* **功能特性**:支持原生SSH与Agent双模式、跨OS、高危命令实时检测、开放API接口供其他系统调度。
**4. 总结与展望**
* 平台解决了SSH模块在并发处理、长时作业、大作业场景下的不足,实现了多机房作业调度与多活。 | ||
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
22 页请下载阅读 -
文档评分














1.3.3 基于Go构建海量作业作业平台