本地存根

远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 API 中带上 Stub,客户端生成 Proxy 实例,会把 Proxy 通过构造函数传给 Stub ,然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy。Stub 必须有可传入 Proxy 的构造函数。

本地存根执行方法

public class UserServiceStub implements UserService {

    private final UserService userService;
    public UserServiceStub(UserService userService) {
        // TODO Auto-generated constructor stub
        this.userService = userService;
    }
    @Override
    public List<UserAddress> getUserAddressList(String userId) {
        // TODO Auto-generated method stub
        System.out.println("调用本地存根");
        if(StringUtils.isEmpty(userId)){
            return userService.getUserAddressList(userId);
        }else{
            return null;
        }
    }
}

配置文件

<dubbo:reference interface="com.moon.user_service_gmall.service.UserService"
        id="userService" timeout="3000" retries="3" version="*" stub="com.moon.service.UserServiceStub">
        <dubbo:method name="getUserAddressList" timeout="2000"></dubbo:method>
</dubbo:reference>

原文地址:https://www.cnblogs.com/menbo/p/11002200.html

时间: 2024-11-09 03:12:28

本地存根的相关文章

dubbo之本地存根

本地存根 远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 API 中带上 Stub,客户端生成 Proxy 实例,会把 Proxy 通过构造函数传给 Stub ,然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy. 在 spring 配置文件中按以下方式配置: <dubbo:service interface="com.foo.

dubbo的本地存根(Stub)

dubbo的本地存根的原理是:远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,那么就在服务消费者这一端提供了一个Stub类,然后当消费者调用provider方提供的dubbo服务时,客户端生成 Proxy 实例,这个Proxy实例就是我们正常调用dubbo远程服务要生成的代理实例,然后消费者这方会把 Proxy 通过构造函数传给 消费者方的Stub ,然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy.会通过代理类去完成这个调用

dubbo源码阅读-ProxyFactory(十一)之StubProxyFactoryWrapper本地存根

说明 Wrapper调用时机可以看:https://www.cnblogs.com/LQBlog/p/12470179.html#autoid-2-0-0 /** * StubProxyFactoryWrapper */ public class StubProxyFactoryWrapper implements ProxyFactory { private static final Logger LOGGER = LoggerFactory.getLogger(StubProxyFactor

初识Dubbo 系列之5-Dubbo 成熟度

成熟度 功能成熟度 Feature特征 Maturity成熟度 Strength强度 Problem问题 Advise建议 User用户 并发控制 Tested 并发控制   试用   连接控制 Tested 连接数控制   试用   直连提供者 Tested 点对点直连服务提供方,用于測试   測试环境使用 Alibaba 分组聚合 Tested 分组聚合返回值,用于菜单聚合等服务 特殊场景使用 可用于生产环境   參数验证 Tested 參数验证.JSR303验证框架集成 对性能有影响 试用

从头开始搭建一个dubbo+zookeeper平台 【转】

本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用.   注册中心的选择   dubbo支持多种类型的注册中心: 这里我们选择zookeeper,其实类型的优点缺点可详细查看文档. 1:zookeeper的安装,还是采用docker这一招鲜的run命令来安装zookeeper docker run -dit --name zookeeper --hostname zookeeper-host -v /data:/data -p 2181

NFS学习

NFS : Network File System  网络文件系统 sun公司 版本   NFSv2 NFSv3 NSFv4 RPC : Remote Procedure Call Protocol  远程过程调用协议,编程技术,简化分布式应用程序的 开发 工作原理:当地请求调用内核文件系统,内核文件系统发现请求的是远程网络的文件系统(NFS)时 ,内核会向本地存根发起请求,本地存根向远程RPC服务请求数据,RPC服务器处理返回本地存根对 应的NFS服务端口,本地存根请求对应端口的NFS服务,N

从头开始搭建一个dubbo+zookeeper平台

本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后的常规方案演进历程. 其次,当服务越来越多之后,我们需要做哪些服务治理? 最后,是dubbo的架构图   注册中心的选择   dubbo支持多种类型的注册中心: Multicast注册中心 Zookeeper注册中心 Redis注册中心 Simple注册中心 这里我们选择zookeeper,其实类型

java rmi浅谈

首先比较下RPC和RMI的差别: 首先java提供了RMI的api,jdk1.5之后虚拟机自动生成两个类:存根类stub和骨架类skelton. stub是给客户端的,当客户端调用远程对象的一个方法时,实际上是调用本地存根对象的相应方法.skelton负责在服务端为远程对象接受客户端的请求.RMI必须要有JVM支持,所以,如果C,S都使用java开发,可以考虑使用RMI. RPC可以跨语言,客户端请求参数中就带有需要调用的类,方法及参数 -----------------------------

【详解】Dubbo的原理以及详细原理、配置

Dubbo的背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. Dubbo的应用 用于大规模服务化,通过在消费方获取服务提供方地址列表,实现软负载均衡,减轻硬件压力. 架构 最简单调用图 节点角色说明: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. Monitor: 统计服务的调用次调和调用时间的