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點。
孤獨,希望可以看到更多的討論,計劃端午三天完成設計圖。