Soul源码中dubbo和sofa的执行过程

时间:2021-01-28 12:22:27   收藏:0   阅读:0

Soul源码中dubbo和sofa的执行过程

Soul源码中dubbo的执行过程

技术图片

通过泛化调用,调用的实际上是zk内的某个service然后异步获取结果。将结果,封装到具体的字段中,然后返回给前端

整个过程中对于接口的缓存的处理与http的请求基本相同,从这里就可以看出soul的设计的情况非常好

Soul源码中Sofa项目的执行过程

        genericService.$invoke(metaData.getMethodName(), pair.getLeft(), pair.getRight());
        return Mono.fromFuture(future.thenApply(ret -> {
            if (Objects.isNull(ret)) {
                ret = Constants.SOFA_RPC_RESULT_EMPTY;
            }
            exchange.getAttributes().put(Constants.SOFA_RPC_RESULT, ret);
            exchange.getAttributes().put(Constants.CLIENT_RESPONSE_RESULT_TYPE, ResultEnum.SUCCESS.getName());
            return ret;
        })).onErrorMap(SoulException::new);

关于ApacheDubboServiceBeanPostProcessor并不是实现的BeanPostProcessor接口而是实现的ApplicationListener 的问题

在类中的onApplicationEvent中有对应issue中有对应的https://github.com/dromara/soul/issues/415答疑,主要是上传的顺序跟dubbo暴露的顺序问题导致的。使用beanPostProcessor可能导致no provider的情况。

欢迎搜索关注本人与朋友共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】,以及总结的分类面试题https://github.com/zhendiao/JavaInterview

技术图片
技术图片

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!