`
hcmfys
  • 浏览: 356198 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个负载均衡的算法

 
阅读更多

去一家游戏公司面试,题目大概是给出权值,求出值,
当时题目太多了,没有做完


import java.util.HashMap;

/***
 * hcmfys@163.com 
 * tomjnefu
 * 一个负载均衡的算法
 *  * 2013-06-05 20:51
 * 
 * @author Administrator
 * 
 */
public class WeightCheck {

	private static HashMap<Integer, Integer> weightList = new HashMap<Integer, Integer>();

	public synchronized void reset() {
		weightList.clear();
	}

	public int getWeight(int weight[]) {
		return getMaxWeight(weight);

	}

	/**
	 * 
	 * @param weight
	 * @param curTotalSize
	 * @return
	 */
	private synchronized int getMaxWeight(int weight[]) {
		double max = Double.MIN_VALUE;
		int index = 0;
		int total = 0;
		int curTotalSize = 0;
		int pos = 1;
		if (weightList.get(0) == null) {
			pos = 0;
			weightList.put(0, 0);
		}
		if (pos == 0) {
			for (int i = 0; i < weight.length; i++) {
				int w = weight[i];
				if (max < w) {
					max = w;
					index = i;
				}
			}
			weightList.put(index, 1);
			return index;
		}
		for (int i = 0; i < weight.length; i++) {
			int w = weight[i];
			total += w;
			if (weightList.get(i) == null) {
				weightList.put(i, 0);
			}
			curTotalSize += weightList.get(i);

		}
		for (int i = 0; i < weight.length; i++) {

			int curWeight = weightList.get(i);

			int w = weight[i];
			double dw = curTotalSize * (w / (total + 0.0000000001)) - curWeight;

			if (dw > max) {
				max = dw;
				index = i;
			}

		}

		int toal = weightList.get(index);
		weightList.put(index, toal + 1);
		return index;

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int weight[] = { 3, 2, 2 };
		WeightCheck wi = new WeightCheck();
		int totalSize = 1000;
		for (int i = 0; i < totalSize; i++) {
			int ret = wi.getWeight(weight);
			System.out.println(ret);
		}
		System.out.println("================");
		for (int i = 0; i < weight.length; i++) {
			System.out.println("wight=" + weight[i] + " total=["
					+ weightList.get(i) + "]  " + weightList.get(i)
					/ (totalSize + 0.00001));
		}
	}

}



分享到:
评论

相关推荐

    hbase负载均衡算法分析

    HBase 作为一个非关系型列式数据库,对其负载均衡算法进行深入分析是非常重要的。本文将详细介绍 HBase 负载均衡算法的实现原理和工作流程。 Region 初始分配策略 在 HBase 中,Region 的初始分配策略是 Master ...

    MMOG中的一种负载均衡算法

    ### MMOG中的一种负载均衡算法:综合分析与探讨 #### 引言 大规模多人在线角色扮演游戏(MMORPG)因其提供给玩家广阔的互动平台而受到广泛关注。这类游戏的特点在于支持成千上万的玩家同时在线,这无疑对服务器的...

    几种典型的负载均衡算法

    负载均衡算法 负载均衡是指将网络流量分布到多个服务器上,以提高系统的可扩展性、可用性和性能。常见的负载均衡算法有很多,下面将对几种典型的负载均衡算法进行介绍。 一、HASH 算法 HASH 算法是一种简单的负载...

    几种负载均衡算法

    负载均衡算法是网络架构中用于优化资源分配的关键技术,它旨在通过智能地分配网络请求到多个服务器上来提高系统的效率、可靠性和响应速度。在给定的文件中,详细介绍了多种负载均衡算法,包括静态和动态两种类型。接...

    一种改进的Linux集群系统负载均衡算法.pdf

    一种改进的Linux集群系统负载均衡算法 在Linux集群系统中,负载均衡是关键技术之一。负载均衡算法的选择对系统的性能有着极大的影响。本文提出了一种改进的Linux集群系统负载均衡算法,该算法通过修改负载权值计算...

    F5负载均衡算法标准详解

    首先,应用交换技术包含四个核心组件:截获和检查流量、服务器监控健康检查、负载均衡算法以及会话保持。截获和检查流量允许系统识别和过滤无效或有害的数据包,确保网络安全。服务器监控和健康检查则实时评估服务器...

    一种基于服务类型的web集群负载均衡算法

    ### 一种基于服务类型的Web集群负载均衡算法 #### 摘要 在电信增值业务系统开发过程中,大量的用户和多样化的服务导致服务器集群中的负载均衡问题变得尤为突出,成为电信业务系统开发成功的关键因素之一。本文针对...

    基于CPU和内存利用率的负载均衡算法的研究.pdf

    "基于CPU和内存利用率的负载...本文提出了一种基于CPU和内存利用率的负载均衡算法,旨在解决当前采用的最少连接数算法无法解决的问题。该算法可以有效地提高系统平台处理业务请求的效率,提高系统的可扩展性和可靠性。

    任务分配负载均衡算法

    对于5G移动网络这样的系统,尤其是在采用虚拟基站架构的情况下,如何设计出既能够满足延迟要求又能达到节能目标的负载均衡算法,是一个非常具有挑战性的问题。有效的算法不仅能提升用户体验,还能降低能耗,实现经济...

    F5负载均衡算法详解

    F5负载均衡算法详解 F5负载均衡算法是应用交换技术中四个主要技术之一,它相对其它三个技术来说,更为重要些,在应用交换领域里,主要的技术是负载均衡的算法,完整的、完善的、可控的、灵活的负载均衡算法无疑决定...

    基于P2P的MMOG中动态负载均衡算法

    ### 基于P2P的MMOG中动态负载均衡算法 #### 摘要与背景 在巨量多玩家在线游戏(MMOG)中,传统的客户端/服务器(C/S)架构面临着诸多挑战,其中最主要的两个问题是服务器瓶颈以及对玩家数量的限制。近年来,随着点...

    Web集群系统的负载均衡算法

    ### Web集群系统的负载均衡算法 #### 摘要与引言 随着互联网技术的发展和用户需求的提升,传统的单一服务器架构越来越难以满足高并发、低延迟的服务需求。为了解决这一问题,人们开始广泛采用集群技术来构建高性能...

    基于排队论综合指标评估的动态负载均衡算法.pdf

    "基于排队论综合指标评估的动态负载均衡算法" 这个动态负载均衡算法基于排队论...基于排队论综合指标评估的动态负载均衡算法是一个高效的解决方案,可以解决负载失衡问题,提高系统的响应速度和效率,提高用户体验。

    F5负载均衡算法以及会话保持

    F5 是一种常用的负载均衡器厂商,其 BIG-IP LTM 产品提供了多种负载均衡算法和会话保持机制。 负载均衡算法 F5 BIG-IP LTM 提供了 12 种灵活的负载均衡算法,包括: 1. 轮询(RoundRobin):将请求轮询分配到每个...

    面向云服务平台的弹性负载均衡算法.pdf

    如果负载均衡算法不能适应这种动态和突发的环境变化,将无法有效应对资源需求估计的不准确性和随机性特征资源需求预测的问题。 针对这种情况,本文提出了一种新的弹性负载均衡算法。通过跟踪观测虚拟机资源需求,并...

    转:典型的几个负载均衡算法---SLB

    在本文中,我们将深入探讨几种典型的负载均衡算法,特别是在SLB(Software Load Balancer,软件负载均衡器)中的应用。 1. **轮询(Round Robin)**: 轮询是最简单的负载均衡算法,它将接收到的请求依次分配给...

Global site tag (gtag.js) - Google Analytics