• <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>

            Sheppard Y

            keep thinking keep coding.

            node.js手游服務(wù)器調(diào)研

            2016-07-08 日更新 
            此篇博客已經(jīng)遷移到新博客,并做行文檢查和優(yōu)化排版:
            http://blog.clawz.me/2013/08/12/13-nodejs-mobile-game-server-research/

             


            一、node.js能做啥

                http://www.infoq.com/cn/articles/what-is-nodejs

             

            二、雜項(xiàng)問(wèn)題

            1. http的長(zhǎng)連接是不是也是只能req/rep模式,能實(shí)現(xiàn)服務(wù)器端push嗎?

                http的長(zhǎng)連接即HTTP keep-alive(HTTP1.1里加入),這個(gè)原生的只是為了更少的建立和關(guān)閉tcp鏈接,可以減少網(wǎng)絡(luò)流量;因?yàn)橐呀⒌膖cp握手,減少后續(xù)請(qǐng)求的延時(shí)等。這個(gè)http長(zhǎng)連接不支持全雙工通信。

                http實(shí)現(xiàn)“服務(wù)器推”的技術(shù),一是借助客戶端Flash XMLSocket或者Java Applet套接口來(lái)實(shí)現(xiàn);另一種是comet技術(shù)。(還有一種遭罪的客戶端以一定間隔向服務(wù)器發(fā)出請(qǐng)求的輪詢就不提了)

                comet有兩種:

                    (1)基于AJAX的長(zhǎng)輪詢(long-polling技術(shù))

                    (2)基于 Iframe 及 htmlfile 的流(streaming)方式

                這兩種方式看描述已經(jīng)離手游服務(wù)器差遠(yuǎn)了,就不去招惹它們了吧。

             

            2. 大規(guī)模網(wǎng)站的架構(gòu)?怎么做到水平擴(kuò)展的?

                網(wǎng)站的需求跟游戲不一樣,網(wǎng)站都是http就夠了,req/rep即可,沒有交互等廣播同步之類的復(fù)雜狀態(tài)。

                (pomelo里表示游戲的業(yè)務(wù)模型很難做到傳統(tǒng)網(wǎng)站那種無(wú)限水平擴(kuò)展)

             

            3. websocekt是什么?

                html5開始提供的,為了使瀏覽器和服務(wù)器間進(jìn)行全雙工通訊的長(zhǎng)鏈接協(xié)議。websocket協(xié)議本質(zhì)上是一個(gè)基于TCP的長(zhǎng)連接協(xié)議。與傳統(tǒng)C/S長(zhǎng)連接的區(qū)別在于,websocket鏈接開始時(shí)的握手協(xié)議,客戶端首先要向服務(wù)器發(fā)起一個(gè)HTTP騎牛,這個(gè)請(qǐng)求和通常的HTTP請(qǐng)求不同,包含了一個(gè)附加信息"Upgrade:WebSocket"表明申請(qǐng)協(xié)議升級(jí),服務(wù)器回應(yīng)后,即握手完成,websocket鏈接建立起來(lái),雙方自由通信,直到一方關(guān)閉鏈接。

                websocket相對(duì)于http的優(yōu)點(diǎn),除了全雙工通訊,還有服務(wù)器與客戶端交換的header信息很小。

                websocket與傳統(tǒng)socket的區(qū)別,前者有幀協(xié)議,不需要上層做拼包了。

             

            4. redis可以直接搞集群?jiǎn)幔?/p>

                數(shù)據(jù)量太大時(shí),redis的持久化會(huì)影響性能,解決方案時(shí)用個(gè)slave專職做持久化。另外redis容災(zāi)和傳統(tǒng)web應(yīng)用的減壓,就開多個(gè)slave,用于分擔(dān)讀的壓力。

                當(dāng)庫(kù)到一定數(shù)量時(shí),可以用分庫(kù)分表來(lái)水平擴(kuò)展。 

             

            5. node.js能用c++擴(kuò)展嗎?

                v8和node都是c++寫的。

             

            三、網(wǎng)易pomelo能干些啥

                分布式服務(wù)器,方便擴(kuò)展。另外實(shí)現(xiàn)了很多游戲常用模塊,如aoi等。

             

            四、公司的node.js框架有哪些不能做的

            1. websocket實(shí)現(xiàn)了嗎?

                實(shí)現(xiàn)中。

            2. 方便分布式擴(kuò)展嗎?

                貌似沒有pomelo那么方便。 

             

            五、總結(jié)

                ​node.js做手游服務(wù)器的開發(fā)還是挺方便的,pomelo已經(jīng)做很多事情……

             

            N、參考

            1. Comet:基于 HTTP 長(zhǎng)連接的“服務(wù)器推”技術(shù):http://www.ibm.com/developerworks/cn/web/wa-lo-comet/

            2. WebSocket:http://zh.wikipedia.org/wiki/WebSocket

            3. 使用 HTML5 WebSocket 構(gòu)建實(shí)時(shí) Web 應(yīng)用:http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/

            4. pomelo:https://github.com/NetEase/pomelo

            5. HTTP長(zhǎng)連接:http://www.blogjava.net/xjacker/articles/334709.html

            6. Redis復(fù)制與可擴(kuò)展集群搭建:http://www.infoq.com/cn/articles/tq-redis-copy-build-scalable-cluster

            posted on 2013-08-12 17:21 Sheppard Y 閱讀(3862) 評(píng)論(2)  編輯 收藏 引用 所屬分類: 設(shè)計(jì)架構(gòu)nodejs

            評(píng)論

            # re: node.js手游服務(wù)器調(diào)研 2013-10-07 21:38 Kevin Lynx

            我記得node.js有個(gè)包裝了websocket的庫(kù)(不支持websocket的會(huì)有模擬)

            ps, http://socket.io/ socket.io  回復(fù)  更多評(píng)論   

            # re: node.js手游服務(wù)器調(diào)研 2013-10-08 15:13 Sheppard Y

            @Kevin Lynx
            恩,node.js的websocket底層庫(kù)是有的。我隨筆里寫的是指我們公司那套框架里是否支持(使用)了websocket,之前只支持(使用)了http。
            后來(lái)我這個(gè)項(xiàng)目沒有管websocket了,用了原生socket。:)  回復(fù)  更多評(píng)論   

            <2013年10月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計(jì)

            留言簿(1)

            隨筆分類(77)

            隨筆檔案(58)

            me

            基友

            同行

            業(yè)界前輩

            最新隨筆

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            久久这里的只有是精品23| 久久精品中文闷骚内射| 国产精品国色综合久久| 久久精品国产精品亚洲精品 | 草草久久久无码国产专区| 色综合合久久天天给综看| 国产成人无码精品久久久免费| 人妻无码αv中文字幕久久琪琪布| 国内精品久久久久影院网站| 久久精品a亚洲国产v高清不卡| 亚洲成色WWW久久网站| 久久久久久久久久久| 久久精品免费一区二区| 国产精品青草久久久久福利99| 亚洲综合婷婷久久| 国产精品美女久久久久av爽| 国产99久久久国产精品~~牛| 久久国产精品久久精品国产| 青青青国产成人久久111网站| 伊人久久精品线影院| 国产69精品久久久久99| 很黄很污的网站久久mimi色| 日韩十八禁一区二区久久| 久久人妻AV中文字幕| 国产精品无码久久久久久| 精品蜜臀久久久久99网站| 久久香蕉综合色一综合色88| 国内精品久久久久久中文字幕| 久久久久久久综合综合狠狠| 久久久久久久91精品免费观看| 亚洲午夜久久久久久久久久| 久久国产色AV免费观看| 国产成人精品久久一区二区三区| 粉嫩小泬无遮挡久久久久久| 久久久久亚洲精品无码网址| 久久久久久午夜精品| 中文字幕一区二区三区久久网站 | 狠狠久久综合伊人不卡| 久久天天躁狠狠躁夜夜不卡| 久久99国产精品久久99果冻传媒| 久久这里有精品视频|