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