风生水起才知天高云淡,沧海横流方显英雄本色 百万商业圈云平台免费发布,几十万台电脑变成一台不是梦
百万商业圈分布式云平台功能及使用说明
平台功能概述:
简单的说就是将N台电脑,有序分层(逻辑层次划分)组织起来,形成一个有机体(计算集群),去完成一台电脑很难完成的任务。
说的更通俗一点这个云平台就是将数十万台电脑变成一台电脑那样来使用
图表1集群中小型应用架构模型
图表2大规模实际应用架构模型
图表3集群实际测试架构模型
平台功能概述:
简单的说就是将N台电脑,有序分层(逻辑层次划分)组织起来,形成一个有机体(计算集群),去完成一台电脑很难完成的任务。
说的更通俗一点这个云平台就是将数十万台电脑变成一台电脑那样来使用!
平台组成部分:
1、.NETFrameWork3.5
2、平台云集群服务器系统
3、平台云集群应用开发包
4、平台云集群应用开发范例源代码
平台组成部分功能详述:
1、.NETFrameWork3.5
安装在哪里?答:安装在集群节点机上,每台机器都要装
如何安装呢?答:下载Framework3.5Setup.rar 解压后运行:dotNetFx35setup.exe 按提示下一步下一步即可
还有其他配置或设置吗?答:没有。
备注:没有Framework3.5Setup.rar 也可以直接安装VS2008(Microsoft Visual Studio 2008)。
2、平台云集群服务器系统
安装在哪里?答:安装在集群节点机上,每台机器都要装
如何安装呢?答:下载DistributedPlatForm.rar解压后运行:install.bat 提示安装完成,回车即可。
还有其他配置或设置吗?答:有,需要对配置文件进行设置。
先安装还是先配置?答:配置好之后再安装集群服务。
集群服务器系统配置文件(Bwsyq.Distributed.Cluster.exe.config)的使用及说明:
<!-- 分布式集群配置AliasName:节点或子节点名称RootNodeIp:本节点IP UpperNodeIp:上层节点IP HeartRate:心跳频率(秒) WebServerPort:Web服务端口号-->
<WebSystem.Framework.Distributed AliasName="1"RootNodeIp="192.168.2.201" UpperNodeIp="192.168.2.201"HeartRate="1" WebServerPort="8080">
<!-- 子节点信息 可配置多个节点(理论上无限制),考虑到并行处理建议每个节点配置10个子节点,四层配置可达10000台机器-->
<NodeInfoAliasName="02" IP="192.168.2.209"WebServerPort="8080"/>
<!—没有下层节点需要写 “<NodeInfo …> ”这一行吗?答:不需要写-->
<!—有多个下层节点需要怎么写 “<NodeInfo …> ”这一行呢?答:一个节点一行-->
</WebSystem.Framework.Distributed>
名词解释:
AliasName节点或子节点名称 命名规则要求:无 命名原则:上层节点名+XX(00~99) 如:根结点用1第二层节点用1XX 比如:101第三层10101以此类推
AliasName最好不要重复,重复了也不影响
RootNodeIp须是根节点的地址(不能使用127.0.0.1)。
UpperNodeIp是你的上层节点的地址(不能使用127.0.0.1)。
HeartRate 心跳频率,建议设置为1,单位:秒(越小表示频率越高,负载均衡算法越准确) 会影响机器性能吗?答:微乎其微。
WebServerPort:Web服务端口号对外的可以采用80如果只是集群内部使用就无所谓了,取值范围(1~65535)
备注:集群配置的时候在填写IP地址时要注意尽量避免使用127.0.0.1,请使用该节点的真实IP地址,否则会带来不可预知的错误。
3、平台云集群应用开发包
用什么工具进行开发?答:Microsoft Visual Studio 2008/ MicrosoftVisual Studio 2010
安装在哪里?答:开发人员的电脑上
需要安装到集群节点机上吗?答:不需要。
如何使用呢?答:下载DistributedPlatFormSDK.rar 解压即可,无需安装,在开发的时候进行全部引用即可。
有SDK接口函数说明吗?答:有。
用来开发什么程序?答:三种程序,
注:无论开发哪种程序,请先引用SDK中的所有DLL类库
一、开发集群应用业务逻辑程序,也叫商业逻辑(BussinessObject),简称BO,编译成dll类库形式,如:
public class Class1 : WebSystem.Framework.Bo.BaseBo
{
public string sum(int a, int b)
{
//这里输出结果的时候做个小实验,在结果中增加一个IP地址,看看真正运行的到底是哪个节点机
return (a + b).ToString()+ " 实际运行的节点是:"+ Api.LocalIps()[0].ToString();
}
}
假设编译成:testdemo.dll
有特殊要求吗?答:有,所有需要在客户端被调用的类都必须继承WebSystem.Framework.Bo.BaseBo 这个类,不继承发布到集群后,在其它客户端程序将无法调用。
二、用来开发对集群进行管理的程序
(1)、将开发好的BO类库分发到集群中去,只需要2行代码:
RemoteFactory rf = newRemoteFactory();
//192.168.2.201是假设的根节点IP,应根据实际情况修改
rf.DistributionFile(@"d:\testdemo.dll", "192.168.2.201");
这样就能将testdemo.dll发布到集群中所有电脑上吗?答:是的,就这么简单。
(2)、查看集群中所有电脑的性能指标及运行状况,只需要8行代码
//192.168.2.201是假设的根/子节点IP,应根据实际情况修改
NodesPerFormanceList npfs = rf.GetPerFormanceList("192.168.2.201");
Console.Write("节点群中共有节点:"+ npfs.Count);
foreach (NodesPerFormance npf in npfs)
{
if (npf.Index == 0)
Console.Write("节点机"+ npf.Ip + "有故障!");
}
npfs.Sort();
Console.Write("节点群中性能最优节点机IP是:"+ npfs[0].Ip);
这样就能得到节点群的运行情况吗?答:是的,就这么简单。
备注:GetPerFormanceList填写的如果是根节点IP将获取整个集群的运行情况,如果是某个子节点IP获取的将只是节点群的运行情况
三、用来开发基于集群的分布式应用,这里又分成三种情况:
(1)、开发那种百万军中取上将首级的程序,什么意思呢?就是让集群中性能最优的机来执行某个函数,并得到返回结果
这里我们假设:上面开发的业务逻辑程序testdemo.dll 已经分发到了集中,
首先我们要引用testdemo.dll别奇怪,客户端也需要一份
testdemo.Class1 s4 = (testdemo.Class1)rf.CreateTheBestRemoteObject(typeof(testdemo.Class1),"192.168.2.201");
Console.WriteLine(s4.sum(1,2));//看看输出结果你就知道效果了
备注:CreateTheBestRemoteObject填写的如果是根节点IP将获取整个集群的最优节点,如果是某个子节点IP获取的将只是节点群的最优节点
(2)、开发那种定点式的程序,什么意思呢:就是让集群中某个指定的节点机来执行某个函数,并得到返回结果
这里我们假设:上面开发的业务逻辑程序testdemo.dll 已经分发到了集中,
首先我们要引用testdemo.dll别奇怪,客户端也需要一份
testdemo.Class1 s4 = (testdemo.Class1)rf.CreateSpecifyIpRemoteObject(typeof(testdemo.Class1),"192.168.2.201");
Console.WriteLine(s4.sum(1,2));//看看输出结果你就知道效果了
(3)、开发那种狼群战术- 并行的程序,什么意思呢:就是让集群/节点群中的所有机器来执行某个函数,并得到返回结果
这里我们假设:上面开发的业务逻辑程序testdemo.dll 已经分发到了集中,
首先我们要引用testdemo.dll别奇怪,客户端也需要一份
object[] objs = rf.CreateAllRemoteObjects(typeof(testdemo.Class1),"192.168.2.115");
for (int i = 0; i < objs.Length; i++)
{
Console.WriteLine(((testdemo.Class1)objs[i]).GetName()); //看看输出结果你就知道效果了
}
备注:CreateAllRemoteObjects填写的如果是根节点IP将获取整个集群的所有节点对象,如果是某个子节点IP获取的将只是节点群的节点对象
4、平台云集群应用开发范例源代码
平台云集群应用开发范例源代码
平台系统环境要求:XP/Vista/Win7/Win2003/Win2008
[解决办法]
我被震惊了
[解决办法]
~mark