青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

戰魂小筑

討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

   :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

多線程+同步阻塞模型

在我們的游戲項目中使用的golang服務器開發方式如下

1.多線程邏輯

2.同步阻塞. 也就是說, 每個人一個線程(goroutine), io線程=邏輯線程

這種方式的優點:

1. 同步阻塞方式與人的思維方式類同

2. 邏輯處理性能有一定提升

在大規模使用這種模式編寫邏輯后, 我們發現了這種模式只有1個缺點: 編寫者需要處理多線程關系

但這本身確實直接致命的, 回想C++時代, 多線程處理時, 調試重現的困難… 腦補景象太慘不敢直視

單線程+異步多進程模型

在C++時代, 我曾經編寫過一套asio的C++服務器框架. 采用io多線程, 邏輯單線程, 依賴著C++高性能的優勢, 讓開發便捷簡單且無需關心線程問題.

那么到了golang時代, 為什么不能試下單線程異步多進程方式來編寫邏輯?

與多線程同步阻塞對比后, 我們發現, 兩者優缺點互補. 那這就回到了領域選型問題了. 對于游戲服務器需要的上手簡單, 開發便捷, 壓力降低(非MMO)這些特點來說, 單線程異步多進程再合適不過了

那么, 我們在用golang編寫單線程異步多進程服務器應該注意哪些點呢?

1. socket處理完全封裝, 只通過channel拋出到邏輯線程排隊處理

2. 數據庫, rpc及其他io處理, 一律改為異步回調模式, 不使用同步接口

3. 玩家存盤提交數據可以考慮復制并提交到存盤線程方式, 提高性能.

4. 采用多進程架構, 比如設網關進程, 把io壓力分散到進程中

5. 邏輯編寫中, 不允許使用go開線程及channel, 有需要提高性能部分需要單獨編寫

 

Actor模型的痛

cellnet在開發時本來考慮使用actor模型來進一步簡化多線程邏輯的麻煩, 經歷了一段時間的原型開發后, 發現了一些問題, 列舉如下:

1. golang的強類型不適合actor模型這種經常需要動態生成各類消息的模型, 但skynet(C+lua)/erlang就有天生優勢

2. actor模型本身不是萬能的, 不能解決所有需求, 特別是游戲

3. actor模型理解到應用有一定的難度. 本身還需要搭建框架, 上手復雜

總之, 看過一些erlang及skynet的用例, 沒有應用的很純正且成熟的成功actor模型案例, 從傳統socket服務器框架跨越到actor模型會扯到蛋, 因此, 后期cellnet會考慮回歸到成熟的socket服務器框架. 把架構做到簡單上手, 高擴展上.

posted on 2015-09-09 19:06 戰魂小筑 閱讀(6739) 評論(6)  編輯 收藏 引用 所屬分類: 網絡 服務器技術Golang

評論

# re: 對golang服務器開發模式的一些思考 2015-09-09 23:43 威士忌
我也是用單線程異步化的這種方式,現在是用tornado中coroutine和Future來實現。
邏輯單線程,是無需擔心多線程問題,這點很舒服,但單線程無法很好利用多核也是覺得沒有最大化性能,或者游戲真是夠用就行。  回復  更多評論
  

# re: 對golang服務器開發模式的一些思考[未登錄] 2015-09-10 11:37 Arthur
1. 異步的做法在error handling那邊會比較疼的,

同步的做法出錯了處理下就好了,Go語言的goroutine層的阻塞也不會讓底層阻塞。但是到了異步,Actor把消息丟給另一個Actor去執行,后面可能出錯,而錯誤信息的反饋就比較麻煩了。
如果你要等結果出來,就又回到了同步時代。
如果你不等執行結果,繼續往下走,那出錯了能回滾么?

2. socket處理完全封裝, 只通過channel

