TOP全异步模式
2024-09-21 14:01:35
Top全异步方式调用技术方案
背景:目前top通过servlet3.0技术结合异步管道化框架做到半异步调用,半异步调用采用异步线程同步调用后端的方式来做api
call
半异步的好处
在异步线程使用的是权重线程池,在异步线程的资源分配上做到可控,通过这个我们可以做到一个ISP发生问题,不会影响其他的ISP的调用,做到服务隔离的目的。
半异步的劣势
采用半异步的方式,虽然可以做到服务隔离,但是异步线程还是同步调用后端,也就是说在一次后端的API
call的过程中还是消耗了我们的一个线程。在后端很快响应的情况下,这个是没关系的,但是如果某个ISP的服务如果真的一次call的时间就需要好几秒才可以返回(支付宝的API有这个要求),那么我们的异步线程也会被消耗好几秒,但这种消耗是完全没有必要的。
全异步的模式
全异步的模式,基于的是后端的call可以异步的方式,目前我们调用后端ISP主要是http透传和HSF,这两种方式正好都可以异步。那么,异步call的方法下,我们的调用变为
详细方案
基于我们的异步框架的几种pipe异步场景,原来使用的是 Ansy模式,将execute
pip的管道属性配置成为Ansy,这样这个管道的执行就会交由权重线程池另起线程执行。
新的全异步方式,Execute pipe将被配置为condition模式,在dopipe中调用HSF或者HTTP异步客户端,发起异步请求,同时设置回调函数,然后结束,这时pipe会被挂起。当调用成功拿到结果后,HSF或者HTTP客户端会回调我们设置的回调函数,在回调函数中,我们调用event.complete()结束挂起的pipe,这样权重线程池会再调用接下来的pipe,直到请求结束。
最新文章
- Linux下查看磁盘与目录的容量——df、du
- TouchPoint.js – 可视化展示 HTML 原型点击效果
- 使用 Eclipse C/C++ Development Toolkit 开发应用程序
- C#点点滴滴:枚举enum
- bzoj2661
- [转]Ubuntu Linux 安装 .7z 解压和压缩文件
- 数据挖掘之clara算法原理及实例(代码中有bug)
- hdu2665-Kth number
- struts2.1.6教程八、验证机制
- c#中缓存的使用
- [mysql] 修复问题表Table '.xxxx' is marked as crashed and should be repaired
- Linux系统中将普通用户添加到sudoers
- 怎样从外网访问内网MongoDB数据库?
- C#的格式化(进制转换|位运算)
- LOJ1070(SummerTrainingDay05-B 矩阵快速幂)
- kubernetes 一些基本的概念
- Vue 进阶教程之:详解 v-model
- hugepages_settings.sh
- 第一章 持续集成jenkins工具使用之部署
- Python学习笔记:第一天python基础
热门文章
- Kinect 开发 —— 骨骼追踪(下)
- python 数字计算模块 decimal(小数计算)
- HTTP (httpwebrequest)
- Chrome不能在网易网盘中上传文件的解决办法
- ONVIF客户端搜索设备获取rtsp地址开发笔记(精华篇)
- (转)Tomcat调优
- 微信小程序简单常见首页demo
- Android Studio中怎样引用图片资源
- [Javascript AST] 0. Introduction: Write a simple BabelJS plugin
- PHP盛宴——经常使用函数集锦