• tars framework 源码解读(五) framework 部分章节。NotifyServer 通知服务


    _maxPageSize /tars/hash<max_page_size> 配置中默认是29

    _maxPageNum /tars/hash<max_page_num> 配置中默认是30

    过滤条件。配在 /tars/filter

     

     

    NotifyF.tars 接口实现

     

    reportServer 框架上报的信息, 保存于数据库中

    实际执行的函数是 reportNotifyInfo.此种模式下如下:

    1、上报的内容是sResult中,检查服务的过滤规则,如果上报内容的在过滤中,此次上报取消.

    2、将上报内容生成sql语句,写入 "t_server_notifys"中。

     

    看了下此函数使用之处 几乎都是NodeServer中操作完毕之后,会调用此函数 上报操作内容。

     

    notifyServer 业务上报的信息, 用于报警

    此函数看调用处.貌似已废弃。替换成reportNotifyInfo

     

    实际执行的函数是 reportNotifyInfo.此种模式下如下:

    将内容格式整理下,存在 内存的。g_notifyHash 中。

    这里的写法比较有意思的地方是,g_notifyHash TarsHashMap<NotifyKey, NotifyInfo, ThreadLockPolicy, MemStorePolicy>类型,此数据结构设计的比较牛逼,进程重启也不会丢数据。

    key {

    NotifyKey stKey0;

    stKey0.name = info.sApp + info.sServer;

    stKey0.ip = current->getIp();

    stKey0.page = 0;

    }

    一直都是在拿第0页做开始。第0页没满,直接塞到第0页的NotifyInfo.notifyItems这个vector中。若第0页满了(判断满的条件是 NotifyInfo.notifyItems.size()>=_maxPageSize)则将第0页置换出去.被置换的页码是从1-_maxPageNum-1.轮询过去。。

     

    getNotifyInfo 获取上报信息

    从上面的 g_notifyHash 读取对应内容。

    根据指定的NotifyKey

    {

    name;//(app+server)

    ip;

    page;//页码

    }

    根据此key获取指定g_notifyHash的内容。。

    未看到调用之处.

     

    reportNotifyInfo 上报框架信息以及业务告警信息

    此函数是reportServernotifyServer的具体实现。详细看上面介绍。

     

    看代码实现。。TarsRemoteNotify中的 TarsRemoteNotify::notify()TarsRemoteNotify::report()全部都是执行的REPORT类型了。也就是全部都是 reportServer了??这么奇怪的吗?

     

     

    LoadDbThread db加载set相关信息的线程类

    定时频率30s一次. t_server_conf 中读取 所有服务的set方面信息。并用

    app+server+nodename 做可以;set_name+set_area+set_groupvalue。放在缓存中。

    这个set信息用于在 notifyServerreportServer时生成的上报数据里面的sSet字段所用.

     

     

  • 相关阅读:
    批量修改Linux文件夹下所有文件大小写
    如何使用malloc申请一个二位数组
    CenOS 配置C/C++语言
    C++类定义,.h文件与.cpp文件之间的关系以及条件编译
    Error while building/deploying project...When executing step "qmake"——Qt Creator快速排错
    Hello World!
    HDU1262:寻找素数对
    NOIP1998复赛:2的幂次方表示
    HDU1002 : A + B Problem II
    Open Judge2748:全排列
  • 原文地址:https://www.cnblogs.com/yylingyao/p/12198397.html
Copyright © 2020-2023  润新知