日交易,根据权重分配流量的算法,根据权重和交易笔数
日交易,根据权重分配流量的算法,根据权重和交易笔数 【日交易,根据权重分配流量的算法,根据权重和交易笔数】交易系统,接入多个通道。确保每个通道按权重每日达到相应的交易笔数。
通过实时交易笔数/权重。然后进行升序排序,得到选择通道的次序,进行选择通道。
//a=当前交易笔数/权重。权重越大,如果交易笔数相等,a越小。权重不变,交易笔数变。a的值大小也在变。
//相对公平的流量分配。
public static void main(String[] args) {
//定义三个通道的权重,按随机数选拔使用哪个通道。
//模拟三个通道的权重A 10B 70C 30
//模拟当前交易笔数 A:10B:50 C:20
//从数据库查询出list集合
ChannelD A=new ChannelD("A",10,10);
ChannelD B=new ChannelD("B",70,50);
ChannelD C=new ChannelD("C",30,20);
List channels=new ArrayList();
channels.add(A);
channels.add(B);
channels.add(C);
Map map=new HashMap();
Double trade=0.0;
//遍历list集合,将交易笔数/权重的值作为key,通道对象为value 存储到map中
for (ChannelD channel : channels) {
trade=(double) (channel.getCount()/channel.getWeight());
map.put(trade,channel.getName());
}//将交易笔数/权重的值转化成数据,进行排序。
Set set=map.keySet();
Double[] d=set.toArray(new Double[set.size()]);
//将数据中的值由小到大进行排序
boolean flag=true;
for(int i=0;
id[j+1]){
double temp=d[j];
d[j]=d[j+1];
d[j+1]=temp;
flag=false;
}
}
if(flag){
break;
}
}//将排好序的通道名字由小到大的顺序,加入到链表集合中
LinkedList chan=new LinkedList();
for(int i=0;
i
推荐阅读
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 艾略特的交易法则“遵循自然规律”
- 清明,是追思、是传承、是感恩。
- 20190302|20190302 复盘翻盘
- 2019年12月24日
- 眼观耳听美食的日子
- 2018年9月5日,星期三,天气晴
- 前任
- 2019.4.18感恩日记
- 温水时光