Dubbo第三次课

  1. 前情回顾:
    1、集群容错:
    a、<dubbo:service cluster=“failover” retries=/> 提供方配置,当调用一个服务失败之后,切换到另外一个服务,retries可以设置重试次数,适用于幂等操作。
    b、failFast 当调用服务失败后,不再调用其他服务,适用于非幂等操作。
    c、failsafe 调用失败之后忽略。
    2、负载均衡:loadbalance=“random,roundrobin,leastactive”.
    3、缓存配置 cache=“lur/theadlocal”
    4、异步调用。RpcContext.getContext.getFutrue().get();

2、本堂课内容:
a、dubbo常用标签。
b、工作中使用异步、事件触发、泛化调用、回声测试。
c、dubbo 初始化过程
Future模式学习
异步:(解决耗时)不方便管理
RpcContext.getContext.getFutrue().get();
在这里插入图片描述
回调:(在消费方配置,callBack类为spring容器中注入的bean 对象)回调对象接收的方法onOrderSubmit(arg1,arg2),arg1 为返回结果,arg2为调用方法的入参,正常:onReturn 异常时:onThrow

在这里插入图片描述
回声测试:(在项目开发完成后,上线测试是否所有的服务器已经启动完成)
原理:所有的rpc引用的代理对象,都实现了接口EchoService,所有dubbo bean 都可以转换成EchoService。
实现:定义dubbo bean 中的id ,EchoService echo = ctx.getBean(id); String ret = echo.$echo(“ok”); ret为测试结果返回,由此来判断reference是否就绪。

Dubbo的泛化调用:(向上抽象,没有mall-support接口的支持,A项目打算调用B项目的接口描述,想要完成rpc调用)
思路:利用反射,不知道class内部,知道class路径。
实现: 在消费者中引用

<dubbo:reference id= "otherService" interface=""com.enjoy.OtherService" generic=true/>

GenericService gen = (GenricService) ctx.getBean("otherService");
Object ret = gen.invoke("methodName",new String[]{"java.lang.String"},new Object[]{"name"});
//第一个参数为方法名称,第二个为入参参数,第三个为参数对象。
ctx的获取

public class TestController implements ApplicationContextAware{
private ApplicationContext ctx;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    ctx = applicationContext;
}
}

RPC调度服务调度过程:
服务端暴露(中转对象):为服务创建一个中转对象(能接触网络请求信息/调用本地方法)
服务端引入(代理对象):在消费者端建立一个代理对象,专职来发送接口信息给中转对象

在这里插入图片描述
doExport中,会遍历所有的协议进行提供方的暴露。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值