????????????????????????????????????IP?????????????????????????????????????б???????????????????????????????????????佨????????session????
??????????????????????????????з?????????????????????????????????????з??????????????????????????????·???????????????????????????·?????????????????????????session???????session???????????????????”???”??????????????????????????????????????MemCache???????????????Hash???????
????????????Weight Round Robin????
????????????????????????ú????????????????????????????????????????????????????????????????????????????????????????????á??????????????????????????????????????????????????????????????????????????????????????????????????????????????£?
????public class WeightRoundRobin
????{
????private static Integer pos;
????public static String getServer()
????{
????// ??????Map?????????????????????μ????????
????Map<String?? Integer> serverMap =
????new HashMap<String?? Integer>();
????serverMap.putAll(IpMap.serverWeightMap);
????// ???Ip???List
????Set<String> keySet = serverMap.keySet();
????Iterator<String> iterator = keySet.iterator();
????List<String> serverList = new ArrayList<String>();
????while (iterator.hasNext())
????{
????String server = iterator.next();
????int weight = serverMap.get(server);
????for (int i = 0; i < weight; i++)
????serverList.add(server);
????}
????String server = null;
????synchronized (pos)
????{
????if (pos > keySet.size())
????pos = 0;
????server = serverList.get(pos);
????pos ++;
????}
????return server;
????}
????}
??????????????????????????????????????????????????????????????С???????????????????????????б??У????????÷?????????????????????????
????????????Weight Random????
???????????????????????????????????????????????ú????????????ò??????????????????????????????????????????????????????????????????????£?
????public class WeightRandom
????{
????public static String getServer()
????{
????// ??????Map?????????????????????μ????????
????Map<String?? Integer> serverMap =
????new HashMap<String?? Integer>();
????serverMap.putAll(IpMap.serverWeightMap);
????// ???Ip???List
????Set<String> keySet = serverMap.keySet();
????Iterator<String> iterator = keySet.iterator();
????List<String> serverList = new ArrayList<String>();
????while (iterator.hasNext())
????{
????String server = iterator.next();
????int weight = serverMap.get(server);
????for (int i = 0; i < weight; i++)
????serverList.add(server);
????}
????java.util.Random random = new java.util.Random();
????int randomPos = random.nextInt(serverList.size());
????return serverList.get(randomPos);
????}
????}
??????δ????????????????????????????????????????????
????С????????Least Connections????
??????漸??????????????????????????????????????????????????????????????????????????????乤???????????????????????????????????????????????????????У?????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????С?????????????????
????С????????????????????????????????????ò?????????????????????п???????????????????????????????????????????????е?????????????????????????????????????????????????????????Ч???????????????????????????????С??????????????????????????????????????????????????????????????