雖然看上去很美,性能上還是有缺陷的。
每個連接會開兩個goroutine,中間還有channel數據傳遞引入的開銷。
相比于epoll加回調,多執行了很多東西。goroutine is cheap,but not free

3. 邏輯復雜以后,數據的歸屬難以處理

Actor必然涉及到大量的消息交換。而為了效率這個肯定不是深拷貝數據的。既然還有內存共享,后面也不是一個很舒心的事情。模型出發點是不要處理低層的鎖相關,但還是不得不面臨這些問題。

4. 一些帶執行順序的邏輯以及死鎖問題

有些會有啟動順序或者服務依賴之類,這是用Actor模型做的時候很煩的東西。另外一個是有這種情況時,特別要注意成環死鎖。

....先說這些吧。同樓主一樣思考過這些東西,也踩過一些坑....
都在探索,多交流。
  回復  更多評論
  

# re: 對golang服務器開發模式的一些思考 2015-09-10 13:28 戰魂小筑
@Arthur
很給力的建言! 贊!

P.S. 你用的Actor模型是erlang還是其他語言?  回復  更多評論
  

# re: 對golang服務器開發模式的一些思考 2015-09-15 19:11 虞雙齊
現在 游戲開發領域使用 Go 的越來越多了?  回復  更多評論
  

# re: 對golang服務器開發模式的一些思考 2015-09-15 19:12 戰魂小筑
@虞雙齊
多  回復  更多評論
  

