学习 nacos 代码编程-1

今天开始研读nacos 代码,学习一下。

读到  com.alibaba.nacos.client.config.http.HttpAgent 时发现一个特点,该接口有两个实现类。

MetricsHttpAgent:

度量类,实现了父类的方法,重新调用当前方法。在掉用当前方法前做一些异常处理及参数获取

@Override
    public HttpResult httpGet(String path, List<String> headers, List<String> paramValues, String encoding, long readTimeoutMs) throws IOException {
        Histogram.Timer timer = MetricsMonitor.getConfigRequestMonitor("GET", path, "NA");
        HttpResult result = null;
        try {
            result = httpAgent.httpGet(path, headers, paramValues, encoding, readTimeoutMs);
        } catch (IOException e) {
            throw e;
        } finally {
            timer.observeDuration();
            timer.close();
        }

        return result;
    }

ServerHttpAgent:

实际的业务逻辑的实现类,类中同样出现异常时同样会进行捕获,但对于出现业务逻辑不符合预期时会直接抛出异常

我的的感受:

最近在写公司代码的时候有点难受,针对于微服务的方法调用的时候,会对返回的实体进行封装,组成规范的返回对象实体。

但是服务调用本身从封装实体再去获取实际想要的实体,中间多了一层逻辑,我个人觉得很变扭。

跟同事沟通后,赞同当前做法,对查询出的实体进行封装成对边的标准实体  即  有返回code,result,success 一些列值的实体

 

针对于服务调用,对方更喜欢你返回结果带有编码,我只需要根据你返回的编码进行判断即可。

同样在  服务调用的API实现类中 我们需要进行异常捕获  保证返回给业务方式一个实体对象,不是一对乱七八糟的异常编码。

这里就涉及到了业务异常的抛出,我相信很多人都跟我一样喜欢直接抛出业务异常,而不是封装一个对象。然后在最外层直接进行异常的捕获,代码简洁明了,很舒适。

针对于当前nacos的编码规范:

总结,服务的调用的实现方法必须异常捕获,保证使用者的用户体验,针对不同的业务异常进行捕获返回对象。

 

 

 

发布了11 篇原创文章 · 获赞 3 · 访问量 462
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章