Dubbo学习(十):异步调用
来源:互联网 发布:鉴定古书软件 编辑:程序博客网 时间:2024/05/22 17:35
一.异步调用和同步调用的区别
我们知道,常见的方法调用都是同步调用,这种调用方式是一种阻塞式的调用方式,即客户端(主调用方)代码一直阻塞等待直到被服务端(被调用方)返回 为止。这种调用方式相对比较直观,也是大部分编程语言直接支持的一种调用方式。但是,如果我们面对是基于粗粒度的服务组件,面对的是一些需要比较长时间才 能有响应的应用场景,那么我们就需要一种非阻塞式调用方式,即异步调用方式。
SCA编程模式提供了三种方式的异步调用,它们分别是:
1. 单向调用方式。
2. 延迟响应方式。
3. 请求回调方式。
单向调用
单向调用方式是最为简单的异步调用方式,在这种调用方式中,客户端发出请求之后就不再关心服务端的情况,包括是否执行成功,返回值是什么等等。我们可以用下面的图 4示来描述这种单向调用方式:
图 4: 单向调用
单向调用方式是一种不管调用结果的方式,但是在很多情况下我们是需要知道调用结果的。我们需要知道调用是否成功,需要知道调用的结果,就算调用失败我们也希望知道错误代码等信息。在这种情况下,延迟响应和请求回调就是两种能够让我们知道调用结果的方式。
延迟响应方式
延迟响应方式是指客户端在发出调用请求之后继续执行,但是经过一段时间之后,客户端再调用相应的方法去检索返回结果,并通过参数指定如何根据 调用的 结果而执行进一步动作。由于是异步调用方式,因此,在第一次发出调用请求的时候,服务端需要返回一个称为票据(Ticket)的对象。这个对象会作为第二 次发出检索结果请求时的一个参数。显然,这个Ticket对象的作用与WEB编程的SessionID非常类似。我们可以用图 5 来表示延迟相应调用方式:
二.dubbo的异步调用
注:如果两个任务都比较耗时,同时这两个代码又没有关联,这可以采用异步调用,让这两个任务同时执行
例子:
一个线程要调用两个方法,一个方法要执行3S,另一个要执行8S,如果是同步调用个的话,至少要11S,但是如果异步调用的话只要8秒
- Dubbo学习(十):异步调用
- 淘宝SOA框架dubbo学习--异步调用
- dubbo 使用学习八(异步调用)
- dubbo 使用学习八(异步调用
- Dubbo异步调用
- Dubbo-----异步调用
- dubbo异步调用
- Dubbo异步方法调用里有个坑
- dubbo异步调用的bug
- dubbo学习笔记 十 dubbo-rpc
- hsf dubbo学习六--泛化,回声测试,上下文信息,隐式传参,异步调用,本地调用
- DUBBO研究与学习二:打基础-同步调用、回调和异步调用区别
- dubbo异步同步调用混合使用问题
- Dubbo异步方法调用里的问题
- dubbo使用异步方式调用对象
- dubbo异步调用三种方式
- Dubbo学习(三)服务调用
- dubbo异步调用传递性问题的解决方案
- Android MVP&依赖注入&单元测试
- 设计模式之---责任链模式(Chain of Responsibility)
- Android百度地图,定位图标随着方向的改变而改变
- 安卓 为view每条边指定不同的边框
- 一小时了解数据挖掘⑥数据挖掘的评估和结果可视化展示
- Dubbo学习(十):异步调用
- JAVA多线程与并发学习总结
- Android中Drawable和Bitmap的区别及互相转化
- android进程间通信:AIDL
- 欢迎使用CSDN-markdown编辑器
- Linux中的15个‘echo’ 命令实例
- 关于如何使用eclipse创建web项目——整个流程的概述
- Activity堆栈管理
- 【BZOJ1441】Min【裴蜀定理】