相关文章推荐
读研的山楂  ·  brpc/community/cases.m ...·  3 月前    · 
读研的山楂  ·  bRPC·  3 月前    · 
读研的山楂  ·  Aeraki Mesh 1.1.0 ...·  3 月前    · 

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account
  • bvar:底层bvar计数器,复用目前bvar中的单维度计数器
  • Labels:监控项维度KV对,包含维度名和维度值,例如:idc为bj,method为get,status为200
  • Metric:监控项,需要在创建的时候指定labels的key,并且需要管理监控项下所有的instance
  • MetricManager:管理全局所有的监控项,manager全局唯一
  • MetricCollector:监控数据收集者,支持将数据dump到本地磁盘文件
  • Metric如何高效的管理bvar,显而易见,Metric管理bvar是一个读多写少的操作,程序刚开始启动的时候可能写比较多(一个labels只会写一次),但是一段时间后基本就不会存在写操作了,因此这里共有两种选型:

    临界区不是特别大的时候(毫秒级),读写锁并不比mutex快。
    可以用如下几种结构来存储labels和bvar的对应关系:

  • unordered_map
  • Flatmap
  • skiplist
  • 双缓冲DBD(DoublyBufferedData)

    brpc中的loadbalance就是采用这种数据结构。
    可以用如下3中数据结构来存储labels和bvar的对应关系:

  • unordered_map
  • Flatmap
  • 最终选型:DBD + Flatmap

    dumper支持三种导出格式,业务方可以根据自己的实际需求进行灵活配置:

  • 冒号分割的KV文本格式,也就是目前bvar的dump格式,Key:Value形式
  • 开源Prometheus文本格式,兼容开源方案,方便业务往云原生方向迁移
  • 冒号分割的KV格式

    文本格式,Key和Value用冒号分割,比如:

    http_request_count{idc="bj",method="post",status="200"} : 1000
    http_request_qps{idc="bj",method="post",status="200"} : 30
    http_request_latency{idc="bj",method="post",status="200"} : 50
    

    Prometheus格式

    文本格式,Key和Value用空格分开,比如:

    # MetricName{lable1_key="lable1_value",lable2_key="lable2_value",lable3_key="lable3_value"} value
    # Example for Adder、Maxer、Miner and IntRecorder
    http_request_count{idc="bj,method="post",status="200"} 20
    http_request_count{idc="bj",method="get",status="200"} 50
    
  • 框架帮用户拼接key,避免用户自己实现五花八门 拼接key的逻辑
  • 保留用户单维度bvar的使用习惯
  • 多维度bvar支持导出prometheus格式数据,如果用户自己拼接key,他自己也需要实现导出prometheus格式的逻辑
  • 以metric为单位控制内部维度组合数量,防止维度爆炸
  • 问一下,您这边应该使用brpc了吧?如果使用的话,辛苦您能更新下brpc在贵公司的落地场景吗?
    另外:建议您订阅[email protected]邮件组,我们会通过邮件沟通和讨论一些技术问题和计划,订阅之后您也能及时了解并参与brpc社区技术讨论。
    订阅方式:发一封邮件给[email protected],然后按照回复邮件点击对应的链接即可订阅。

    FailedNamed

    问一下,您这边应该使用brpc了吧?如果使用的话,辛苦您能更新下brpc在贵公司的落地场景吗? 另外:建议您订阅[email protected]邮件组,我们会通过邮件沟通和讨论一些技术问题和计划,订阅之后您也能及时了解并参与brpc社区技术讨论。 订阅方式:发一封邮件给[email protected],然后按照回复邮件点击对应的链接即可订阅。

    FailedNamed

    问一下,您这边应该使用brpc了吧?如果使用的话,辛苦您能更新下brpc在贵公司的落地场景吗? 另外:建议您订阅[email protected]邮件组,我们会通过邮件沟通和讨论一些技术问题和计划,订阅之后您也能及时了解并参与brpc社区技术讨论。 订阅方式:发一封邮件给[email protected],然后按照回复邮件点击对应的链接即可订阅。