说明:以下类图只画出了基础的核心类和主要关系,弱的依赖关系没有画出来。
应用场景:
在很多应用中,会有一个中心节点(在这里叫作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、内存、流量等数据)

转载于:https://www.cnblogs.com/aquester/archive/2012/06/05/9892023.html

mooon-agent核心设计图相关推荐

  1. MOOON-scheduler核心设计图(初稿)

    按以下思路进行设计,非最终设计图,有等进一步思考,以发现问题,需要达到以下目的: 同时支持线程和进程模式(做了抽象) Service不和线程绑定 Service独占线程池或进程(进程下再划分线程池) ...

  2. Skywalking光会用可不行,必须的源码分析分析 - Skywalking Agent 插件解析

    3 Skywalking源码导入 接上文,已经学习了Skywalking的应用,接下来我们将剖析Skywalking源码,深度学习Skywalking Agent. 3.1 源码环境搭建 当前最新版本 ...

  3. C#中用Microsoft Agent为自己的程序创建精灵助手

    一 概述 微软的Office2000中用到了一些被称为"办公助手"(Office Assistance)的精灵来给用户提供帮助,这样做的效果是显而易见的,大家可以得到很有效的帮助并 ...

  4. java 运行管理-基础

    java 运行管理-基础 OS层管理 JVM层管理 java 安全策略 JVM将.class文件加载到JVM Memory中,然后JVM里的执行机获取内存里的内容 - 获取字节码指令,并将其翻译为本地 ...

  5. 数据依赖症:当今AI领域的核心风险

    在最近结束的2017年度AI星际争霸竞赛上,Facebook做出了一款人工智能"CherryPi",参与到这项旨在让各路AI技术在星际争霸游戏中同场竞技的赛事之中. 但很遗憾的是, ...

  6. 全面解析微服务系统监控分层,啃透服务治理核心!

    来源:掘金 juejin.cn/post/6844903846192349191#heading-6 -     前言     - "监控"是微服务治理的一个重要环节,监控系统的完 ...

  7. 分布式系统性能监控工具,初探Pinpoint Agent启动源码

    作者:未完成交响曲,资深Java工程师!目前在某一线互联网公司任职,架构师社区合伙人! 本文源码基于Pinpoint 2.0.3-SNAPSHOT版本 官方开源地址:https://github.co ...

  8. Science | 以功能为核心的蛋白质设计

    从头设计可以在蛋白质中创建新型的稳定折叠.但是,建立成功的功能仍然具有挑战性.Che Yang等描述了一种自下而上的方法,该方法中,他们构思了功能性图案周围的结构,然后使用针对性筛选来优化其组成.基于 ...

  9. CentOS-7.0的核心安装与配置的补全

    我们CentOS-7.0的核心安装后,很开心,但还没等兴奋劲过去就发现问题了,yum怎么用不了?ifconfig怎么也用不了?pvcreate呢?......之后大家可能就开始骂我坑爹了,怎么这么多的 ...

  10. SNMP AGENT函数介绍

    http://wenku.baidu.com/view/6a7903a9d1f34693daef3e9f.html 一.  SNMP AGENT在SNMP框架中的位置 1.1 SNMP是被广泛接受并投 ...

最新文章

  1. Android之自定义标题
  2. 咖啡文化:各种咖啡名称与选择
  3. Linux打开txt文件乱码的解决方法
  4. python renamer模块_【免费工具集】4种免费Maya Python脚本集合:重命名、检查UV、分配重叠模型、选边,尽在EL Tool Pack...
  5. [Leedcode][JAVA][第15题][三数之和][数组][双指针]
  6. C语言 文件的基本介绍
  7. mysql刻度转时分秒
  8. 181205每日一句
  9. 到底啥是平台,到底啥是中台?李鬼太多,不得不说
  10. Java Web项目开发项目经验总结
  11. LED 发光二极管压降
  12. 笔记本电脑计算机无法显示u盘,小编告诉你为什么笔记本电脑识别不了u盘
  13. SubstanceDesigner制作PBR材质制作并且同步到Unity小尝试
  14. 视频号还是直播?2021年微信财富密码预言
  15. Python九九口诀表
  16. 高绩效团队的建设与管理
  17. 为什么中国的程序员喜欢用英文写代码,甚至注释也用英文?
  18. 解决桌面图标无法拖动的方法
  19. createfont
  20. 导数,差商,牛顿插值法

热门文章

  1. OmniCppComplete实现C代码自动补全
  2. Linux 进程热升级
  3. 漫画:如何实现大整数相乘?
  4. pfn_to_page 函数
  5. linux应用编程--思维导图
  6. maven生成可执行jar包
  7. 对称二叉树 详解(C++)
  8. 怎么做应力应变曲线_浅析基桩低应变检测技术
  9. openlayer右键菜单_AE中实现右键菜单的属性表的打开
  10. oracle 访问adf 慢,ORACLE ADF 问题总结