Bigtop Manager架构揭秘:Web UI与Agent协同工作的底层原理
Bigtop Manager架构揭秘:Web UI与Agent协同工作的底层原理
【免费下载链接】bigtop-managerBigtop-manager provides a modern, low-threshold web application to simplify the deployment and management of components for bigtop, similar to Apache Ambari and Cloudera Manager.项目地址: https://gitcode.com/openeuler/bigtop-manager
前往项目官网免费下载:https://ar.openeuler.org/ar/
Bigtop Manager是一个现代、低门槛的Web应用程序,专门用于简化Apache BigTop大数据组件的部署和管理。它类似于Apache Ambari和Cloudera Manager,但提供了更加现代化的用户界面和更高效的架构设计。今天我们将深入探讨Bigtop Manager的核心架构,特别是其Web UI与Agent协同工作的底层原理。
🏗️ 三层架构体系:清晰的责任分离
Bigtop Manager采用了经典的三层架构设计,确保了系统的高度可扩展性和可维护性:
1. 接口层(Interface Layer)
这是用户与系统交互的入口点,包含两个核心模块:
- REST API模块:基于Spring Boot框架实现,提供符合OpenAPI 3.0规范的HTTP接口,位于
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/目录下 - Web UI模块:基于Vue 3构建的现代化管理界面,位于
bigtop-manager-ui/目录,使用TypeScript和Ant Design Vue组件库
Bigtop Manager的登录界面,展示了现代化的Web UI设计
2. 核心层(Core Layer)
这是系统的大脑,负责所有的业务逻辑处理:
| 模块 | 核心职责 | 关键功能 |
|---|---|---|
| Server | 集群元数据管理、任务调度、全局状态维护 | 处理所有业务逻辑,协调各个组件 |
| Agent | 主机级服务生命周期管理 | 部署、启动、停止、配置组件服务 |
| gRPC模块 | 实现Server与Agent间的双向通信 | 高效的数据传输和指令下发 |
| Stack模块 | 组件栈定义和管理 | 定义各种大数据组件的安装脚本和配置模板 |
3. 组件层(Component Layer)
这是系统的执行层,包含了各种大数据组件:
- 支持组件:ZooKeeper、Hadoop、Kafka、Spark等
- 扩展机制:通过Stack模块轻松添加新组件
🔄 Web UI与后端的高效通信机制
Web UI的请求流程
当用户在Web界面上执行操作时,整个请求流程如下:
- 用户操作触发:在Vue组件中调用API接口,如
bigtop-manager-ui/src/api/cluster/index.ts中定义的getClusterList() - HTTP请求发送:通过Axios库发送REST API请求到Server端
- Server处理:Spring Boot控制器接收请求,如
ClusterController处理集群相关操作 - 业务逻辑执行:Service层处理具体业务,协调各个模块
实时状态监控
Web UI通过轮询机制实时获取任务状态:
// 任务日志获取示例 export const getTaskLog = (pathParams: TaskLogParams, func: Function): LogsRes => { return request({ method: 'get', url: `/clusters/${pathParams.clusterId}/jobs/${pathParams.jobId}/stages/${pathParams.stageId}/tasks/${pathParams.taskId}/log`, responseType: 'stream', timeout: 0 }) }🤝 Server与Agent的协同工作原理
gRPC通信协议
Server和Agent之间通过gRPC协议进行高效通信,这是Bigtop Manager架构的核心创新:
Bigtop Manager的默认管理界面,展示集群状态和组件信息
gRPC服务定义
系统定义了多种gRPC服务,位于bigtop-manager-grpc/src/main/resources/proto/目录:
- ComponentCommandService:组件命令执行服务
- TaskLogService:任务日志流式传输服务
- ComponentStatusService:组件状态查询服务
- HostInfoService:主机信息获取服务
- JobCacheService:任务缓存管理服务
通信流程示例
以组件命令执行为例:
service ComponentCommandService { rpc Exec (ComponentCommandRequest) returns (ComponentCommandReply) {} } message ComponentCommandRequest { int64 task_id = 1; string payload = 2; }Agent的职责与实现
每个主机上运行一个Agent实例,负责:
- 服务生命周期管理:启动、停止、重启组件服务
- 配置管理:应用配置模板,管理配置文件
- 状态监控:实时监控组件运行状态
- 日志收集:收集并传输组件运行日志
Agent的核心代码位于bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/目录,实现了各种gRPC服务的具体逻辑。
📊 任务调度与执行机制
任务处理流程
Bigtop Manager的任务处理采用分层调度机制:
- Job创建:Web UI或API触发任务创建
- Stage划分:将Job拆分为多个Stage
- Task分发:将Stage进一步拆分为Task,通过gRPC分发给Agent
- 并行执行:多个Task可以在不同主机上并行执行
- 状态同步:实时同步执行状态到Server
状态管理机制
系统定义了完整的任务状态机:
| 状态 | 触发条件 | 处理策略 |
|---|---|---|
| PENDING | 任务创建但未调度 | 等待调度器分配 |
| RUNNING | 任务已下发到Agent | 监听超时阈值 |
| SUCCESSFUL | Agent返回成功结果 | 更新组件状态 |
| FAILED | Agent返回失败结果 | 触发重试或告警 |
| CANCELED | 前置任务失败 | 取消后续任务 |
🚀 架构优势与创新点
1. 高效的通信机制
- gRPC替代HTTP:相比传统的HTTP REST API,gRPC提供了更高效的二进制通信
- 双向流式传输:支持实时日志流和状态更新
- 协议缓冲区:使用Protobuf进行数据序列化,减少传输开销
2. 灵活的可扩展性
- 模块化设计:各个模块职责清晰,易于扩展
- Stack机制:通过Stack模块轻松添加新的大数据组件
- 插件化架构:支持自定义扩展和集成
3. 强大的监控能力
- 实时状态同步:Web UI实时显示组件状态
- 详细的执行日志:完整的任务执行日志记录
- 健康检查:定期检查组件健康状态
4. 智能运维支持
- AI辅助:集成AI功能模块,提供智能运维建议
- 自动化部署:一键式部署和配置管理
- 故障自愈:自动检测和修复常见问题
💡 实际应用场景
集群部署流程
- 环境准备:通过Web UI配置主机信息
- 组件选择:选择需要部署的大数据组件
- 配置定制:自定义组件配置参数
- 一键部署:启动自动化部署流程
- 状态监控:实时监控部署进度和结果
日常运维操作
- 服务启停:通过Web界面轻松管理服务
- 配置更新:在线修改配置并实时生效
- 扩容缩容:动态调整集群规模
- 版本升级:平滑升级组件版本
Bigtop Manager的AI功能界面,展示智能运维能力
🔧 技术栈概览
后端技术栈
- Java 17+:主要开发语言
- Spring Boot:Web框架
- gRPC:服务间通信
- MySQL:数据存储
- Redis:缓存服务
前端技术栈
- Vue 3:前端框架
- TypeScript:类型安全的JavaScript
- Ant Design Vue:UI组件库
- Vite:构建工具
- Pinia:状态管理
部署技术
- Docker:容器化部署
- Kubernetes:容器编排
- Helm:Kubernetes包管理
🎯 总结
Bigtop Manager通过其精妙的三层架构设计,实现了Web UI与Agent的高效协同工作。Web UI提供了友好的用户界面,Server作为控制中心协调所有操作,Agent则在各个主机上执行具体任务。这种架构不仅提高了系统的可维护性和可扩展性,还确保了大数据组件的稳定运行。
通过gRPC协议的高效通信、Stack模块的灵活扩展、以及完善的监控机制,Bigtop Manager为大数据集群管理提供了一个现代化、低门槛的解决方案。无论是小型测试环境还是大型生产集群,都能通过Bigtop Manager轻松管理和维护。
如果你正在寻找一个现代化的大数据集群管理工具,Bigtop Manager绝对值得一试!🚀
【免费下载链接】bigtop-managerBigtop-manager provides a modern, low-threshold web application to simplify the deployment and management of components for bigtop, similar to Apache Ambari and Cloudera Manager.项目地址: https://gitcode.com/openeuler/bigtop-manager
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
