@Entrance
    public final void combine(@SourceFrom int value, @Arg int step, @Arg int maxNumOfSteps) {
        if (!dataset.hasData()) {
            for (int i = 0; i <= maxNumOfSteps; i++) {
                String key = String.valueOf(i * step);
                dataset.put(key, 0L);
            }
        }

        int index = value / step;
        if (index > maxNumOfSteps) {
            index = maxNumOfSteps;
        }
        String idx = String.valueOf(index * step);

        dataset.valueAccumulation(idx, 1L);
    }
Data will be grouped in
<pre>
key = 0, represents [0, 100), value = count of requests in the latency range.
key = 100, represents [100, 200), value = count of requests in the latency range.
...
key = step * maxNumOfSteps, represents [step * maxNumOfSteps, MAX)
</pre>

@param step          the size of each step. A positive integer.
@param maxNumOfSteps Steps are used to group incoming value.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/HistogramMetrics.java