天天看點

設計mooon排程器遇到的難題

mooon的設計進入關鍵時刻,有幾個決策點還沒有定下來,如下:

1.是否同時支援程序和線程模型

程序模型是指核心為一個獨立的程序,而每個業務又為獨立的一個程序,業務可以為多線程,同時核心會産生相應個數的核心線程與業務線程一一對應,核心線程和業務程序在建立業務時産生。

線程模型是業務和核心運作在相同的程序中,核心線程即為業務線程,在建立業務時産生。

2.service和線程不綁定(即不建立親和關系),而session和線程建立綁定關系是否合理?

這麼做重要的原因是考慮效率和保持簡單,service不綁定,可以保證随機排程,這樣就可以在随機的線程中建立session,并由這個線程排程和管理session(建立和銷毀);同時由于session隻會被一個線程排程,會使得真對單個session的程式設計不需要考慮線程安全;另外,不同session運作在不同線程中,又可保證一定的并發性,但線程和session是一對多的關系,因為session數量允許超過10萬個。

3.一個session是否要支援可以有子session,子session下是否還要有子session

這個主要是考慮多方會話和群組類需求。

4.如果父session和線程是綁定關系,那子session是否和父session綁定到相同的session?

這個主要影響到複雜度,最好是可以相同,但是否會影響實用性了?

目前的計劃:同時支援線程和程序模型,并且對于同一節點的程序模型業務,會使用pipe通訊繞過網絡,影響最大的是第4點。

孤獨,希望可以看到更多的讨論,計劃端午三天完成設計圖。

繼續閱讀