码迷,mamicode.com
首页 > 其他好文 > 详细

不同服务调用方式的比较

时间:2017-06-21 15:58:37      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:监听器   序列化   构造   监听   消息   异步发送   框架   技术分享   通信   

1.同步服务调用

技术分享

上图是同步调用的原理图,用户线程在完成消息序列化之后,把消息投递到通信框架,然后同步阻塞,等待通信线程发送

请求并接收到应答之后,唤醒用户同步阻塞的线程,用户线程获取到应答后返回。

2.异步服务调用

异步调用是基于JDK的Future机制,Future代表了异步操作的结果,用户可以通过调用它的get方法获取结果。

技术分享

 

原理如图所示。

1.消费者调用服务端发布接口,接口调用由服务框架封装成动态代理,发起远程服务调用。

2.通信框架异步发送消息,如果没有发生I/O异常,返回。

3.消息发送成功,I/O线程构造Future对象,设置到RPC上下文中。

4.用户线程通过RPC上下文获取Future对象。

5.构造Listener对象,将其添加到Future中,用于应答服务端异步回调通知。

6.用户线程返回,不阻塞等待应答。

7.服务端返回应答消息,通信框架反序列化等。

8.I/O将应答设置到Future对象的操作结果中。

9.Future对象扫描注册监听器列表,将结果通知给监听器,监听器获取到结果之后,继续后续业务逻辑的执行。异步调用结束。

不同服务调用方式的比较

标签:监听器   序列化   构造   监听   消息   异步发送   框架   技术分享   通信   

原文地址:http://www.cnblogs.com/zhangjwcode/p/7059856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!