mooon-agent核心设计图
来源:互联网 发布:武侠客栈mac版 编辑:程序博客网 时间:2024/04/28 07:18
代码:http://code.google.com/p/mooon/source/browse/#svn%2Ftrunk%2Fcommon_component%2Fsrc%2Fagent
说明:以下类图只画出了基础的核心类和主要关系,弱的依赖关系没有画出来。
应用场景:
在很多应用中,会有一个中心节点(在这里叫作Center,它可以是Master,也可以不是),每个节点都要和Center建立通讯,两者之间会有心跳等,Center还可能下发一些控制命令,这个模型是定的,只是具体的命令字会存在差异和不同的处理。mooon-agent就是为解决这个问题而设计的,提供一个可重用的agent框架,通过抽象命令处理成抽象接口ICommandProcessor,以实现支持不行应用要求的命令字处理。同时对一些常用的行为进行封装内置,以提升使用效率。
简述:
以CAgentContext类为入口,以CAgentThread为中心。为何以CAgentThread为中心,因为以它为中心时,以减少对象之间的关联层次。ICommandProcessor是一个回调接口,由使用者实现,用于对指定命令字的处理,但mooon-agent会内置一些CommandProcessor。CResourceThread是用来定时获取系统状态信息的,如CPU信息、内存信息、流量信息等。CSendMachine和CRecvMachine是两个状态机,分别处理消息发送和消息接收。限制同一时刻只能会有一个CAgentConnector,它是用来连接Center的,Center就是通常所说的主控或Master,同一时刻只会有一个主Master,但发生主备Master切换时,要求能够连接到备Master,因此需要多CCenterHost,它的IP信息通过域名指定,初次和需要重连接时,都会对域名重新进行解析,但考虑到域名服务器也存在不可用的时候,所以如果没有解析到新的IP,是使用上一次解析到的IP,以增强可用性。
主要功能包括:
1.定时的心跳(但请注意心跳只有在指定的时间内无数据发送给Center时,才会发送心跳)
2.异步数据接收和发送(前提:要求连接已建立,否则CAgentThread会被阻塞在建立连接阶段)
3.数据上报(所以需要上报的数据都必须衔存于CReportQueue,然后由CAgentThread调度上报)
4.命令字处理框架(实现ICommandProcessor接口,并注入mooon-agent即可)
5.内置的CommandProcessor(实现通用的,由参数控制是否启用)
6.精确到秒级的时间(很多情况只需要到秒级,这样可以减少对time()函数的系统调用)
7.定时的系统资源(可以用来取得CPU、内存、流量等数据)
- mooon-agent核心设计图
- mooon-agent核心设计图
- MOOON-scheduler核心设计图(初稿)
- MOOON-scheduler设计图更新
- mooon-agent设计要点
- MOOON-agent发布:MOOON-agent系统设计与使用说明
- mooon-agent接收状态机代码摘要
- mooon-agent发送状态机代码摘要
- MOOON-agent更新:新增IHeartbeatHook接口
- 设计图
- mooon db wrapper
- MOOON分布式消息结构
- 方案设计图
- 裁剪设计图
- iPhone设计图
- Ambari-server源码分析:核心类agent.rest.AgentResource
- Ambari-server源码分析:核心类-心跳处理agent.HeartBeatHandler
- mooon http-stress使用教程
- 简约的网络字节序处理
- 彻底告别VC
- 古代神童
- 常用vim设置
- 类的层次结构设计
- mooon-agent核心设计图
- mooon调度器设计的考量因素
- mooon-agent设计要点
- mooon-agent接收状态机代码摘要
- mooon-agent发送状态机代码摘要
- socket的五大误区
- 通过小代码体验程序中BSS段和DATA段的差异
- C语言编程程序的内存如何布局
- struct对齐问题