58同城监管平台系统分析与设计姜中明 jiangzhongming@58.com• 监管平台是什么? • 为什么要开发监管平台? • 监管平台能做什么?介绍监管平台是什么系统部署集群管理监控管理配置管理• 代号宙斯(Zeus)• 重复劳动 • 容易出错 • 资源浪费 • 影响生活 为什么要开发Zeus效率运维压力运营压力生活压力资源压力• 规范化工作流程• 自动化重复劳动• 合理化资源分配• 生态化项目管理Zeus能做什么分析篇系统目标 提高工作效率 减小工作压力整体结构集群管理2 配置系统1 统计系统4 5 统⼀一监管平台Zeus部署系统3 Agent系统功能• 核心功能– 集群监控– 集群管理• 支撑功能– 部署系统– 配置系统– 。。。• 衍生功能– 统计系统• 跨机器,跨系统交互– 协议• 有集群概念– 分布式(扩容,状态同步,容灾)• 监控管理功能– 通信方式(C/S)– 数据结构• 复杂的业务– 业务的扩展– 业务的下线系统特点设计篇• 规则流程制定 • 协议通信 • 状态维护 • 扩展,解耦 规则流程制定• 统一运行环境 • 统一开发环境 • 统一部署规则 • 统一开发流程 Zeus系统架构一/Zookeeper/服务器信息/集群信息/状态信息/IP_1/IP列表.../集群1/集群2/集群名称.../集群x/集群名称.../config.xml/log4j.properties/IP_1/IP列表.../集群1/集群2/集群XUsp管理平台TerminalTerminal②发布对应IP的集群配置①设置配置文件内容信息③触发对应客户端响应⑤更新对应状态到服务端④拉取对应集群配置信息⑥响应到后台显示状态ClientAgentClientDATA:存储客户端指令DATA:存储配置文件信息DATA:存储集群IP列表,集群监控信息DATA:存储客户端更新状态ClientClientClient应用服务器状态指令服务器信息一致同步Zookeeper集群Agent客户端Zeus管理平台TerminalTerminal交互部署,监控系统数据通信部署系统监控系统状态指令服务器状态指令服务器状态指令服务器交互下发状态上传指令监控分析系统监管分析服务器集群收集数据分析结果及数据/Zookeeper/alive/command/statusZeus管理平台数据库Zookeeper管理集群监控系统Agent生成指令调整监控策略上传行为状态存储相关数据PlatformClient配置系统调用配置系统部署系统调用部署响应状态下发指令到Agent监控系统数据交互分析结果及数据Zeus系统架构二• Agent的功能扩展-‐-‐-‐-‐插件方式 • 可扩展的协议 • 流程设计 • 平台工作流方式 • 友好的UI、UE健壮的系统Agent设计AgentTomcat模块Nginx模块升级模块监控部署模块状态模块配置模块Apache模块Command Order模块注册Status Order协议设计commands command module=插件名称 target=插件功能 id=1 param![CDATA[参数1]]/param param![CDATA[参数2]]/param /command command module= target= id=2 param![CDATA[]]/param param![CDATA[]]/param /command command module= target= id=3 param![CDATA[]]/param param![CDATA[]]/param /command /commandscommands status id=1 code=0 message!CDATA[[状态信]]/message /status status id=2 code=0 message!CDATA[[]]/message /status status id=3 code=0 message!CDATA[[]]/message /status /commands/command/ip/sessionid.command /status/ip/sessionid.statusAgent激活Zeus平台注册加入机器池 收集基础信息配置集群初始化集群监管配置 基础配置 部署项目Agent下发指令上传状态人工自动流程设计新机器安装工作流设计界面设计总结• 简单高效 • 抽象,规则,流程 • 以实用为目标 • 由整体到局部 系统改变生活AnyQuestionsThanks