c# 开源云平台BDC 3.0 详解

国内首款完全由国人自主研发的开源云平台 BDC3.0 详解

BDC3.0 云平台功能介绍及使用说明.rar
http://pan.baidu.com/share/link?shareid=329514&uk=201606611

BDC3.0.rar 云平台安装包
http://pan.baidu.com/share/link?shareid=329502&uk=201606611

BDC3.0 SDK.rar
http://pan.baidu.com/share/link?shareid=329500&uk=201606611

BDC3.0.chm 开发手册 类似 MSDN
http://pan.baidu.com/share/link?shareid=329504&uk=201606611

BDC3.0 云平台云应用开发范例源代码.rar
http://pan.baidu.com/share/link?shareid=329506&uk=201606611

BDC3.0/BDC3.0并行逐层插入或逐层分页查询合并范例.rar
http://pan.baidu.com/share/link?shareid=329497&uk=201606611

BDC3.0/BDC3.0 html+js 直接调用服务端DLL 方法范例.rar
http://pan.baidu.com/share/link?shareid=329495&uk=201606611

BDC3.0/BDC3.0中文分词词库开发配置说明及开发范例.rar
http://pan.baidu.com/share/link?shareid=329498&uk=201606611

BDC3.0/AOP拦截范例.rar
http://pan.baidu.com/share/link?shareid=329496&uk=201606611

 

截至今天已在100台 PC 组成的集群中,测试了3个月,无任何不稳定情况!特此推荐,欢迎指正!

 

更多开发范例及应用将陆续更新

 

BDC 3.0 分布式云平台功能及使用说明

平台功能概述:

    简单的说就是将N台电脑,有序分层(逻辑层次划分)组织起来,形成一个有机体(计算集群),去完成一台电脑很难完成的任务。

  说的更通俗一点这个云平台就是将数十万台电脑变成一台电脑那样来使用

简而言之百万商业圈云平台就是提供了:
1、远程文件分发服务
2、远程文件分发服务开发接口
3、创建远程非透明代理服务
4、提供创建远程对象开发接口
5、Web服(用Microsoft Web Application Stress Tool 进行压力测试,每分钟有效并发超过10万)
6、定时获取节点、集群性能指数服务
7、提供获取节点、集群性能指数服务开发调用接口
8、提供创建远程最优节点对象的开发接口,提供创建远程指定IP节点机的对象的开发接口
9、提供并行创建远程以某IP为根IP的某组集群的对象的开发接口

名词解释:

  远程非透明代理服务服务提供:创建最优代理,创建某节点群的代理群,注册代理服务等
  非透明代理服务:创建并提供一个远程对象,让你可以通过代理对象创建并调用远程节点机真实对象的任何属性方法
  如:
  (1)创建以192.168.2.201 为起始的节点群中的最优代理对象
  testdemo.Class1c1 = (testdemo.Class1)rf.CreateTheBestRemoteObject(typeof(testdemo.Class1),"192.168.2.201");  
  (2)创建指定IP 为192.168.2.201 节点机的代理对象
  testdemo.Class1c1 = (testdemo.Class1)rf.CreateSpecifyIpRemoteObject(typeof(testdemo.Class1),"192.168.2.201");
  Console.WriteLine(s4.sum(1,2));//看看输出结果你就知道效果了
  (3)创建以192.168.2.115 为起始的节点群中的代理对象群
  object[] objs = rf.CreateAllRemoteObjects(typeof(testdemo.Class1),"192.168.2.115");

 

 

图表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类库形式,如:

                   publicclassClass1: WebSystem.Framework.Bo.BaseBo

                   {

                       publicstringsum(inta, intb)

                       {

                            //这里输出结果的时候做个小实验,在结果中增加一个IP地址,看看真正运行的到底是哪个节点机

                            return(a + b).ToString()+ 实际运行的节点是:"Api.LocalIps()[0].ToString();

                       }

}

假设编译成:testdemo.dll

   有特殊要求吗?答:有,所有需要在客户端被调用的类都必须继承WebSystem.Framework.Bo.BaseBo 

这个类,不继承发布到集群后,在其它客户端程序将无法调用。

二、用来开发对集群进行管理的程序

(1)、将开发好的BO类库分发到集群中去,只需要2行代码:

    RemoteFactoryrf = newRemoteFactory();

//192.168.2.201是假设的根节点IP,应根据实际情况修改

rf.DistributionBoFile(@"d:\testdemo.dll""192.168.2.201"); 

               这样就能将testdemo.dll发布到集群中所有电脑上吗?答:是的,就这么简单。

          (2)、查看集群中所有电脑的性能指标及运行状况,只需要8行代码

//192.168.2.201是假设的根/子节点IP,应根据实际情况修改                 

NodesPerFormanceListnpfs = rf.GetPerFormanceList("192.168.2.201");

                    Console.Write("节点群中共有节点:"+ npfs.Count);

                    foreach(NodesPerFormancenpf innpfs)

                    {

                        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.Class1s4 = (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.Class1s4 = (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(inti = 0; i < objs.Length; i++)

                         {

                            Console.WriteLine(((testdemo.Class1)objs[i]).GetName()); //看看输出结果你就知道效果了

       }

备注:CreateAllRemoteObjects填写的如果是根节点IP将获取整个集群的所有节点对象,

如果是某个子节点IP获取的将只是节点群的节点对象

 

       4、平台云集群应用开发范例源代码

          

平台系统环境要求:XP/Vista/Win7/Win2003/Win2008

 

FAQ&名词解释:

集群:集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障恢复能力。集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据。除了作为单一系统提供服务,集群系统还具有恢复服务器级故障的能力。集群系统还可通过在集群中继续增加服务器的方式,从内部增加服务器的处理能力,并通过系统级的冗余提供固有的可靠性和可用性。

根节点:集群的最上级。

子节点:集群中除根节点机之外的所有机器都是一个子节点。

节点群:以某个子节点为起始的,包含它下面所有节点的集合称为一个子集群,下面没有节点那这个节点群就是他本身。

某节点群:集群下的某一个节点群

这个云平台稳定吗?

答:非常稳定,实际测试用13PC,连续运行了一周,没有出现任何故障。

新增加的节点,如何获得之前集群中分发的业务逻辑程序?

答:很简单。1、新节点一旦开启服务,会自动从上层节点获取。2、你也可以手工复制一下。

这个云平台优日志记录吗?

答:有非常详细的日志记录,在配置文件Bwsyq.Distributed.Cluster.exe.config中,

只要将<level value="OFF" /> 改成<level value="ALL" />即可

这个云平台完全免费吗?

答:是的。

posted @ 2013-02-13 22:22  chinacloudy  阅读(1203)  评论(3编辑  收藏  举报