brpc组件bvar源码解析(三)Variable、Reducer和Adder

本文详细解读了Variable类的描述和曝光功能,以及Reducer类如何实现累加和采样。重点介绍了expose_impl函数、Adder类及其在bvar管理中的作用。

1.Variable类

Variable是所有bvar的基类,是一个纯虚类。拥有的唯一的成员变量是_name。

Variable类中的接口分为几类:

  1. 描述相关的
    在这里插入图片描述
    子类实现纯虚函数describe,目的是将bvar的值写入ostream。

get_description不是纯虚函数,它调用了describe写入ostringstream,返回ostringstream的string。

  1. 曝光相关的
    例如:expose,expose_impl,expose_as,list_exposed,count_exposed,describe_exposed,dump_exposed等。核心是expose_impl,下文介绍。

函数expose_impl

在这里插入图片描述
函数expose_impl是实现曝光的核心逻辑。所谓“曝光”就是把bvar的地址存到一个公共的map中,以便后续可以遍历和查询到。

具体的做法是:
(1)根据prefix+name生成统一格式的曝光名称_name:非字母、非数字的全部转成下划线
(2)根据(1)生成的曝光名称_name查询所属的VarMapWithLock:
首先对_name进行了简单的hash,然后对VarMapWithLock数组s_var_maps的长度SUB_MAP_COUNT取模得到i,返回s_var_maps的第i个成员。这里这么做的目的是为了减少VarMapWithLock

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值