# re: 對golang服務器開發模式的一些思考 2015-09-15 19:15 虞雙齊
@戰魂小筑
這回復速度,神!  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲激情电影中文字幕| 久久全球大尺度高清视频| 亚洲综合激情| 这里只有精品丝袜| 在线视频你懂得一区| 99精品国产在热久久婷婷| 亚洲人成人77777线观看| 亚洲国产精品一区二区久 | 欧美精品成人| 欧美日韩一本到| 国产欧美精品一区二区三区介绍| 国产伦精品一区二区三区高清版| 精品二区久久| 99在线精品观看| 亚洲影视在线| 久久精品视频在线播放| 蜜桃av噜噜一区| 91久久精品一区| 日韩一区二区久久| 欧美一区二区三区另类| 另类激情亚洲| 国产噜噜噜噜噜久久久久久久久 | 亚洲一区二区三区色| 亚洲欧美不卡| 一本到高清视频免费精品| 久久综合99re88久久爱| 久久久久亚洲综合| 欧美伦理91i| 国产视频一区在线| 日韩午夜电影av| 久久精品一本久久99精品| 欧美国产精品专区| 小处雏高清一区二区三区| 欧美成人免费在线视频| 国产精品私房写真福利视频| 最新日韩在线| 久久久久久精| 亚洲一区二区欧美日韩| 欧美金8天国| 狠狠久久亚洲欧美专区| 午夜日韩在线观看| 亚洲毛片视频| 免费看黄裸体一级大秀欧美| 国产欧美一区二区三区国产幕精品| 亚洲美女少妇无套啪啪呻吟| 久久人人九九| 亚洲欧美日韩系列| 欧美日韩在线一二三| 亚洲日本成人女熟在线观看| 久久久综合精品| 在线亚洲一区二区| 欧美日本久久| 一区二区国产日产| 欧美激情亚洲综合一区| 久久免费视频网| 一区二区三区在线高清| 久久在线免费| 久久国产一区二区三区| 国外成人在线视频| 久久精品人人做人人爽| 欧美一级片久久久久久久| 亚洲成人在线视频播放 | 麻豆精品在线视频| 欧美在线www| 国产农村妇女精品一区二区| 亚洲性视频网站| 亚洲人久久久| 欧美精品乱码久久久久久按摩 | 久久九九久久九九| 欧美一级淫片aaaaaaa视频| 国产精品夜夜夜| 小处雏高清一区二区三区| 国产精品99久久久久久人| 欧美午夜精品一区二区三区| 亚洲在线观看免费视频| 猛干欧美女孩| 在线日韩一区二区| 久久精品视频导航| 欧美一区午夜精品| 国产尤物精品| 欧美成人综合一区| 欧美高清影院| 亚洲在线观看| 久久久久九九九| 最新成人在线| 亚洲午夜高清视频| 伊人夜夜躁av伊人久久| 亚洲夫妻自拍| 国产精品日韩| 美女精品视频一区| 欧美国产精品专区| 欧美日产一区二区三区在线观看| 一本色道久久综合亚洲精品不 | 一区二区三区日韩精品| 国产区亚洲区欧美区| 欧美成人免费观看| 国产精品理论片| 蜜臀91精品一区二区三区| 欧美日韩精品国产| 久久综合色播五月| 欧美午夜一区二区福利视频| 久久中文精品| 国产精品高清免费在线观看| 久久综合狠狠综合久久综青草 | 亚洲国产精品ⅴa在线观看| 日韩视频免费观看高清在线视频| 国产日韩欧美在线一区| 亚洲第一精品久久忘忧草社区| 欧美系列一区| 亚洲电影欧美电影有声小说| 国产欧美在线| 中文国产成人精品久久一| 一区二区三区在线观看欧美| 99这里只有久久精品视频| 激情欧美一区| 亚洲天堂久久| 日韩一区二区高清| 蜜臀99久久精品久久久久久软件| 亚洲欧美日韩直播| 欧美日韩午夜剧场| 欧美www在线| 国产一区二区精品久久91| 亚洲精品一区二区三区99| 中文亚洲视频在线| 亚洲日本理论电影| 久久综合精品国产一区二区三区| 欧美亚洲三区| 欧美日韩色综合| 亚洲国产黄色| 亚洲电影在线看| 久久精品一二三区| 久久精品99国产精品| 欧美视频在线观看免费| 欧美激情一区二区三区| 伊人久久综合| 亚洲综合999| 久久久久**毛片大全| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲午夜伦理| 欧美不卡一卡二卡免费版| 国产亚洲视频在线| 亚洲欧美日本日韩| 欧美一区二区精品| 国产视频在线观看一区二区三区| 亚洲男人av电影| 亚洲欧美一区二区激情| 国产精品嫩草99av在线| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲人午夜精品| 欧美va亚洲va香蕉在线| 欧美国产高清| 亚洲乱码国产乱码精品精 | 欧美在线一二三| 国产欧美一区二区色老头 | 在线播放国产一区中文字幕剧情欧美| 亚洲女同在线| 久久久午夜精品| 亚洲第一精品夜夜躁人人躁| 麻豆成人91精品二区三区| 亚洲经典自拍| 久久久久久久久综合| 你懂的视频一区二区| 亚洲人午夜精品| 欧美日韩午夜在线| 亚洲欧美国产精品桃花 | 亚洲特黄一级片| 久久九九国产精品怡红院| 亚洲国产综合在线| 欧美先锋影音| 久久亚洲国产成人| 日韩午夜在线视频| 久久一区二区三区国产精品| 亚洲日本在线观看| 国产欧美韩日| 欧美成人中文| 亚洲综合三区| 亚洲三级免费电影| 久久免费国产| 亚洲特色特黄| 亚洲激情自拍| 国产日韩一区二区三区| 欧美一区网站| 亚洲二区三区四区| 久久综合九色九九| 一区二区三区在线视频免费观看 | 欧美亚洲成人网| 国产午夜精品久久久久久久| 久久久水蜜桃av免费网站| 国产精品一区二区三区乱码 | 午夜亚洲视频| 欧美11—12娇小xxxx| 一区二区三区视频在线看| 黄色日韩网站| 国产精品久久久久久久免费软件| 久久福利影视| 亚洲欧美日韩精品久久奇米色影视| 欧美激情第二页| 久久在精品线影院精品国产| 国产又爽又黄的激情精品视频| 欧美三级电影大全|