• mooonagent核心设计图


    说明:以下类图只画出了基础的核心类和主要关系,弱的依赖关系没有画出来。
    应用场景:
    在很多应用中,会有一个中心节点(在这里叫作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、内存、流量等数据)
  • 相关阅读:
    Java方法命名之“由简入繁”原则
    设置Tomcat的字符编码
    MyBatis之会话Session原理
    SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1fa5519] was not registered for synchronization because synchronization is not active
    python3 驱动 PyMySQL
    win 7 64 安装 MondgoDB 3.4
    Python
    win 7 64 安装 tensorflow
    俞敏洪:2017年上半年我的阅读书单和笔记 转
    阿里巴巴开源产品列表 转
  • 原文地址:https://www.cnblogs.com/aquester/p/9892023.html
Copyright © 2020-2023  润新知