美文网首页
open-falcon transfer学习

open-falcon transfer学习

作者: 一盆饭 | 来源:发表于2018-04-12 16:06 被阅读52次

    transfer统计接收及转发的QPS
    接收数,http接收数,rpc接收数,socket接收数(每分钟,QPS)
    转发graph,judge,tsdb的总量,成功数,失败数(每分钟,QPS)
    发送graph,judge,tsdb缓存大小

    transfer内部数据结构:
    一致性哈希环,记录了judge和graph服务节点
    JudgeNodeRing *ConsistentHashNodeRing
    GraphNodeRing *ConsistentHashNodeRing

    发送缓存队列
    TsdbQueue list 线程安全链表
    JudgeQueues map[string][
    list]
    GraphQueues map[string][*list]

    rpc连接池
    JudgeConnPools *cpool.SafeRpcConnPools
    TsdbConnPoolHelper *cpool.TsdbConnPoolHelper
    GraphConnPools *cpool.SafeRpcConnPools

    跟踪,过滤
    RecvDataTrace,RecvDataFilter

    transfer转发数据:
    被动接受指标数据,调用RecvMetricValues()异常处理后,发送graph,judge,tsdb发送队列
    1.Push2GraphSendQueue:根据rrdtool数据规范step最小30s,counterType为Counter的转为derive,timestamp转为当前时间的整数时间,如12:30:22转12:30:00
    拼接PK = endpoint/metric/tags,通过PK在一致性哈希环中获取节点,存GraphQueues[node+addr]{graphItem}
    更新发送计数器
    2.Push2JudgeSendQueue:构造PK,哈希环中获取节点,整数化时间戳,存JudgeQueues[node]{
    judgeItem}

    启动sendTask处理缓存队列数据,graph/judge每个node一个协程,通过rpc发送数据到下游,每次失败会重试最大三次间隔10毫秒,默认发送间隔50毫秒

    相关文章

      网友评论

          本文标题:open-falcon transfer学习

          本文链接:https://www.haomeiwen.com/subject/byqfkftx.html