一、目標 參考云風skynet,實現go版本的開源服務器引擎。
二、細節
(一)服務
按服務來拆模塊的好處不說了。只說go來的實現方式。go里有channel和goroutine。消息隊列和輕量級線程都天然解決了。
(二)服務間的通信
同進程內的服務之間通信,直接往對方channel發消息即可。不同進程里靠各進程自己的harbor服務來轉發。harbor服務來負責集群間的通信。
集群里設置一個master服務來做全局的名字服務,主要用于登記和同步集群里各個進程開啟的各個服務。所有harbor啟動后向master注冊自己,master向所有harbor廣播同步新加入的這個機器。
(三)組播
經常需要向某幾個服務廣播一個消息,組播問題。multicast服務來管理組播。
(四)日志
使用glog。
三、已實現的服務
(一)master和harbor
暫時master做為harbor的中心控制器的。后續會改進,做成harbor之間兩兩通信,減少對master的單點依賴。
(二)gate
gate用來做通常的網絡監聽用。目前的很簡單,用戶需要向這個服務器注冊自己的包解析和處理器。
(三)web
web負責http的監聽,template的加載cache,幾個通用函數的提取。
四、ps