最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js適合游戲后臺(tái)開發(fā)嗎?

 更新時(shí)間:2014年09月03日 08:54:40   投稿:junjie  
這篇文章主要介紹了node.js適合游戲后臺(tái)開發(fā)嗎?node.js是不是能代替C++開發(fā)游戲后臺(tái)呢?看完本文我想你會(huì)有一定的了解了,需要的朋友可以參考下

網(wǎng)站服務(wù)器和游戲服務(wù)器是怎么樣聯(lián)系到一起的?

1. 游戲分很多種,咱們先來看看MMORPG。

再怎么簡單的RPG服務(wù)器都免不了處理多人交互的情形,上百人在同一個(gè)場景里面,每個(gè)客戶端都需要收到其他所有人的操作信息。

其次,用戶的操作是非常頻繁的,一般的服務(wù)器傾向于持有長連接。而且這些鏈接的是頻繁交互的,沒有明顯的持久的分區(qū)策略,所以限制了服務(wù)器的橫向擴(kuò)展,同一個(gè)場景往往只能放在一個(gè)物理機(jī)上面運(yùn)行。

再次,端游通常是不敢把邏輯運(yùn)算放客戶端的,用戶分分鐘給你破解掉,改改金幣,刷兩件裝備再常見不過了。所以這一臺(tái)地圖服務(wù)器得驗(yàn)證地圖內(nèi)所有玩家的操作,并計(jì)算怪物AI、掉率等一系列業(yè)務(wù)邏輯。

我們可以看到,傳統(tǒng)游戲服務(wù)器與網(wǎng)頁服務(wù)器具有明顯的區(qū)別,具有長連接、多廣播、有復(fù)雜的業(yè)務(wù)邏輯、分區(qū)策略受限等獨(dú)特的業(yè)務(wù)需求。

2. 咱們?cè)趤砜纯床l(fā)帶給游戲服務(wù)器的好處是什么。

并發(fā)實(shí)際上是一種程序邏輯流程,他是不需要多核物理支持的。大致意思就是讓多個(gè)獨(dú)立的邏輯流看上去像是在同時(shí)跑一樣。操作系統(tǒng)級(jí)別的并發(fā)就是多進(jìn)程多線程模型。讓OS處理時(shí)鐘中斷,i\o阻塞等等問題。

對(duì)于 服務(wù)器 而言,如果任務(wù)大部分的時(shí)間耗在i\o上,有了并發(fā)機(jī)制可以避免整個(gè)地圖服務(wù)被i\o訪問阻塞。一個(gè)任務(wù)阻塞的時(shí)候,把空余計(jì)算資源分配到其他任務(wù)上去。在這種情況下,并發(fā)是有益于服務(wù)器運(yùn)行效率還有響應(yīng)時(shí)間的。

對(duì)于程序員而言,獨(dú)立的邏輯流意味著可以在一個(gè)可靠、簡單、松耦合的上下文環(huán)境里面,完成自己的任務(wù)。

因?yàn)樽孫S處理程序邏輯切換得反復(fù)陷入內(nèi)核,有的人覺得這樣太慢,做了一些處于user space的線程,進(jìn)程內(nèi)自己控制多個(gè)邏輯流。因?yàn)檎Z言描述能力的限制,在C/C++上面寫還有用這種東西都太麻煩。于是產(chǎn)生了erlang, go, lua里面的coroutine語法糖。

node.js本質(zhì)上也是自己控制多個(gè)邏輯流,但是這個(gè)邏輯流是根據(jù)i\o狀態(tài)還有優(yōu)先級(jí)分發(fā)的。在實(shí)際的實(shí)現(xiàn)中,它盡量采用非阻塞異步i\o,單個(gè)任務(wù)調(diào)用i\o的時(shí)候,我就停掉它,等i\o完成的信號(hào)發(fā)上來了,我再重啟它。

注意這一點(diǎn),每次我會(huì)運(yùn)行一個(gè)任務(wù),直到它完成或者是發(fā)生i\o調(diào)用都不會(huì)主動(dòng)切換至其他的程序流。那么如果這一個(gè)任務(wù)里面涉及過于大量的計(jì)算,那么整個(gè)地圖進(jìn)程都會(huì)被block在這里。

而正因?yàn)閚ode.js是異步的,所以需要不斷的寫回調(diào)監(jiān)聽i\o完成的信號(hào)。單個(gè)任務(wù)的邏輯流會(huì)多次的被打斷。當(dāng)任務(wù)變得相當(dāng)復(fù)雜的時(shí)候,即有所謂的callbak hell,會(huì)帶給調(diào)試開發(fā)非常大的麻煩。

3. 因?yàn)樯厦娴脑?,所以我不建議在非原型的MMORPG服務(wù)器開發(fā)中使用node.js。

