本地存根|学习笔记

简介: 快速学习本地存根

开发者学堂课程【阿里巴巴分布式服务框架 Dubbo 快速入门本地存根】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/624/detail/9470


本地存根


服务的消费者 consumer 要调用服务提供者 provider 的功能,它们是远程调用,而功能的实现都在 provider 这一段,consumer 相当于只有远程的接口,每次需要调用,都要连接 provider 来调用实现,有时想真正调用之前,可能需要做一些参数验证,做一些缓存,这样就可以编写一个本地存根。

远程引用的接口在服务消费者本地也有本地代码,本地存根代码调用之前,需做一些判断或做一些小功能,若满足需要的要求,再去运用远程代理对象调远程服务,若不满足,就可以不调用。

上述需要怎么做?

我们只需要在消费方写一个远程接口的本地存根实现,必须有一个有参构造器,有参构造器传入远程接口的代理实现,这是 dubbo 默认传进来的。

当判断执行通过以后,再来调用代码,这段代码相当于调用远程服务真正的功能。

代码为

//构造函数传入真正的远程代理对象

public (BarService  barService ){

this.barService=barService;

}

public String sayHello(String name){

//此代码在客户端执行,你可以在客户端做 ThreadLocal 本地缓存,或预先验证参数是否合法,等等

try{

return barService.sayHello(name);

}catch(Exception e){

//你可以容错,可以做任何 AOP 拦截事项

Return“容错数据”;

进行实验:

Order-service 的实现,想要调 user-service,在本地名称先写 UserserviceStub,并在本地存根实现 user-service 接口。

在 USerservice 接口实现后,有一个方法,

// TODO Auto-generated method stub

Private final UserService usrService;

//注入 USerService

并使用有参构造器的方式(如下图)

image.pngimage.png

此时 dubbo 自动创建本地存根对象

*//传入 Userservice 远程代理对象

*@param userService

此时可在本地存根里获取用户地址列表

@Override

public List getUserAddressList(String userId){

//TODO Auto-generated method stub

If(!StringUtils.isEmpty(userId)){

return  userService.getUserAddressList(userId);

}

//若 userId 不是空串,进行远程调用

return null;

}

//否则 return 成空的

可以有一个本地存根的实现,可在之前做一些小验证,写好之后需要配置

<!--配置本地存根-->

<dubbo:reference interface=”com.atguigu.gmall.service.UserService”

id=”userService” timeout=”5000” retries=”3” version=”*” stub=”com.atguigu.gmall.service.imp.UserServiceStub”

运行期间,若本地存根代码被调用,代码为

@Override

public  List getUserAddressList(String userId){

//TODO Auto-generated method stub

System.out,print(“UserserviceStub……”)

If(!StringUtils.isEmpty(userId)){

return  userService.getUserAddressList(userId);

}

进行测试:

运行 main 方法

image.png

本地存根确实被调用,调用后才进行调用远程的服务,判断通过了。

本地存根实际在开发中应该放在接口处,接口远程的实现在另外一个工程里,但在调用远程实现前,可把本地存根代码放进来。

相关文章
|
消息中间件 存储 NoSQL
|
消息中间件 Dubbo 算法
总结|学习笔记
快速学习总结
总结|学习笔记
|
SQL 运维 监控
小打卡|学习笔记
快速学习小打卡
小打卡|学习笔记
|
Java 开发工具 C++
notepad++ 介绍|学习笔记
快速学习 notepad++ 介绍
notepad++ 介绍|学习笔记
|
JSON 分布式计算 Hadoop
boolQuery | 学习笔记
快速学习 boolQuery
boolQuery | 学习笔记
|
分布式计算 算法 Hadoop
fuzzyQuery | 学习笔记
快速学习 fuzzyQuery
fuzzyQuery | 学习笔记
|
负载均衡 开发者 索引
replicas | 学习笔记
快速学习 replicas
replicas | 学习笔记
|
弹性计算 缓存 Linux
使用 syncthing | 学习笔记
快速学习使用 syncthing,介绍了使用 syncthing 系统机制, 以及在实际应用过程中如何使用。
使用 syncthing | 学习笔记
|
Arthas 监控 测试技术
下一篇
无影云桌面