打算用這個嘗試做一個簡單的交互APP服務(wù)器。
前提:
1、一個慵懶的c++ win平臺 服務(wù)器程序員 - -。
2、在做一個APP游戲的服務(wù)器,想嘗試一下用workerman去做
3、之前用這個做過一次,但是當時的需求過于簡單,所有的請求都針對個人用戶,邏輯上不牽扯到多個用戶之間的數(shù)據(jù)運算。
4、花了1個星期,手冊閱讀完畢,其它用戶的提問也翻來翻去看了好多。
感覺所有的準備工作完事后,有些問題搞不清楚。
就應(yīng)用來說需求簡單說是一個棋牌游戲服務(wù)器,大家開一桌游戲,然后一起打牌什么的。
聊天什么的也就是基本功能了,不說。
本來基本的一起打牌什么的邏輯也是蠻簡單的,以之前的做法來說,用戶連上來建個房間給管理一下,發(fā)一副牌大家消息通訊玩一玩就完了。
但是我被workerman的多進程這玩意兒給搞暈了,寫了測試代碼看到worker是多個進程的,用戶連上后是不一定在哪個進程上的,那這一副牌怎么讓在不同進程上的用戶一起玩呢?啟動單個worker,多個gate?那在單個進程worker撐不住的時候如何做擴展呢?
從某個別人的問題中看到redis擴展,不知道我理解的對不對,難道是把redis看作是全局內(nèi)存,然后多個進程看作是從前的線程,這么看?。。。
是不是我哪點知識缺了,哪里理解錯了。。。
第一次自己嘗試做一個服務(wù)器,麻煩幫忙給點思路,或者說教育一下一個提供給群體的棋牌服務(wù)器應(yīng)該是一個什么樣的構(gòu)架,能實現(xiàn)進程擴充來支持用戶增長,那就更感激不盡了。>_<
感謝你這么詳盡的問題描述。
這個問題比較好解決,啟動多個單進程的worker,
由于是單進程(一個端口開一個進程),客戶端通過同一端口連接到的肯定是同一個進程,這樣單個進程內(nèi)各個客戶端通訊非常方便。棋牌類游戲,只要一個房間的幾個用戶通訊即可。
每個worker進程可以作為一個區(qū),每個區(qū)多個房間(用進程內(nèi)的數(shù)組來存儲房間數(shù)據(jù))。棋牌類游戲通訊量非常小,單個進程能夠支持上萬人在線了。開多個端口實例,就等于開多個區(qū),那么就能支持更高的在線用戶數(shù)。開更多的服務(wù)器,每個服務(wù)器上開多個端口實例,這樣可以幾乎無限制擴展。
你的情況非常類似下面這個問題,可以看下
http://wenda.workerman.net/?/question/523
網(wǎng)游服務(wù)器進化史:早起選c++,原因運行速度快!現(xiàn)如今,c++的缺點開發(fā)成本大,難度高,速度慢。而運算速度的優(yōu)勢面對現(xiàn)在的手機平臺需求更是不值一提。
于是考慮嘗試一下其它語言寫服務(wù)器。
然后有一次工作的原因嘗試過寫PHP代碼,后來從不同的框架、引擎,找到了workerman,并且嘗試著寫了一個http應(yīng)用服務(wù)。
于是,一個c++網(wǎng)絡(luò)游戲服務(wù)器程序員的PHP服務(wù)器之旅這樣一條不歸路起飛了 >_<
就不要指望我還知道些什么socket.io……thinkphp……php語言學(xué)問……
現(xiàn)如今我就是一個懂得一些服務(wù)器架構(gòu)的小碼農(nóng)而已……………………