13
13
14
14
package com .baidu .bifromq .basekv .localengine ;
15
15
16
- import static com .baidu .bifromq .basekv .localengine .metrics .KVSpaceMeters .getTimer ;
17
-
18
- import com .baidu .bifromq .basekv .localengine .metrics .KVSpaceMetric ;
16
+ import com .baidu .bifromq .basekv .localengine .metrics .KVSpaceOpMeters ;
19
17
import com .baidu .bifromq .basekv .proto .Boundary ;
20
- import com .baidu .bifromq .logger .SiftLogger ;
21
18
import com .google .protobuf .ByteString ;
22
- import io .micrometer .core .instrument .Tags ;
23
- import io .micrometer .core .instrument .Timer ;
24
- import java .util .ArrayList ;
25
- import java .util .Arrays ;
26
- import java .util .List ;
27
19
import java .util .Optional ;
28
20
import org .slf4j .Logger ;
29
21
30
22
public abstract class AbstractKVSpaceReader implements IKVSpaceReader {
31
- protected final Logger log ;
32
23
protected final String id ;
33
- protected final String [] metricTags ;
34
- private final MetricManager metricMgr ;
24
+ protected final KVSpaceOpMeters opMeters ;
25
+ protected final Logger logger ;
35
26
36
- protected AbstractKVSpaceReader (String id , String ... tags ) {
27
+ protected AbstractKVSpaceReader (String id , KVSpaceOpMeters opMeters , Logger logger ) {
37
28
this .id = id ;
38
- List <String > allTags = new ArrayList <>(Arrays .asList (tags ));
39
- allTags .add ("spaceId" );
40
- allTags .add (id );
41
- this .metricTags = allTags .toArray (String []::new );
42
- this .metricMgr = new MetricManager (Tags .of (metricTags ));
43
- this .log = SiftLogger .getLogger (getClass (), allTags .toArray (String []::new ));
29
+ this .opMeters = opMeters ;
30
+ this .logger = logger ;
44
31
}
45
32
46
33
@ Override
@@ -50,7 +37,7 @@ public final String id() {
50
37
51
38
@ Override
52
39
public final Optional <ByteString > metadata (ByteString metaKey ) {
53
- return metricMgr .metadataCallTimer .record (() -> doMetadata (metaKey ));
40
+ return opMeters .metadataCallTimer .record (() -> doMetadata (metaKey ));
54
41
}
55
42
56
43
protected abstract Optional <ByteString > doMetadata (ByteString metaKey );
@@ -62,35 +49,35 @@ public final long size() {
62
49
63
50
@ Override
64
51
public final long size (Boundary boundary ) {
65
- return metricMgr .sizeCallTimer .record (() -> doSize (boundary ));
52
+ return opMeters .sizeCallTimer .record (() -> doSize (boundary ));
66
53
}
67
54
68
55
protected abstract long doSize (Boundary boundary );
69
56
70
57
@ Override
71
58
public final boolean exist (ByteString key ) {
72
- return metricMgr .existCallTimer .record (() -> doExist (key ));
59
+ return opMeters .existCallTimer .record (() -> doExist (key ));
73
60
}
74
61
75
62
protected abstract boolean doExist (ByteString key );
76
63
77
64
@ Override
78
65
public final Optional <ByteString > get (ByteString key ) {
79
- return metricMgr .getCallTimer .record (() -> doGet (key ));
66
+ return opMeters .getCallTimer .record (() -> doGet (key ));
80
67
}
81
68
82
69
protected abstract Optional <ByteString > doGet (ByteString key );
83
70
84
71
@ Override
85
72
public final IKVSpaceIterator newIterator () {
86
- return metricMgr .iterNewCallTimer .record (() -> new MonitoredKeyRangeIterator (doNewIterator ()));
73
+ return opMeters .iterNewCallTimer .record (() -> new MonitoredKeyRangeIterator (doNewIterator ()));
87
74
}
88
75
89
76
protected abstract IKVSpaceIterator doNewIterator ();
90
77
91
78
@ Override
92
79
public final IKVSpaceIterator newIterator (Boundary subBoundary ) {
93
- return metricMgr .iterNewCallTimer .record (() -> new MonitoredKeyRangeIterator (doNewIterator (subBoundary )));
80
+ return opMeters .iterNewCallTimer .record (() -> new MonitoredKeyRangeIterator (doNewIterator (subBoundary )));
94
81
}
95
82
96
83
protected abstract IKVSpaceIterator doNewIterator (Boundary subBoundary );
@@ -119,74 +106,42 @@ public boolean isValid() {
119
106
120
107
@ Override
121
108
public void next () {
122
- metricMgr .iterNextCallTimer .record (delegate ::next );
109
+ opMeters .iterNextCallTimer .record (delegate ::next );
123
110
}
124
111
125
112
@ Override
126
113
public void prev () {
127
- metricMgr .iterPrevCallTimer .record (delegate ::prev );
114
+ opMeters .iterPrevCallTimer .record (delegate ::prev );
128
115
}
129
116
130
117
@ Override
131
118
public void seekToFirst () {
132
- metricMgr .iterSeekToFirstCallTimer .record (delegate ::seekToFirst );
119
+ opMeters .iterSeekToFirstCallTimer .record (delegate ::seekToFirst );
133
120
}
134
121
135
122
@ Override
136
123
public void seekToLast () {
137
- metricMgr .iterSeekToLastCallTimer .record (delegate ::seekToLast );
124
+ opMeters .iterSeekToLastCallTimer .record (delegate ::seekToLast );
138
125
}
139
126
140
127
@ Override
141
128
public void seek (ByteString target ) {
142
- metricMgr .iterSeekCallTimer .record (() -> delegate .seek (target ));
129
+ opMeters .iterSeekCallTimer .record (() -> delegate .seek (target ));
143
130
}
144
131
145
132
@ Override
146
133
public void seekForPrev (ByteString target ) {
147
- metricMgr .iterSeekForPrevCallTimer .record (() -> delegate .seekForPrev (target ));
134
+ opMeters .iterSeekForPrevCallTimer .record (() -> delegate .seekForPrev (target ));
148
135
}
149
136
150
137
@ Override
151
138
public void refresh () {
152
- metricMgr .iterRefreshTimer .record (delegate ::refresh );
139
+ opMeters .iterRefreshTimer .record (delegate ::refresh );
153
140
}
154
141
155
142
@ Override
156
143
public void close () {
157
144
delegate .close ();
158
145
}
159
146
}
160
-
161
- private class MetricManager {
162
- private final Timer metadataCallTimer ;
163
- private final Timer sizeCallTimer ;
164
- private final Timer existCallTimer ;
165
- private final Timer getCallTimer ;
166
- private final Timer iterNewCallTimer ;
167
- private final Timer iterSeekCallTimer ;
168
- private final Timer iterSeekForPrevCallTimer ;
169
- private final Timer iterSeekToFirstCallTimer ;
170
- private final Timer iterSeekToLastCallTimer ;
171
- private final Timer iterNextCallTimer ;
172
- private final Timer iterPrevCallTimer ;
173
- private final Timer iterRefreshTimer ;
174
-
175
- MetricManager (Tags tags ) {
176
- metadataCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "metadata" ));
177
-
178
- sizeCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "size" ));
179
- existCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "exist" ));
180
- getCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "get" ));
181
- iterNewCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "newitr" ));
182
-
183
- iterSeekCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "seek" ));
184
- iterSeekForPrevCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "pseek" ));
185
- iterSeekToFirstCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "fseek" ));
186
- iterSeekToLastCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "lseek" ));
187
- iterNextCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "next" ));
188
- iterPrevCallTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "prev" ));
189
- iterRefreshTimer = getTimer (id , KVSpaceMetric .CallTimer , tags .and ("op" , "refresh" ));
190
- }
191
- }
192
147
}
0 commit comments