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拆分为多个StageTask分发将Stage进一步拆分为Task通过gRPC分发给Agent并行执行多个Task可以在不同主机上并行执行状态同步实时同步执行状态到Server状态管理机制系统定义了完整的任务状态机状态触发条件处理策略PENDING任务创建但未调度等待调度器分配RUNNING任务已下发到Agent监听超时阈值SUCCESSFULAgent返回成功结果更新组件状态FAILEDAgent返回失败结果触发重试或告警CANCELED前置任务失败取消后续任务 架构优势与创新点1. 高效的通信机制gRPC替代HTTP相比传统的HTTP REST APIgRPC提供了更高效的二进制通信双向流式传输支持实时日志流和状态更新协议缓冲区使用Protobuf进行数据序列化减少传输开销2. 灵活的可扩展性模块化设计各个模块职责清晰易于扩展Stack机制通过Stack模块轻松添加新的大数据组件插件化架构支持自定义扩展和集成3. 强大的监控能力实时状态同步Web UI实时显示组件状态详细的执行日志完整的任务执行日志记录健康检查定期检查组件健康状态4. 智能运维支持AI辅助集成AI功能模块提供智能运维建议自动化部署一键式部署和配置管理故障自愈自动检测和修复常见问题 实际应用场景集群部署流程环境准备通过Web UI配置主机信息组件选择选择需要部署的大数据组件配置定制自定义组件配置参数一键部署启动自动化部署流程状态监控实时监控部署进度和结果日常运维操作服务启停通过Web界面轻松管理服务配置更新在线修改配置并实时生效扩容缩容动态调整集群规模版本升级平滑升级组件版本Bigtop Manager的AI功能界面展示智能运维能力 技术栈概览后端技术栈Java 17主要开发语言Spring BootWeb框架gRPC服务间通信MySQL数据存储Redis缓存服务前端技术栈Vue 3前端框架TypeScript类型安全的JavaScriptAnt Design VueUI组件库Vite构建工具Pinia状态管理部署技术Docker容器化部署Kubernetes容器编排HelmKubernetes包管理 总结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),仅供参考