使用java编写一款计算计算机群集可用性的程序

工作中需要对计算机群集进行可靠性评估和分析,这里写了一款可以计算计算机群集可靠性的程序。程序分3个类文件;1个基础服务器类,一个群集方法类,一个测试类。逻辑还是很清楚的。

服务器基础类

package bin;
/*
 * 这个类描述了服务器的属性,包括稳定运行的时常
 */
public class ServerAttributes {

	double pAvailability;  //服务器可用性,如98%
	
	ServerAttributes(double p)
	{
		setPAvailability(p);
	}
	
	//取得服务器的可用性
	public double getPAvailability()
	{
		return this.pAvailability;
	}
	
	//设置服务器的可用性
	void setPAvailability(double p)
	{
		pAvailability = p;
	}
}
群集方法类

package bin;

import java.util.ArrayList;

public class ServersManipulate {

	//集群数组,每个元素是一个服务器
	ServerAttributes[] serverList;
	
	//集群的可用性
    double ServersAvailability;
    
    public double GetServersAvailability()
    {
    	return ServersAvailability;
    }
	
	ServersManipulate(int number, double p)
	{
		serverList = new ServerAttributes[number];
		
		for(int i=0; i<number; i++)
		{
			serverList[i]=new ServerAttributes(p);
		}
		getServersAvailability();
	}
	
	ServersManipulate(ServerAttributes args[])
	{
		serverList = args;
		//serverList = new ServerAttributes[args.length];
		getServersAvailability();
	}
	
	public void getServersAvailability()
	{
		int number = serverList.length;
		double serverPAnti = 1;
		for(int i=0; i<number; i++)
		{
			double pAnti = 1 - serverList[i].getPAvailability();
			serverPAnti = serverPAnti * pAnti;
		}
		ServersAvailability = 1 - serverPAnti;
	}
	
	public static double getSingleServerP(double ServersP, int n)
	{
		double SingleServerP=0;
		SingleServerP = 1 - Math.pow((1-ServersP), 1.0/n);
		return SingleServerP;
	}
	
	public static int getServerN(double ServersP, double SingleP)
	{
		int ServerN;
		ServerN = (int) Math.ceil( (Math.log(1-ServersP)/Math.log(1-SingleP)));
		return ServerN;
	}
}

测试类

package bin;

public class MainTest {

	public static void main(String [] args)
	{
		//一个集群有20台服务器,每台服务器可用性为0.8,则集群的可用性为
		ServersManipulate clus1 = new ServersManipulate(20,0.8);
		System.out.println(clus1.GetServersAvailability());
		
		//一个集群希望能达到99.9%的可用性,集群有2台服务器,则每台服务器的可用性至少为
		System.out.println(ServersManipulate.getSingleServerP(0.999, 2));
		//在上述的情况下,每台主机每周进行的非计划停机
		System.out.println(24*7*(1-ServersManipulate.getSingleServerP(0.999,2)));
		
		//一个集群希望能达到99.9%的可用性,集群每台服务器的可用性为85%,则服务器至少要多少台
		System.out.println(ServersManipulate.getServerN(0.999, 0.85));
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值