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