設計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點。

 
孤獨,希望可以看到更多的討論,計劃端午三天完成設計圖。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章