TOP全异步模式

Top全异步方式调用技术方案

 

背景:目前top通过servlet3.0技术结合异步管道化框架做到半异步调用,半异步调用采用异步线程同步调用后端的方式来做api call

TOP全异步模式(转贴 <wbr>@飞不起的奥特曼 <wbr>的部分文档)

 

 

半异步的好处

在异步线程使用的是权重线程池,在异步线程的资源分配上做到可控,通过这个我们可以做到一个ISP发生问题,不会影响其他的ISP的调用,做到服务隔离的目的。

半异步的劣势

       采用半异步的方式,虽然可以做到服务隔离,但是异步线程还是同步调用后端,也就是说在一次后端的API call的过程中还是消耗了我们的一个线程。在后端很快响应的情况下,这个是没关系的,但是如果某个ISP的服务如果真的一次call的时间就需要好几秒才可以返回(支付宝的API有这个要求),那么我们的异步线程也会被消耗好几秒,但这种消耗是完全没有必要的。

 

全异步的模式

       全异步的模式,基于的是后端的call可以异步的方式,目前我们调用后端ISP主要是http透传和HSF,这两种方式正好都可以异步。那么,异步call的方法下,我们的调用变为

TOP全异步模式(转贴 <wbr>@飞不起的奥特曼 <wbr>的部分文档)

详细方案

       基于我们的异步框架的几种pipe异步场景,原来使用的是 Ansy模式,将execute pip的管道属性配置成为Ansy,这样这个管道的执行就会交由权重线程池另起线程执行。

    新的全异步方式,Execute pipe将被配置为condition模式,在dopipe中调用HSF或者HTTP异步客户端,发起异步请求,同时设置回调函数,然后结束,这时pipe会被挂起。当调用成功拿到结果后,HSF或者HTTP客户端会回调我们设置的回调函数,在回调函数中,我们调用event.complete()结束挂起的pipe,这样权重线程池会再调用接下来的pipe,直到请求结束。

posted @ 2018-08-06 10:30  星朝  阅读(463)  评论(0编辑  收藏  举报