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

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

@飞不起的奥特曼 的部分文档)" title="TOP全异步模式(转贴 @飞不起的奥特曼 的部分文档)" action-data="http%3A%2F%2Fs6.sinaimg.cn%2Fmiddle%2F64178985gb8d86212e675%26690" action-type="show-slide">

半异步的好处

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

半异步的劣势

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

全异步的模式

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

@飞不起的奥特曼 的部分文档)" title="TOP全异步模式(转贴 @飞不起的奥特曼 的部分文档)" action-data="http%3A%2F%2Fs1.sinaimg.cn%2Fmiddle%2F64178985gb8d864608530%26690" action-type="show-slide">

详细方案

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

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

最新文章

  1. Linux下查看磁盘与目录的容量——df、du
  2. TouchPoint.js – 可视化展示 HTML 原型点击效果
  3. 使用 Eclipse C/C++ Development Toolkit 开发应用程序
  4. C#点点滴滴:枚举enum
  5. bzoj2661
  6. [转]Ubuntu Linux 安装 .7z 解压和压缩文件
  7. 数据挖掘之clara算法原理及实例(代码中有bug)
  8. hdu2665-Kth number
  9. struts2.1.6教程八、验证机制
  10. c#中缓存的使用
  11. [mysql] 修复问题表Table '.xxxx' is marked as crashed and should be repaired
  12. Linux系统中将普通用户添加到sudoers
  13. 怎样从外网访问内网MongoDB数据库?
  14. C#的格式化(进制转换|位运算)
  15. LOJ1070(SummerTrainingDay05-B 矩阵快速幂)
  16. kubernetes 一些基本的概念
  17. Vue 进阶教程之:详解 v-model
  18. hugepages_settings.sh
  19. 第一章 持续集成jenkins工具使用之部署
  20. Python学习笔记:第一天python基础

热门文章

  1. Kinect 开发 —— 骨骼追踪(下)
  2. python 数字计算模块 decimal(小数计算)
  3. HTTP (httpwebrequest)
  4. Chrome不能在网易网盘中上传文件的解决办法
  5. ONVIF客户端搜索设备获取rtsp地址开发笔记(精华篇)
  6. (转)Tomcat调优
  7. 微信小程序简单常见首页demo
  8. Android Studio中怎样引用图片资源
  9. [Javascript AST] 0. Introduction: Write a simple BabelJS plugin
  10. PHP盛宴——经常使用函数集锦