我建立一個遊戲服務器在Python,我只是想對我的想法了服務器的體系結構的一些輸入。評估我的Python服務器結構
所以,大家都知道,Python不能擴展跨與單個進程的核心。因此,在具有4個內核的服務器上,我需要產生4個進程。
下面是當一個客戶機希望連接到服務器羣集所採取的步驟:
客戶端最初與連通。IP是網關節點。網關會跟蹤每臺計算機上有多少客戶端,並將連接請求轉發給客戶端數最少的計算機。
在每臺機器上,都有一個Manager進程和X服務器進程,其中X是處理器上的核心數量(因爲Python無法在覈心之間擴展,所以我們需要生成4個核心以使用100%的四核處理器)
經理的工作是讓多少客戶對每個進程的軌道,以及其中是否崩潰重啓進程。當連接請求從網關發送到管理器時,管理器查看該計算機上的服務器進程(圖中的3),並將請求轉發給擁有最少量客戶端的任何進程。
服務器進程是實際不與客戶的溝通。
這是3機器集羣的樣子。爲了圖表,假設每個節點有3個核心。 alt text http://img152.imageshack.us/img152/5412/serverlx2.jpg
這也讓我想到了 - 我能實現這種熱插拔嗎?由於每個進程都由管理員控制,因此當我想要交換服務器進程的新版本時,我只需讓經理知道它不應再發送更多連接,然後我將註冊新版本進程舊的。只要客戶端連接到舊版本,舊版本就會保持活動狀態,然後在沒有更多客戶端時終止。
Phew。讓我知道你們的想法。