You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@hbase.apache.org by 韩聪聪 <wh...@126.com> on 2020/05/14 05:57:13 UTC

关于ServerSideScanMetrics类设计的问题

hi,all
     hbase-client内部有一个类,ServerSideScanMetrics,用以记录客户端和服务器端的统计数据,这个类对外暴露的使用方式有两种
    1. 通过public属性直接获得AtomicLong对象。
    2. 通过addToCounter方法进行使用。
    在我的理解中,这个类可以使用2对外暴露使用方式,而没必要使用1,问题是
    1.为何要设计通过public属性进行访问的方式呢?是因为性能问题吗?(比如直接通过属性访问对象比从map中拿出来更快?)
    2. 是否可以收缩这个类的使用方式,只提供addToCounter等方法访问,并将记录统计数据的AtomicLong以Map的形式管理起来?


Re:Re: 关于ServerSideScanMetrics类设计的问题

Posted by nick <wh...@126.com>.
明白了,之所以现在还保留返回AtomicLong的原因,是因为无法确认用户是否已经在以这种方式使用了,需要向后兼容。
谢谢回复。


在 2020-05-14 14:57:35,"张铎(Duo Zhang)" <pa...@gmail.com> 写道:
>这个东西目前看主要是mapreduce的framework会用,所以暴露了比较多的内部方法,你可以看一下TableRecordReaderImpl的updateCounters方法
>
>理论上说,直接返回AtomicLong肯定是不好的,因为没法控制用户到底怎么操作,但修改一个IA.Public的类总是比较麻烦的,因为很有可能已经有用户在以这种方式使用了。。。
>
>韩聪聪 <wh...@126.com> 于2020年5月14日周四 下午1:57写道:
>
>> hi,all
>>
>>  hbase-client内部有一个类,ServerSideScanMetrics,用以记录客户端和服务器端的统计数据,这个类对外暴露的使用方式有两种
>>     1. 通过public属性直接获得AtomicLong对象。
>>     2. 通过addToCounter方法进行使用。
>>     在我的理解中,这个类可以使用2对外暴露使用方式,而没必要使用1,问题是
>>     1.为何要设计通过public属性进行访问的方式呢?是因为性能问题吗?(比如直接通过属性访问对象比从map中拿出来更快?)
>>     2. 是否可以收缩这个类的使用方式,只提供addToCounter等方法访问,并将记录统计数据的AtomicLong以Map的形式管理起来?
>>
>>

Re: 关于ServerSideScanMetrics类设计的问题

Posted by "张铎 (Duo Zhang)" <pa...@gmail.com>.
这个东西目前看主要是mapreduce的framework会用,所以暴露了比较多的内部方法,你可以看一下TableRecordReaderImpl的updateCounters方法

理论上说,直接返回AtomicLong肯定是不好的,因为没法控制用户到底怎么操作,但修改一个IA.Public的类总是比较麻烦的,因为很有可能已经有用户在以这种方式使用了。。。

韩聪聪 <wh...@126.com> 于2020年5月14日周四 下午1:57写道:

> hi,all
>
>  hbase-client内部有一个类,ServerSideScanMetrics,用以记录客户端和服务器端的统计数据,这个类对外暴露的使用方式有两种
>     1. 通过public属性直接获得AtomicLong对象。
>     2. 通过addToCounter方法进行使用。
>     在我的理解中,这个类可以使用2对外暴露使用方式,而没必要使用1,问题是
>     1.为何要设计通过public属性进行访问的方式呢?是因为性能问题吗?(比如直接通过属性访问对象比从map中拿出来更快?)
>     2. 是否可以收缩这个类的使用方式,只提供addToCounter等方法访问,并将记录统计数据的AtomicLong以Map的形式管理起来?
>
>