4.最近興起的手游服務(wù)器倒是挺適合node.js,因?yàn)槭钟芜@玩意局限于網(wǎng)絡(luò)問題,服務(wù)器只能做關(guān)鍵數(shù)據(jù)驗(yàn)證,也沒辦法處理特別多人交互的情形。服務(wù)器端已經(jīng)簡化得跟網(wǎng)頁服務(wù)器沒啥區(qū)別了,業(yè)務(wù)邏輯也簡單,處理處理數(shù)據(jù),然后持久化就成。

相關(guān)文章

  • Node.js安裝、環(huán)境變量配置、報(bào)錯(cuò)解決方法

    Node.js安裝、環(huán)境變量配置、報(bào)錯(cuò)解決方法

    Node.js 是一個(gè)基于 Chrome JavaScript 運(yùn)行時(shí)建立的一個(gè)平臺(tái),這篇文章主要介紹了Node.js安裝、環(huán)境變量配置、報(bào)錯(cuò)解決方法,需要的朋友可以參考下
    2022-06-06
  • node.js中的fs.close方法使用說明

    node.js中的fs.close方法使用說明

    這篇文章主要介紹了node.js中的fs.close方法使用說明,本文介紹了fs.close方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 前端之npm運(yùn)行時(shí)配置文件.npmrc的方法(可用于配置npm淘寶源)

    前端之npm運(yùn)行時(shí)配置文件.npmrc的方法(可用于配置npm淘寶源)

    這篇文章主要給大家介紹了關(guān)于前端之npm運(yùn)行時(shí)配置文件.npmrc(可用于配置npm淘寶源)的相關(guān)資料,.npmrc 文件是用于配置 npm(Node.js 包管理器)行為的配置文件,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Nodejs中Express 常用中間件 body-parser 實(shí)現(xiàn)解析

    Nodejs中Express 常用中間件 body-parser 實(shí)現(xiàn)解析

    這篇文章主要介紹了Nodejs中Express 常用中間件 body-parser 實(shí)現(xiàn)解析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • NodeJs生成sitemap站點(diǎn)地圖的方法示例

    NodeJs生成sitemap站點(diǎn)地圖的方法示例

    這篇文章主要介紹了NodeJs生成sitemap站點(diǎn)地圖的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • node.js中的fs.mkdir方法使用說明

    node.js中的fs.mkdir方法使用說明

    這篇文章主要介紹了node.js中的fs.mkdir方法使用說明,本文介紹了fs.mkdir方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 前端常見面試題之a(chǎn)sync/await和promise的區(qū)別

    前端常見面試題之a(chǎn)sync/await和promise的區(qū)別

    async/await是異步代碼的新方式,以前的方法有回調(diào)函數(shù)和Promise,下面這篇文章主要給大家介紹了關(guān)于前端常見面試題之a(chǎn)sync/await和promise區(qū)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 從Node.js事件觸發(fā)器到Vue自定義事件的深入講解

    從Node.js事件觸發(fā)器到Vue自定義事件的深入講解

    這篇文章主要給大家介紹了關(guān)于從Node.js事件觸發(fā)器到Vue自定義事件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Node.js 多進(jìn)程處理CPU密集任務(wù)的實(shí)現(xiàn)

    Node.js 多進(jìn)程處理CPU密集任務(wù)的實(shí)現(xiàn)

    這篇文章主要介紹了Node.js 多進(jìn)程處理CPU密集任務(wù)的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • Nodejs中fs文件系統(tǒng)模塊的路徑動(dòng)態(tài)拼接的問題和解決方案

    Nodejs中fs文件系統(tǒng)模塊的路徑動(dòng)態(tài)拼接的問題和解決方案

    在使用fs模塊操作文件時(shí),如果提供的操作路徑是以./或../開頭的相對(duì)路徑時(shí),很容易出現(xiàn)路徑動(dòng)態(tài)拼接錯(cuò)誤的問題,所以本文給大家介紹了Nodejs中fs文件系統(tǒng)模塊的路徑動(dòng)態(tài)拼接的問題和解決方案,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

澜沧| 肇庆市| 武隆县| 余姚市| 洛南县| 黄山市| 巫溪县| 榆中县| 嘉义县| 襄垣县| 顺义区| 阿图什市| 芜湖市| 贵港市| 阳山县| 湟源县| 和顺县| 阿合奇县| 张掖市| 都兰县| 永平县| 綦江县| 武夷山市| 亳州市| 萝北县| 石家庄市| 温宿县| 广州市| 长丰县| 平谷区| 小金县| 宿松县| 柳河县| 水城县| 顺昌县| 宕昌县| 潜江市| 灵璧县| 阿克陶县| 新蔡县| 高雄县|