异步连接池整理Step1
来源:互联网 发布:网络爬虫 翻译 编辑:程序博客网 时间:2024/04/30 01:45
1. 调用入口
AsyncGenericConnectionPool的sendRequest函数
函数内部完成多项主要任务:
1. 选环(每个连接池对应的request对象有其自有的选环策略)
int serverCount = this.getServerIdCount();
如WebQuery的选环策略如下:
public int getServerId( int serverCount ){if( serverCount <= 0 ) return -1;byte[] bt = getDigest();if( bt==null || bt.length<=0 ){return -1;}int t = (int)bt[0];if(t<0) t+= 256;Statistics.getInstance().cacheQuery( t%16 );int val;if( bt[0] < 0 ){val = bt[0]+256;} else {val = bt[0];}int ret = val % serverCount;Statistics.getInstance().realCacheQuery( ret );return ret;}
2.请求类别
请求类别:
1. 重试请求
2. 影子请求
3. 普通请求
重试请求:
连接池会将该请求会发送给一个已经标记为不可用的searchhub服务器,目的在于:
1.验证该服务器运行状态是否恢复,如果成功收到该服务器响应请求,则重新标记该服务器为可用服务器
2.如果重试请求收到的结果早于普通结果收到的结果返回,则使用重试请求得到的结果
影子请求:
影子请求是对应与某个普通请求的,是某个普通请求的“影子”,该请求的出现是由于普通请求在一定的短时间内没有收到响应,由连接池构建一个新的请求(影子)
发送给别的服务器,两个请求谁先收到响应则使用谁的结果
普通请求:
对应用户访问生成的请求,由异步连接池进行发送
用户选环成功后,选取该环对应的服务器,将request请求发送给对应的服务器(searchhub)
- 异步连接池整理Step1
- 异步连接池整理step2
- step1
- step1
- step1
- Django Step1 项目创建+连接MySQL+建表
- momoko tornado 连接池 异步
- mysql step1
- QT step1
- first+step1
- hdu step1
- hdu step1
- step1-泛型
- kafka-step1
- thrift 异步连接池 创建 c++
- Thrift之C++ 异步连接池实例
- 【砸壳STEP1】终端连接已越狱设备进行简单操作(为砸壳作准备)
- 几个主流的Java连接池整理
- 定时提醒工具
- 银行卡校验规则(Luhn算法)
- uva 10387 - Billiard
- 向Windows Phone应用商店(App Hub)提交应用
- Java中关于x++与++x在运算中值的变化
- 异步连接池整理Step1
- JDBC Statement设置逃逸字符
- 使用 RSpec 进行行为驱动测试
- 低通滤波器
- iOS5 Automatic Reference Counting
- HDU OJ 3496 Watch The Movie【动态规划】
- Android-RIL流程(呼叫等待)分析
- Android中dip、dp、sp、pt和px的区别
- 【环境搭建】hadoop分布式计算开发环境搭建