TWI466498B - A system and method for providing an autonomous load balancing host in a distributed environment - Google Patents

A system and method for providing an autonomous load balancing host in a distributed environment Download PDF

Info

Publication number
TWI466498B
TWI466498B TW101146321A TW101146321A TWI466498B TW I466498 B TWI466498 B TW I466498B TW 101146321 A TW101146321 A TW 101146321A TW 101146321 A TW101146321 A TW 101146321A TW I466498 B TWI466498 B TW I466498B
Authority
TW
Taiwan
Prior art keywords
host
slave
hosts
module
primary
Prior art date
Application number
TW101146321A
Other languages
English (en)
Other versions
TW201424296A (zh
Original Assignee
Chunghwa Telecom Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chunghwa Telecom Co Ltd filed Critical Chunghwa Telecom Co Ltd
Priority to TW101146321A priority Critical patent/TWI466498B/zh
Publication of TW201424296A publication Critical patent/TW201424296A/zh
Application granted granted Critical
Publication of TWI466498B publication Critical patent/TWI466498B/zh

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Description

於分散式環境中提供自治負載平衡主機之系統及方法
本發明係關於一種於分散式環境中提供自治負載平衡主機之系統及方法,特別係指一種結合主要主機(Master)與從屬主機(Slave)特性的主機群組,來執行網路環境中的外部請求(REQUEST),而這些外部請求在執行前會先放在一工作池中。該主機群組與工作池中的連結方式採用Client/Server socket連結。可藉由主機群組中的主機之Master/Slave角色切換及功能執行,自治的進行負載平衡,並可於異常中恢復。
習用負載平衡系統,大都使用一中控的資源仲裁器來執行負載分配,如圖1所示,在下列先前的專利技術中有提及類似的概念:I242948、I276322;另外有技術將前端伺服器與資源仲裁器分離,並可以各自提供額外的備援系統,在下列先前的專利技術中有提及類似的概念:565801。先前的技術,大都是將負載平衡的任務集中在中控的資源仲裁器上,此會使得中控的資源仲裁器成為系統性能的瓶頸、或是發生異常時導致整個系統完全無法執行。
另外有技術將主機群組作成一單向鍊結串列的結構,若本機無法執行,會將外部請求導引至下一節點主機,在下列先前的專利技術中有提及類似的概念:522695。但此技術並沒提及若鍊節串列的某一節點發生異常,整個系統該如何運作。
由此可見,上述習用方式仍有諸多缺失,實非一良善之設計,而亟待 加以改良。
本案發明人鑑於上述習用方式所衍生的各項缺點,乃亟思加以改良創新,並經多年苦心孤詣潛心研究後,終於成功研發完成本件於分散式環境中提供自治負載平衡主機之系統及方法。
本發明之目的即在於提供一種於分散式環境中提供自治負載平衡主機之系統及方法,乃在改善一般習用負載平衡系統之中控負載平衡器所造成的系統運作瓶頸,由Master主機自行進行負載分派給Slave主機執行。並提供一種錯誤回復的方法,當分派外部請求的Master主機發生異常時,可迅速由其他Slave主機接替其功能,使整個系統能正常運作。當主機於異常中恢復,亦可重新加入主機群組。
可達成上述發明目的之於分散式環境中提供自治負載平衡主機之系統及方法,請參閱圖2所示,為本發明的系統架構圖,每台主機的設定相同,但使用一旗標陣列將主機分成Master與Slave兩種角色,同一時間只有一台Master主機,其餘為Slave主機。工作池可儲存外部請求(REQUEST),每台主機(Client)透過socket方式連結到工作池(Server),並取出工作池中的外部請求來執行。Master主機用來分派工作池中的外部請求,Slave主機用來執行工作池中的外部請求。也就是將習用負載平衡系統之資源仲裁器的分派功能,移至Master主機來操作。同時當Master主機發生異常時,可由其中一台Slave主機來接替當作新的Master主機。
本發明之網路環境可應用於有線網路,其可為網際網路(Internet)、或區 域網路(LAN)均可。工作池與主機可以為伺服器。
由於上述方法可以由軟體程式完成,因此本發明之方法可以以電腦語言撰寫後再載入一電腦可讀取記錄媒體中,該記錄媒體可以是硬碟、軟碟、光碟、IC晶片,或任何熟悉此項技藝者所可使用之包含有該記錄媒體之物品,較佳地係將其載入一隨機存取記憶體RAM中俾易於存取執行。
綜上所述,本發明歸納如下:一種於分散式環境中提供自治負載平衡主機之系統,係使執行網路上之外部請求的多台主機可自治的進行分派以負載平衡,並可於主機異常中恢復,其包括:一工作池,係連接於一網路,該工作池具有對應之一工作池網址(IP Address),用以儲存一外部請求;以及複數個主機,該複數個主機分別連接於該網路,該複數個主機中的每個主機均有各自所對應之主機網址,並可透過該網路連接到該工作池,以執行該外部請求,且每個主機係為一主要主機(Master)或一從屬主機(Slave),該主要主機係分派該工作池中之該外部請求,而該從屬主機係執行該主要主機所分派的該外部請求;其中,該複數個主機係由一旗標陣列來識別為該主要主機或該從屬主機,且在同一時間中,該複數個主機中只有一台主機為該主要主機,其餘主機皆為該從屬主機。
在本發明中,其中該工作池與該複數個主機係為電腦伺服器。
在本發明中,其中該複數個主機係執行該主要主機或該從屬主機之功能,而該複數個主機係以該旗標陣列來識別為該主要主機或該從屬主機,且該從屬主機係執行該主要主機所分派之該工作池中之該外部請求,其中該複數個主機中各自包括下列模組:一工作池介接模組,當該主機係為該 主要主機時,該工作池介接模組定時以Client/Server(主從式架構,係將客戶端與伺服器區分開來,每一個客戶端軟體的實例都可以向伺服器發出請求)的方式連結到該工作池,以檢查該工作池是否有該外部請求待執行;一資源預估與統計模組,當該主機係為該主要主機時,該資源預估與統計模組定時記錄、儲存該些從屬主機目前可用資源,且記錄各種類型之外部請求之歷史使用資源,並取其中一類型之歷史使用資源之平均值來當作該類型之外部請求之預估使用資源;一分派模組,當該主機係為該主要主機時,該分派模組決定所分派之該外部請求由該些從屬主機中之其中一台來執行,該主要主機藉由該資源預估與統計模組搜尋該些從屬主機中符合所有資源類型的可用值皆大於等於外部請求之預估使用資源之從屬主機,若有至少兩台以上的從屬主機符合,則隨機挑選其中一台,且分派方式為該主要主機藉由一資訊傳遞模組傳送一通知訊息至被挑選的從屬主機,以通知該被挑選的從屬主機執行該外部請求;一執行模組,當該主機係為該從屬主機時,該執行模組利用該資訊傳遞模組接收該主要主機之該通知訊息後,藉由Client/Server的方式連結至該工作池,以取出該工作池中之該外部請求並執行;一資源計算模組,當該主機係為該從屬主機時,該資源計算模組使用一系統指令計算該主機的可用資源,並使用該資訊傳遞模組回報至該主要主機之該資源預估與統計模組;一異常處理模組,當該主機係為該從屬主機時,該異常處理模組定時檢查該主要主機是否有傳送可用資源量的控制訊息,由該主要主機透過資源預估與統計模組發送給從屬主機,若無則通知其他從屬主機,並其他從屬主機皆發送訊息至該主要主機,判斷該主要主機是否異常,若該主要主機異常,則設定一旗標陣列中該主 要主機為異常,主機編號最小的Slave主機設定自己為新主要主機並通知其他從屬主機,更新旗標陣列,其中該主機編號最小係指每台主機透過IP字典由小到大排序並編號,此處指編號最小的從屬主機;以及一資訊傳遞模組,係記錄該工作池與所有主機之連結資訊,即IP位址,並包含該旗標陣列以紀錄所有主機係為該主要主機或為該從屬主機,該複數個主機間之連結方式係為Client/Server架構,而該複數個主機中的每個主機開啟Server socket(伺服器插口)以接收其他主機的連結,建立好連結後,即可傳遞控制訊息與回應訊息,其中該Server socket係為伺服器端的通訊介面,用於網路上之主從式架構,可供客戶端連線以傳送訊息。
一種於分散式環境中提供自治負載平衡主機之方法,其步驟為:a.一主要主機定時利用該主要主機之一資訊傳遞模組發出一通知給所有從屬主機,使所有從屬主機分別利用本身之一資源計算模組計算本身之可用資源並回報至該主要主機,該主要主機紀錄與儲存所有從屬主機之可用資源於該主要主機之一資源預估與統計模組;b.該主要主機定時查看一工作池中是否有外部請求,若有則透過該資訊傳遞模組傳送、分派控制訊息給從屬主機;c.該從屬主機使用本身之一執行模組執行該主要主機所分派之該外部請求,該從屬主機使用本身之該資源計算模組計算該外部請求之實際使用資源,並回傳至該主要主機之該資源預估與統計模組;d.若該主要主機與所有從屬主機中任一主機發生異常,該異常係為無法與其他主機進行連線,無法執行此系統的工作,則除了發生異常的主機外,其餘的主機立即各自進行一錯誤回復機制;以及e.若該發生異常的主機排除異常並恢復正常時,則該發生異常的主機重新加入該主要主機與所有從屬主機之群組中。
在本發明中,其中該主要主機分派該工作池中之該外部請求給該從屬主機執行之步驟為:a.該主要主機利用該主要主機之一工作池介接模組檢查該工作池是否有該外部請求待執行;b.若是,該主要主機利用該主要主機之該資源預估與統計模組取得該外部請求之歷史資源平均值,並以該外部請求之歷史資源平均值作為該外部請求之預估使用資源;c.該主要主機利用該主要主機之該資源預估與統計模組檢查所有從屬主機中是否有可執行該外部請求之從屬主機,該檢查之方式為搜尋所有從屬主機中符合各類型可用資源皆不小於該外部請求之預估使用資源之從屬主機;d.若搜尋出符合各類型可用資源皆不小於該外部請求之預估使用資源之從屬主機,該主要主機利用該主要主機之一分派模組傳送一通知訊息至該符合各類型可用資源皆不小於該外部請求之預估使用資源之從屬主機,以分派該外部請求至符合各類型可用資源皆不小於該外部請求之預估使用資源之從屬主機;以及e.符合條件的該從屬主機利用本身之該資訊傳遞模組回應一控制訊息至該主要主機。
在本發明中,其中該主要主機發生異常時之該錯誤回復機制之步驟為:a.所有從屬主機皆利用各自本身之該資訊傳遞模組定時檢查是否未收到該主要主機要求傳送可用資源量的控制訊息,其中該控制訊息係由該主要主機透過該資源預估與統計模組發送給從屬主機;b.若是,則所有從屬主機皆利用各自本身之該資訊傳遞模組彼此發送訊息通知;c.所有從屬主機利用本身之該資訊傳遞模組檢查該主要主機是否發生異常;d.若是,所有從屬主機皆利用各自本身之一異常處理模組設定一旗標陣列中該主要主機為異常,並通知具有一最小編號之從屬主機,其中該最小編號係為每台主機透 過IP字典由小到大排序並編號,此處指編號最小的從屬主機;e.該最小編號之從屬主機利用本身之該異常處理模組設定該旗標陣列,使該最小編號之從屬主機成為一新的主要主機,並透過該資訊傳遞模組發出一更動通知給其他從屬主機;f.其他從屬主機接收到該更動通知,並利用各自本身之該異常處理模組設定該旗標陣列,並更換該最小編號之從屬主機為為該新的主要主機;以及g.該新的主要主機執行完現有外部請求,並開始執行原本該主要主機之功能。
在本發明中,其中所有從屬主機中任一個從屬主機發生異常時之該錯誤回復機制之步驟為:a.該主要主機利用本身之該訊傳遞模組定時檢查是否未收到所有從屬主機中某個從屬主機可用資源量之控制訊息;b.若是,該主要主機利用本身之該資訊傳遞模組發送訊息檢查該某個從屬主機是否發生異常;c.若是,該主要主機利用本身之該資訊傳遞模組通知所有從屬主機該某個從屬主機已發生異常;以及d.所有從屬主機設定該旗標陣列中該某個從屬主機為異常。
在本發明中,其中若該發生異常的主機排除異常並恢復正常時,則該發生異常的主機重新加入該主要主機與所有從屬主機之群組中之步驟包括:a.該發生異常的主機利用本身之該資訊傳遞模組向其他所有主機發出一加入主機群組請求;b.其他所有主機皆利用各自本身之該資訊傳遞模組回應該發生異常的主機;c.該主要主機設定該發生異常的主機為從屬主機,調整該主要主機之該資訊傳遞模組的主機編號與該旗標陣列,並利用該主要主機之該資訊傳遞模組通知所有從屬主機,其中該主機編號係為每台主機透過IP以字典順序由小到大排序並編號;以及d.所有從屬主機依該主要主 機的通知訊息,調整各自本身之該資訊傳遞模組之該主機編號與該旗標陣列。
本發明所提供之於分散式環境中提供自治負載平衡主機之系統及方法,與其他習用技術相互比較時,更具有下列之優點:
1.本發明能避免中控之負載平衡器所造成的效能瓶頸,同時具有異常處理的能力,能避免中控之負載平衡器發生異常所造成整個系統癱瘓。
2.本發明能動態變換Master/Slave的角色,任何主機都可以扮演Master的角色來進行負載分配,也可以扮演Slave的角色來執行工作,並不需要中控之資源仲裁器,可使主機的資源使用率優化。因為本發明能以電腦語言寫成,且可在一般的主機上即可執行,不需購買額外的資源仲裁器,可節省成本。
綜上所述,本案不僅於技術思想上確屬創新,並具備習用之傳統方法所不及之上述多項功效,已充分符合新穎性及進步性之法定發明專利要件,爰依法提出申請,懇請 貴局核准本件發明專利申請案,以勵發明,至感德便。
為了使本發明的目的、技術方案及優點更加清楚明白,下面結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發明,但並不用於限定本發明。以下,結合附圖對本發明進一步說明: 請參閱圖2所示,為本發明之架構圖。將外部請求(REQUEST)預先作分類並放入工作池100中,形成:Req1 1001、Req2 1002...。外部請求的分類方式可見專利I276322,專利I276322提出一分類器與一探查器可針對外部請求所需使用的資源(例如:CPU、記憶體、頻寬等)對外部請求預先作分類,本發明使用專利I276322分類的結果,將分類後的外部請求放入工作池100中。同時有多台主機200(各主機皆為相同類型之主機)來執行工作池100中的外部請求,其中主機編號分別為1、2、...、Max。執行這些外部請求共需使用N種資源。將主機200群使用自身內部之旗標陣列271分成(編號)有一台Master,而其餘皆為Slave,由Master主機將工作池100中的外部請求(1001、1002...)分派給Slave主機去執行。主機編號的記錄、配號方式可使用每台主機的IP字典排序(由小到大),以編號最小的主機當作Master主機(如圖中,編號最小的為1),其餘為Slave主機(編號2~Max)。
請參閱圖3所示,為本發明之主機200的細部架構圖,主機200主要包括七個單元:(1)工作池介接模組210、(2)資源預估與統計模組220、(3)分派模組230、(4)執行模組240、(5)資源計算模組250、(6)異常處理模組260、(7)資訊傳遞模組270。工作池介接模組210、資源預估與統計模組220、分派模組230屬於Master主機使用的功能。執行模組240、資源計算模組250、異常處理模組260屬於Slave主機使用的功能。資訊傳遞模組270屬於Master與Slave主機都可使用的功能,並包含一旗標陣列271記錄所有主機的Master/Slave識別,且記錄所有主機200與工作池100的IP位址,同時開啟Server socket(伺服器插口,伺服器端的通訊介面,用於網路上之主從式架構,可供客戶端連線以傳送訊息),等待其他主機 200(Client)的連結以傳遞溝通訊息。每台主機200同一時間只能是Master或Slave其中一種角色,初始時主機編號最小者為Master主機,其餘為Slave主機,以旗標陣列271識別,若其中一台主機發生異常,也可於旗標陣列271識別此主機為異常。
請參閱圖4所示,為本發明初始化主機編號與旗標陣列的流程圖,首先,如步驟S11,每台主機200使用資訊傳遞模組270紀錄所有主機200的IP,以此IP做由小到大的字典排序。接著,如步驟S12,排序在最前面的主機W,依排序結果設定所有主機編號,並設定本機W為Master,其他為Slave,且使用資訊傳遞模組270通知其他主機。最後,如步驟S13,所有主機200依通知訊息設定主機編號與旗標陣列271。
請參閱圖5所示,為本發明Master主機定時收集Slave主機可用資源的流程圖。首先,如步驟S21,Master主機利用資訊傳遞模組270定時通知所有Slave主機要回報可用資源,接著如步驟S22,所有Slave主機接收到通知後,使用資源計算模組250計算本機可用資源並回報Master主機,Master主機依據回報內容紀錄在資源預估與統計模組220。實際資源使用量可使用系統指令取得,例如在Linux系統中,可以使用du、top...等指令得到實際資源的使用量。
請參閱圖6所示,為本發明Master主機分派外部請求給Slave主機的流程圖。首先,如步驟S31,旗標為Master的主機利用工作池介接模組210,定時到工作池100中檢查是否有外部請求待執行。由於外部請求R放入工作池前已作分類,Master主機利用資源預估與統計模組220取出此外部請求R所屬分類的歷史使用資源量,取歷史使用資源量平均值,當作R的預 估使用資源值(R1、R2、...、RN),其中N為資源種類數目,如步驟S32。接著,如步驟S33,Master主機利用資源預估與統計模組220找出是否有Slave主機可執行的外部請求(REQUEST),判斷方式為Slave主機上的每種可用資源皆不小於REQUEST的預估使用資源值(Req1、Req2、...、ReqN)。若存在一Slave主機S有足夠資源執行外部請求R,則執行步驟S34,Master主機使用分派模組230將此REQUEST分派給此Slave主機S,分派方式為Master主機利用資訊傳遞模組207傳送一訊息給Slave主機S,通知此Slave主機S要執行此REQUEST。最後,如步驟S35,Slave主機接收到Master主機的分派後,利用資訊傳遞模組207回應Master主機,將執行此REQUEST。
請參閱圖7所示,為本發明Slave主機執行外部請求的流程圖。首先,如步驟S41,Slave主機S接收到Master主機的外部請求R分派後,利用執行模組240由連結到工作池100中取出此外部請求R並執行,工作池100同時移除此外部請求。接著,如步驟S42,Slave主機S於執行此REQUEST完畢後,利用資源計算模組250計算此REQUEST的實際資源使用量並回傳Master主機,Master主機紀錄此REQUEST的實際資源使用量於資源預估與統計模組220。
請參閱圖8所示,為本發明Master主機發生異常之處理的流程圖。首先,如步驟S51,每台Slave主機都會利用排程檢查是否一段時間沒收到Master主機A的訊息。接著,如步驟S52,若其中一Slave主機X發現一段時間沒收到Master主機A的訊息,Slave主機X利用資訊傳遞模組270發送訊息給其他Slave主機。接著,如步驟S53,然後所有Slave主機檢查 Master主機A是否發生異常,檢查方式為利用資訊傳遞模組270傳送一檢查訊息給Master主機A,看Master主機A有沒有回應,若所有Slave皆發現Master主機A異常的話,則進行步驟S54,所有Slave主機利用異常處理模組260設定旗標陣列271之Master主機A為異常,並通知具有最小編號的Slave主機B。接著,如步驟S55,具有最小編號的Slave主機B利用異常處理模組260設定旗標陣列271,將自己設為Master,並通知其他主機。接著,如步驟S56,所有主機利用異常處理模組260設定旗標陣列271,並更換Master為主機B。最後,如步驟S57,主機B會執行完現有的外部請求(REQUEST),但不再接受外部請求的分派,並開始執行Master主機之功能,與工作池100連結,並執行Master主機的分派外部請求功能。
請參閱圖9所示,為本發明Slave主機發生異常之處理的流程圖。首先,如步驟S61,Master主機利用資訊傳遞模組270檢查是否一段時間沒收到Slave主機Y的訊息。若是的話,則進行步驟S62,Master主機檢查Slave主機Y是否發生異常,檢查方式為利用資訊傳遞模組270傳送一檢查訊息給Slave主機Y,看Slave主機Y有沒有回應,若發現Slave主機Y發生異常,則進行步驟S63,Master主機利用資訊傳遞模組270通知所有Slave主機。最後,如步驟S64,所有主機200設定Slave主機Y旗標為異常。
請參閱圖10所示,為本發明主機Z於異常後重新加入群組的流程圖。首先,如步驟S71,主機Z於異常恢復後,利用資訊傳遞模組270向主機群組裡的所有主機200發出加入主機群組的請求,而其他主機回應主機Z如步驟S72。接著,如步驟S73,Master主機設定主機Z為Slave,調整資訊傳遞模組270的主機編號與旗標陣列271,並通知所有Slave主機。最後, 如步驟S74,所有Slave主機依Master主機的通知,調整資訊傳遞模組270的主機編號與旗標陣列271。
圖11至圖21為本發明的一個實施例。圖11為初始狀況示意圖,有五件外部請求分別為:R1(101)、R2(102)、R3(103)、R4(104)及R5(105)。這些外部請求共需使用3種資源:CPU、記憶體、網路頻寬,同時使用專利I276322所提出的方法對外部請求預先作分類,將分類後的外部請求放入工作池100中。R1(101)、R5(105)屬於外部請求分類1,所需的3種資源量(CPU、記憶體、網路頻寬)分別為(80,50,10)。R2(102)屬於外部請求分類2,所需的資源量分別為(50,50,50)。R3(103)屬於外部請求分類3,所需的資源量分別為(30,20,30)。R4(104)屬於外部請求分類4,所需的資源量分別為(60,60,30)。這些資源預估使用值由Master主機的資源預估與統計模組220動態計算得出,在此只是為了說明而直接顯示。初始狀況有三台執行主機(標示201、202及203),此三台執行主機皆為相同之主機,其中初始預設執行主機1(201)為Master主機,而執行主機2(202)與執行主機3(203)為Slave主機,且目前該兩台Slave主機中3種資源的可用值都是(100,100,100)。執行主機1(201)、執行主機2(202)與執行主機3(203)中對應的旗標陣列(2011、2021與2031)值分別為M(Master,上頭標示1為執行主機1(201))、S(Slave,上頭標示2為執行主機2(202))、S(Slave,上頭標示3為執行主機3(203))。
圖12為Master主機1(201)分派R1(101)給Slave主機2(202)後的示意圖。Master主機1(201)使用工作池介接模組210得知工作池100有外部請求R1(101)待執行。Master主機1(201)使用資源預估與統計模組220得到 R1(101)的預估使用資源為(80,50,10)。由於R1(101)的預估使用資源(80,50,10)皆不大於Slave主機2(202)與Slave主機3(203)的可用資源(100,100,100),所以Master主機1(201)任意挑選Slave主機2(202),使用分派模組230通知Slave主機2(202)來執行R1(102)。Slave主機2(202)使用執行模組240由工作池100中取出R1(101)開始執行,並使用資源計算模組250將原本可用資源減去R1(101)的預估使用資源得到剩餘可用資源為(20,50,90),並將可用資源值更新到Master主機1(201)的資源預估與統計模組220。工作池100將R1(101)移除。
圖13為Master主機1(201)分派R2(102)給Slave主機3(203)後的示意圖,因為只有Slave主機3(203)的可用資源(100,100,100)皆不小於R2(102)的預估使用資源(50,50,50),所以Master主機1(201)分派R2(102)給Slave主機3(203)。同理,圖14為Master主機1(201)分派R3(103)給Slave主機3(203)後的示意圖。接著當Master主機1(201)要分派R4(104)時,發現沒有任何Slave主機(202與203)的可用資源皆不小於R4(104),則暫不分派R4(104)。
圖15為Slave主機2(202)執行完R1(標示1011)的示意圖,並把R1(101)的資源歸還。此時Slave主機2(202)的可用資源為(100,100,100),並更新到Master主機1(201)的資源預估與統計模組220。Slave主機2(202)依據R1(101)的實際資源使用量,於資源計算模組250作紀錄,並更新到Master主機1(201)的資源預估與統計模組220。圖16為Master主機1(201)分派R4(104)給Slave主機2(202)後的示意圖,Master主機1(201)的分派模組230發現此時Slave主機2(202)有足夠資源執行R4(104),分派R4(104)給Slave 主機2(202),Slave主機2(202)的可用資源變為(40,40,70)。同時Slave主機3(203)執行完畢R2(1021)與執行完畢R3(1031)並歸還資源。
圖17為Master主機1(201)發生異常的示意圖,Slave主機2(202)發現一段時間沒收到Master主機1(201)的訊息,通知其他Slave主機(此實施例中係通知Slave主機3(203)),Slave主機2(202)與Slave主機3(203)檢查Master主機1(201)是否異常,確認Master主機1(201)異常後,設定各自主機中的旗標陣列(2021與2031)之Master主機1(201)為異常(X),通知具有最小編號的Slave主機2(202)。Slave主機2(202)使用異常處理模組260設定自己為Master,並通知Slave主機3(203),Slave主機3(203)將自身的旗標陣列2031中Master旗標設為執行主機2(202)。
圖18為執行主機2(202)成為新的Master主機的示意圖,新的Master主機2(202)仍會把原先的外部請求R4(104)執行完,但不再接受新外部請求。執行主機2(202)開始扮演Master的角色,分派工作池中的外部請求給其他Slave主機(也就是執行主機3(203))。圖19為Master主機2(202)分派R5(105)給Slave主機3(203)後的示意圖,此時新的Master主機2(202)也執行完畢R4(104)。
圖20為發生異常的執行主機1(201)於異常中回復,發出通知訊息給其他主機的示意圖。圖21為由異常中回復的執行主機1(201)加入主機群組,並成為Slave主機的示意圖,Master主機2(202)會設定執行主機1(201)為Slave主機,並通知其他Slave主機(201與203),同步更新自身的旗標陣列(2011、2021與2031)中Master/Slave識別。
以上該僅為本發明之較佳實施例,並非用來限定本發明之實施範圍; 如果不脫離本發明之精神和範圍,對本發明進行修改或者等同替換,均應涵蓋在本發明申請專利範圍的保護範圍當中。
100‧‧‧工作池(JOB POOL)
1001‧‧‧外部請求1(Req1)
1002‧‧‧外部請求2(Req2)
101‧‧‧外部請求R1
1011‧‧‧執行完畢之外部請求R1
102‧‧‧外部請求R2
1021‧‧‧執行完畢之外部請求R2
103‧‧‧外部請求R3
1031‧‧‧執行完畢之外部請求R3
104‧‧‧外部請求R4
1041‧‧‧執行完畢之外部請求R4
105‧‧‧外部請求R5
200‧‧‧主機
201‧‧‧執行主機1
2011‧‧‧執行主機1之旗標陣列
202‧‧‧執行主機2
2021‧‧‧執行主機2之旗標陣列
203‧‧‧執行主機3
2031‧‧‧執行主機3之旗標陣列
210‧‧‧工作池介面模組
220‧‧‧資源預估與統計模組
230‧‧‧分派模組
240‧‧‧執行模組
250‧‧‧資源計算模組
260‧‧‧異常處理模組
270‧‧‧資訊傳遞模組
271‧‧‧旗標陣列
步驟S11~步驟S13
步驟S21~步驟S22
步驟S31~步驟S35
步驟S41~步驟S42
步驟S51~步驟S57
步驟S61~步驟S64
步驟S71~步驟S74
請參閱有關本發明之詳細說明及其附圖,將可進一步瞭解本發明之技術內容及其目的功效;有關附圖為:圖1係為習知負載平衡系統的架構圖;圖2係為本發明之分散式環境中提供自治負載平衡主機之系統及方法的系統架構圖;圖3係為本發明之分散式環境中提供自治負載平衡主機之系統及方法中主機細部架構圖;圖4係為本發明之分散式環境中提供自治負載平衡主機之系統及方法中初始化主機編號與旗標陣列的流程圖;圖5係為本發明之分散式環境中提供自治負載平衡主機之系統及方法中Master主機定時收集Slave主機可用資源的流程圖;圖6係為本發明之分散式環境中提供自治負載平衡主機之系統及方法中Master主機分派外部請求給Slave主機的流程圖;圖7係為本發明之分散式環境中提供自治負載平衡主機之系統及方法中Slave主機執行外部請求的流程圖;圖8係為本發明之分散式環境中提供自治負載平衡主機之系統及方法中Master主機發生異常之處理的流程圖;圖9係為本發明之分散式環境中提供自治負載平衡主機之系統及方法中 Slave主機發生異常之處理的流程圖;圖10係為本發明之分散式環境中提供自治負載平衡主機之系統及方法中主機於異常後重新加入群組的流程圖;圖11係為本發明之一實施例中初始狀況示意圖;圖12係為本發明之一實施例中Master主機1分派R1給Slave主機2後的示意圖;圖13係為本發明之一實施例中Master主機1分派R2給Slave主機3後的示意圖;圖14係為本發明之一實施例中Master主機1分派R3給Slave主機3後的示意圖;圖15係為本發明之一實施例中Slave主機2執行完R1的示意圖;圖16係為本發明之一實施例中Master主機1分派R4給Slave主機2後的示意圖;圖17係為本發明之一實施例中Master主機1發生異常的示意圖;圖18係為本發明之一實施例中主機2成為新的Master主機的示意圖;圖19係為本發明之一實施例中Master主機2分派R5給Slave主機3後的狀態圖;圖20係為本發明之一實施例中主機1於異常中回復,發出通知訊息給其他主機的示意圖;圖21係為本發明之一實施例中為主機1加入主機群組,並成為Slave的狀態圖。
100‧‧‧工作池(JOB POOL)
1001‧‧‧外部請求1(Req1)
1002‧‧‧外部請求2(Req2)
200‧‧‧主機
271‧‧‧旗標陣列

Claims (8)

  1. 一種於分散式環境中提供自治負載平衡主機之系統,係使執行網路上之外部請求的多台主機可自治的進行分派以負載平衡,並可於主機異常中恢復,其包括:一工作池,係連接於一網路,該工作池具有對應之一工作池網址(IP Address),用以儲存一外部請求;以及複數個主機,該複數個主機分別連接於該網路,該複數個主機中的每個主機均有各自所對應之主機網址,並可透過該網路連接到該工作池,以執行該外部請求,且每個主機係為一主要主機(Master)或一從屬主機(Slave),該主要主機係分派該工作池中之該外部請求,而該從屬主機係執行該主要主機所分派的該外部請求;其中,該複數個主機係由一旗標陣列來識別為該主要主機或該從屬主機,且在同一時間中,該複數個主機中只有一台主機為該主要主機,其餘主機皆為該從屬主機。
  2. 如申請專利範圍第1項所述之於分散式環境中提供自治負載平衡主機之系統,其中該工作池與該複數個主機係為電腦伺服器。
  3. 如申請專利範圍第1項所述之於分散式環境中提供自治負載平衡主機之系統,其中該複數個主機係執行該主要主機或該從屬主機之功能,而該複數個主機係以該旗標陣列來識別為該主要主機或該從屬主機,且該從屬主機係執行該主要主機所分派之該工作池中之該外部請求,其中該複數個主機中各自包括下列模組:一工作池介接模組,當該主機係為該主要主機時,該工作池介接模組 定時以Client/Server(主從式架構,係將客戶端與伺服器區分開來,每一個客戶端軟體的實例都可以向伺服器發出請求)的方式連結到該工作池,以檢查該工作池是否有該外部請求待執行;一資源預估與統計模組,當該主機係為該主要主機時,該資源預估與統計模組定時記錄、儲存該些從屬主機目前可用資源,且記錄各種類型之外部請求之歷史使用資源,並取其中一類型之歷史使用資源之平均值來當作該類型之外部請求之預估使用資源;一分派模組,當該主機係為該主要主機時,該分派模組決定所分派之該外部請求由該些從屬主機中之其中一台來執行,該主要主機藉由該資源預估與統計模組搜尋該些從屬主機中符合所有資源類型的可用值皆大於等於外部請求之預估使用資源之從屬主機,若有至少兩台以上的從屬主機符合,則隨機挑選其中一台,且分派方式為該主要主機藉由一資訊傳遞模組傳送一通知訊息至被挑選的從屬主機,以通知該被挑選的從屬主機執行該外部請求;一執行模組,當該主機係為該從屬主機時,該執行模組利用該資訊傳遞模組接收該主要主機之該通知訊息後,藉由Client/Server的方式連結至該工作池,以取出該工作池中之該外部請求並執行;一資源計算模組,當該主機係為該從屬主機時,該資源計算模組使用一系統指令計算該主機的可用資源,並使用該資訊傳遞模組回報至該主要主機之該資源預估與統計模組;一異常處理模組,當該主機係為該從屬主機時,該異常處理模組定時檢查該主要主機是否有傳送可用資源量的控制訊息,由該主要主機 透過資源預估與統計模組發送給從屬主機,若無則通知其他從屬主機,並其他從屬主機皆發送訊息至該主要主機,判斷該主要主機是否異常,若該主要主機異常,則設定一旗標陣列中該主要主機為異常,主機編號最小的Slave主機設定自己為新主要主機並通知其他從屬主機,更新旗標陣列,其中該主機編號最小係指每台主機透過IP字典由小到大排序並編號,此處指編號最小的從屬主機;以及一資訊傳遞模組,係記錄該工作池與所有主機之連結資訊,即IP位址,並包含該旗標陣列以紀錄所有主機係為該主要主機或為該從屬主機,該複數個主機間之連結方式係為Client/Server架構,而該複數個主機中的每個主機開啟Server socket(伺服器插口)以接收其他主機的連結,建立好連結後,即可傳遞控制訊息與回應訊息,其中該Server socket係為伺服器端的通訊介面,用於網路上之主從式架構,可供客戶端連線以傳送訊息。
  4. 一種於分散式環境中提供自治負載平衡主機之方法,其步驟為:a.一主要主機定時利用該主要主機之一資訊傳遞模組發出一通知給所有從屬主機,使所有從屬主機分別利用本身之一資源計算模組計算本身之可用資源並回報至該主要主機,該主要主機紀錄與儲存所有從屬主機之可用資源於該主要主機之一資源預估與統計模組;b.該主要主機定時查看一工作池中是否有外部請求,若有則透過該資訊傳遞模組傳送、分派控制訊息給從屬主機;c.該從屬主機使用本身之一執行模組執行該主要主機所分派之該外 部請求,該從屬主機使用本身之該資源計算模組計算該外部請求之實際使用資源,並回傳至該主要主機之該資源預估與統計模組;d.若該主要主機與所有從屬主機中任一主機發生異常,該異常係為無法與其他主機進行連線,無法執行此系統的工作,則除了發生異常的主機外,其餘的主機立即各自進行一錯誤回復機制;以及e.若該發生異常的主機排除異常並恢復正常時,則該發生異常的主機重新加入該主要主機與所有從屬主機之群組中。
  5. 如申請專利範圍第4項所述之於分散式環境中提供自治負載平衡主機之方法,其中該主要主機分派該工作池中之該外部請求給該從屬主機執行之步驟為:a.該主要主機利用該主要主機之一工作池介接模組檢查該工作池是否有該外部請求待執行;b.若是,該主要主機利用該主要主機之該資源預估與統計模組取得該外部請求之歷史資源平均值,並以該外部請求之歷史資源平均值作為該外部請求之預估使用資源;c.該主要主機利用該主要主機之該資源預估與統計模組檢查所有從屬主機中是否有可執行該外部請求之從屬主機,該檢查之方式為搜尋所有從屬主機中符合各類型可用資源皆不小於該外部請求之預估使用資源之從屬主機;d.若搜尋出符合各類型可用資源皆不小於該外部請求之預估使用資源之從屬主機,該主要主機利用該主要主機之一分派模組傳送一通知訊息至該符合各類型可用資源皆不小於該外部請求之預估使 用資源之從屬主機,以分派該外部請求至符合各類型可用資源皆不小於該外部請求之預估使用資源之從屬主機;以及e.符合條件的該從屬主機利用本身之該資訊傳遞模組回應一控制訊息至該主要主機。
  6. 如申請專利範圍第4項所述之於分散式環境中提供自治負載平衡主機之方法,其中該主要主機發生異常時之該錯誤回復機制之步驟為:a.所有從屬主機皆利用各自本身之該資訊傳遞模組定時檢查是否未收到該主要主機要求傳送可用資源量的控制訊息,其中該控制訊息係由該主要主機透過該資源預估與統計模組發送給從屬主機;b.若是,則所有從屬主機皆利用各自本身之該資訊傳遞模組彼此發送訊息通知;c.所有從屬主機利用本身之該資訊傳遞模組檢查該主要主機是否發生異常;d.若是,所有從屬主機皆利用各自本身之一異常處理模組設定一旗標陣列中該主要主機為異常,並通知具有一最小編號之從屬主機,其中該最小編號係為每台主機透過IP字典由小到大排序並編號,此處指編號最小的從屬主機;e.該最小編號之從屬主機利用本身之該異常處理模組設定該旗標陣列,使該最小編號之從屬主機成為一新的主要主機,並透過該資訊傳遞模組發出一更動通知給其他從屬主機;f.其他從屬主機接收到該更動通知,並利用各自本身之該異常處理模組設定該旗標陣列,並更換該最小編號之從屬主機為為該新的 主要主機;以及g.該新的主要主機執行完現有外部請求,並開始執行原本該主要主機之功能。
  7. 如申請專利範圍第4項所述之於分散式環境中提供自治負載平衡主機之方法,其中所有從屬主機中任一個從屬主機發生異常時之該錯誤回復機制之步驟為:a.該主要主機利用本身之該訊傳遞模組定時檢查是否未收到所有從屬主機中某個從屬主機可用資源量之控制訊息;b.若是,該主要主機利用本身之該資訊傳遞模組發送訊息檢查該某個從屬主機是否發生異常;c.若是,該主要主機利用本身之該資訊傳遞模組通知所有從屬主機該某個從屬主機已發生異常;以及d.所有從屬主機設定該旗標陣列中該某個從屬主機為異常。
  8. 如申請專利範圍第4項所述之於分散式環境中提供自治負載平衡主機之方法,其中若該發生異常的主機排除異常並恢復正常時,則該發生異常的主機重新加入該主要主機與所有從屬主機之群組中之步驟包括:a.該發生異常的主機利用本身之該資訊傳遞模組向其他所有主機發出一加入主機群組請求;b.其他所有主機皆利用各自本身之該資訊傳遞模組回應該發生異常的主機;c.該主要主機設定該發生異常的主機為從屬主機,調整該主要主機之該資訊傳遞模組的主機編號與該旗標陣列,並利用該主要主機 之該資訊傳遞模組通知所有從屬主機,其中該主機編號係為每台主機透過IP以字典順序由小到大排序並編號:以及d.所有從屬主機依該主要主機的通知訊息,調整各自本身之該資訊傳遞模組之該主機編號與該旗標陣列。
TW101146321A 2012-12-10 2012-12-10 A system and method for providing an autonomous load balancing host in a distributed environment TWI466498B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW101146321A TWI466498B (zh) 2012-12-10 2012-12-10 A system and method for providing an autonomous load balancing host in a distributed environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW101146321A TWI466498B (zh) 2012-12-10 2012-12-10 A system and method for providing an autonomous load balancing host in a distributed environment

Publications (2)

Publication Number Publication Date
TW201424296A TW201424296A (zh) 2014-06-16
TWI466498B true TWI466498B (zh) 2014-12-21

Family

ID=51394224

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101146321A TWI466498B (zh) 2012-12-10 2012-12-10 A system and method for providing an autonomous load balancing host in a distributed environment

Country Status (1)

Country Link
TW (1) TWI466498B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI346880B (en) * 2004-11-30 2011-08-11 Ibm E-business on-demand for design automation tools
TWI348295B (en) * 2004-01-08 2011-09-01 Interdigital Tech Corp Wireless communication method and apparatus for managing radio resources using silent measurement periods
TWI348846B (en) * 2007-05-18 2011-09-11 Nvidia Corp Intelligent failover in a load-balanced networking environment
CA2791793A1 (en) * 2010-04-13 2011-10-20 Research In Motion Limited Methods and devices for load balancing in parallel entropy coding and decoding
TWI351833B (en) * 2003-07-16 2011-11-01 Interdigital Tech Corp Method and apparatus for storing mobile station p

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI351833B (en) * 2003-07-16 2011-11-01 Interdigital Tech Corp Method and apparatus for storing mobile station p
TWI348295B (en) * 2004-01-08 2011-09-01 Interdigital Tech Corp Wireless communication method and apparatus for managing radio resources using silent measurement periods
TWI346880B (en) * 2004-11-30 2011-08-11 Ibm E-business on-demand for design automation tools
TWI348846B (en) * 2007-05-18 2011-09-11 Nvidia Corp Intelligent failover in a load-balanced networking environment
CA2791793A1 (en) * 2010-04-13 2011-10-20 Research In Motion Limited Methods and devices for load balancing in parallel entropy coding and decoding

Also Published As

Publication number Publication date
TW201424296A (zh) 2014-06-16

Similar Documents

Publication Publication Date Title
Masri et al. Minimizing delay in IoT systems through collaborative fog-to-fog (F2F) communication
US9699244B2 (en) Load balanced network file accesses
TWI547817B (zh) 叢集運算架構的資源規劃方法、系統及裝置
US8151062B2 (en) Consistency models in a distributed store
US9330199B2 (en) Striping of directed graphs and nodes with improved functionality
JP5914245B2 (ja) 多階層の各ノードを考慮した負荷分散方法
RU2746042C1 (ru) Способ и система для передачи сообщения
US10673936B2 (en) Self-organized retail source request routing and distributed load sharing systems and methods
CN103593242A (zh) 基于Yarn框架的资源共享控制系统
CN110069210B (zh) 一种存储系统、存储资源的分配方法及装置
CN104166597A (zh) 一种分配远程内存的方法及装置
US20140059315A1 (en) Computer system, data management method and data management program
JP2012079242A (ja) 複合イベント分散装置、複合イベント分散方法および複合イベント分散プログラム
CN109951537A (zh) 一种面向区块链的负载均衡分发方法
US9736235B2 (en) Computer system, computer, and load balancing method
US20230136661A1 (en) Task scheduling for machine-learning workloads
CN104811503A (zh) 一种r统计建模系统
US20160127256A1 (en) Load balancing for multi-tiered querying
CN106603645A (zh) 一种大规模云存储的副本服务器一致性处理方法及系统
RU2721235C2 (ru) Способ и система для маршрутизации и выполнения транзакций
JP7507098B2 (ja) 分散型マルチノード制御システム及び方法
TWI466498B (zh) A system and method for providing an autonomous load balancing host in a distributed environment
Wen et al. Load balancing consideration of both transmission and process responding time for multi-task assignment
Shukla et al. Survey on load balancing techniques
JP2016157367A (ja) 分散処理システム

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees