畢業設計選的就是關於分布式運算,也不清楚算不算先這麼寫。
選的演算法是n女皇演算法,隨著階層上公升運算量急劇上公升,是個比較不錯的的演算法。
開始正題
專案的結構為伺服器端,運算節點端,管理端。大致如下圖
運作方式:客戶端上傳任務->伺服器對任務進行分解->伺服器檢索空閒計算節點並分發任務、
計算節點:
接受分解過的任務,進行運算得出結果並返回給伺服器。
個人覺得計算節點這塊難度可能就是如何使分解後的任務進行位運算。
伺服器:
對任務進行分解,我的想法就是利用樹進行分解,最後提取任務的時候直接子節點到根節點的路徑就是分解後的任務.
對計算節點進行負載均衡,開闢了幾個執行緒用來執行socket的接受資料,防止主線程卡死之類的.
伺服器啟動時會對sql進行任務讀取,將未完成的任務讀取到記憶體中並開始計算任務
當計算節點掉線時,伺服器端會對相應的任務進行重置,分配給空閒計算節點
當計算節點計算完畢返回結果,伺服器會儲存到資料庫中,當然使用事務提交方式,幾秒提交一次.
客戶端:
因為畢業設計還沒答辯,因此不放原始碼了。
以下是效果圖:
客戶端
伺服器端
計算節點端:
經過測試,21階女皇使用8臺電腦經過四小時計算結果為314666222712 與實際答案一致
關於分布式快取
快取的目的就是為了提高響應速度,尤其是併發訪問的速度,降低資料庫伺服器的壓力,在同等硬體配置的情況下,提供更高的系統效能。總的來說,請指導原則就是 盡量用低開銷的計算代替高開銷的計算。比如直接從資料庫查詢的開銷要遠高於記憶體中的計算返回,網路請求要遠高於本地 同一vm中 請求。如果單從這一點上來分析...
分布式 分布式系統的設計
在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...
分布式事務 分布式事務的實現
如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...