<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

## Describe the proposal
<!-- Please use this for a concrete design proposal for functionality. -->
<!-- If you just want to request a new feature and discuss the possible business value, create a Feature Request. -->

@Override
    public void onEvent(RequestEvent event) {
        MethodMetric metric = calcWindowCounter(event, MetricsKey.METRIC_REQUESTS);
        TimeWindowCounter qpsCounter = ConcurrentHashMapUtils.computeIfAbsent(qps, metric, methodMetric -> new TimeWindowCounter(bucketNum, timeWindowSeconds));
        qpsCounter.increment();
    }
    @Override
    public void onEventFinish(RequestEvent event) {
        MetricsKey targetKey = MetricsKey.METRIC_REQUESTS_SUCCEED;
        Object throwableObj = event.getAttachmentValue(METRIC_THROWABLE);
        if (throwableObj != null) {
            targetKey = MetricsSupport.getAggMetricsKey((Throwable) throwableObj);
        }
        calcWindowCounter(event, targetKey);
        onRTEvent(event);
    }
    @Override
    public void onEventError(RequestEvent event) {
        MetricsKey targetKey = MetricsKey.METRIC_REQUESTS_FAILED;
        Object throwableObj = event.getAttachmentValue(METRIC_THROWABLE);
        if (throwableObj != null) {
            targetKey = MetricsSupport.getAggMetricsKey((Throwable) throwableObj);
        }
        calcWindowCounter(event, targetKey);
        onRTEvent(event);
    }
    private void onRTEvent(RequestEvent event) {
        MethodMetric metric = new MethodMetric(applicationModel, event.getAttachmentValue(MetricsConstants.INVOCATION));
        long responseTime = event.getTimePair().calc();
        TimeWindowQuantile quantile = ConcurrentHashMapUtils.computeIfAbsent(rt, metric, k -> new TimeWindowQuantile(DEFAULT_COMPRESSION, bucketNum, timeWindowSeconds));