1. 程式人生 > >基於機器學習的可擴充套件HCGraph演算法

基於機器學習的可擴充套件HCGraph演算法

HCGraph 是Leviatom網路的核心演算法。在前面的文章中, 我們介紹過該演算法利用Gossip 協議族構建全網信任模型。HCGraph利用類似於HashGraph的Gossip以及Gossip about Gossip協議來實現高效的信任關係傳遞。利用該協議,我們可以在獲得一個比較完整的全域性網路互信關係。

但是,在未來真實系統裡百萬節點級別的分散式環境中,因為受限於網路負載,就有可能會引發網路熱點負載過重。如果受限於網路負載,就會影響節點達成共識的速度。

因此,我們設計了一個基於機器學習的網路連結預測的演算法,來解決這個問題。此外,我們還設計了一個基於分散式的系統架構來實現它。接下來,我們詳細介紹一下:

假設我們需要預測節點u到v之間的證實關係,而u到v並沒有直接發起過證實。我們可以收集兩個型別的圖計算資訊。

第一個型別,我們共收集七個維度的資訊,這些資訊僅與這兩個節點本身與整個網路世界的關係。這其中包括,u 證實的可信節點;u 證實的不可信節點;u證實的所有節點;證實v為可信的節點;證實v為不可信的節點;所有證實v的節點;u和v的共同鄰接節點的數量。

第二個型別,我們共收集16個維度的資訊,這些資訊取決於共識節點u和v之間的互動。根據兩節點間證實關係的方向、信任關係,一共有(2*2)*(2*2)=16種關係。

結合兩個型別的資訊,或者僅使用其中一個型別的資訊,採用機器學習的演算法對部分資料進行訓練,而對另一部分資料進行互動測試。

共識節點之間的證實關係是實時地儲存在共識節點本地的資料結構中的,那麼要實現此演算法就涉及到兩個問題:

1)如何獲取到所有周期性的證實資訊來訓練機器學習模型;

2)當需要預測u和v之間的信任關係時,如何抓取到u和v的實時證實資訊來進行預測。

在這裡,第一個問題是批處理的計算問題,第二個問題則是在分散式系統中的實時計算問題。針對這兩個問題,以及共識節點本地化儲存、證實的需求,我們抽象出了三個模組:

實時異構共識圖

共識節點本身及其之間的通訊所組成,主要的功能便是建立起共識節點之間的證實關係,並將這些關係儲存在本地的可持久化的資料結構中。

批處理機器學習

由一個Hadoop生態搭建起來的ETL系統加上構建在其上的機器學習元件組成,其採用pull模型來從各個元件中週期性的同步出共識節點的證實資訊,並且以分片的方式來訓練出機器學習的模型,來供後續預測的需要。

ETL:將業務系統的資料經過抽取、清洗、轉換之後載入到資料倉庫的過程。目的是將企業中的分散、零散、標準不統一的資料整合到一起。

彈性拉伸

一個基於Paxos的狀態註冊模組,當新的共識節點加入或者舊的共識節點退出的時候,會在Paxos機上註冊自己的服務,這樣當客戶端需要進行服務的時候便能夠從Paxos機中尋找到正確的路由資訊來進行實時的資訊獲取和預測。Paxos機是整個Leviatom生態的核心基礎,需要保證高可用、高效能和高一致性。

因此,利用基於機器學習的可擴充套件HCGraph演算法,便可達到避免網路熱點的可橫向擴充套件的互信網路。