我用C#開發了一個分布式可線上開發的開放雲平台,能把幾萬台電腦做成一個叢集,現跟大家共同分享分享

來源:互聯網
上載者:User
百萬商業圈分布式雲平台功能及使用說明

平台功能概述:
簡單的說就是將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.Class1 c1 = (testdemo.Class1)rf.CreateTheBestRemoteObject(typeof(testdemo.Class1),"192.168.2.201"); 

  (2)建立指定IP 為192.168.2.201 節點機的代理對象
  testdemo.Class1 c1 = (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台機器-->
  <NodeInfo AliasName="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

FAQ&名詞解釋:
叢集:叢集(Cluster)是由兩台或多台節點機(伺服器)構成的一種鬆散耦
合的計算節點集合,為使用者提供網路服務或應用程式(包括資料庫、Web服務和檔案服務等)的單一客戶視圖,同時提供接近容錯機的故障恢複能力。叢集系統一
般通過兩台或多台節點伺服器系統通過相應的硬體及軟體互連,每個叢集節點都是運行其自己進程的獨立伺服器。這些進程可以彼此通訊,對網路客戶機來說就像是
形成了一個單一系統,協同起來向使用者提供應用程式、系統資源和資料。除了作為單一系統提供服務,叢集系統還具有恢複伺服器級故障的能力。叢集系統還可通過
在叢集中繼續增加伺服器的方式,從內部增加伺服器的處理能力,並通過系統級的冗餘提供固有的可靠性和可用性。
根節點:叢集的最上級。
子節點:叢集中除根節點機之外的所有機器都是一個子節點。
節點群:以某個子節點為起始的,包含它下面所有節點的集合稱為一個子叢集,下面沒有節點那這個節點群就是他本身。
某節點群:叢集下的某一個節點群。
非透明代理服務:建立並提供一個遠程對象,讓你可以通過代理對象建立並調用遠程節點機真實對象的任何屬性方法

這個雲平台穩定嗎?
  答:非常穩定,實際測試用13台PC,連續運行了一周,沒有出現任何故障。
新增加的節點,如何獲得之前叢集中分發的商務邏輯程式?
  答:很簡單。1、新節點一旦開啟服務,會自動從上層節點擷取。2、你也可以手工複製一下。
這個雲平台優日誌記錄嗎?
  答:有非常詳細的日誌記錄,在設定檔Bwsyq.Distributed.Cluster.exe.config中,
只要將<level value="OFF" /> 改成<level value="ALL" />即可
這個雲平台完全免費嗎?
  答:是的。
這個雲平台是誰開發的?
  答:是我,我叫黃智,典型的中國人,英俊、瀟洒、爽快、正直、勤勞、善良,我的QQ是99923309。
開發這個雲平台的目的是什嗎?
  答:打破大公司的技術壟斷,降低技術壁壘,振興中華,讓普通人也能很快進行大規模的應用。
這個雲平台能有哪些具體的應用?
  答:科學計算、大規模檢索、高效能運算、海量資料存放區、破譯外星訊號、高效能資料資訊採集 等
這個雲平台是有第三方技術嗎?
  答:沒有,是本人完全憑空想象出來的,沒有參考過任何第三方的代碼。
利用這個雲平台能做成google那樣的大規模網站嗎?
  答:很輕鬆就能實現。
發現平台錯誤或有好的建議怎麼辦?
  答:發郵件告訴我bwsyq@bwsyq.com


  1、
.NETFrameWork3.5
  2、平台雲叢集伺服器系統
  3、平台雲叢集應用開發包
  4、平台雲叢集應用開發範例原始碼

其他相關:
開源:完全自主研發搜尋引擎1.0原始碼及說明,單機400萬網頁,任意50詞以內的檢索不超過 20毫秒
開源:基於百萬商業圈.NET開發架構開發的並行帶分詞的採集器
百萬商業圈 .NET 開發架構2.0及開發架構API說明書(BWFW)(含並行計算及中英文分詞功能)
分享一點代碼(小型C web開發架構),用C語言實現的一個WEB 檔案上傳(含全部原始碼)一
天心天字輩ERP全部PDK原始碼到了我手上的後果 - 超越天心之WEB天雲
大家看看我的BS的甘特圖排程做的如何? 無重新整理Ajax甘特圖 展示生產排程結果 示範
軟體工程概述 - 企業架構 - IT企業做大做強之根本 - 之我見
實踐檢驗得出的真理:asp.net 項目在 linux mono上編譯需要修改的只有 3個地方
給大家漏一手本人親自精心撰寫的通用ajax架構,完全相容 IE FireFox各個版本!(附完整源碼及完整範例)
開發了一個中文分詞伺服器(C語言開發+詞庫+原始碼),最大特色可以讓javascript來調用!
用純C語言寫了一個HtmlParse(網頁分析器)外帶採集功能,大小隻有200K(免費+開源+操作)

希望大家進行指正 ,謝謝! 我的:QQ 99923309

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.