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

            Error

            C++博客 首頁 新隨筆 聯系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

                    node.js從誕生之初就是充分考慮了在實時響應、超大規模數據要求下的可擴展性。這使得他擯棄了傳統平臺依靠多線程來實現高并發的設計思路,而是采用了單線程、異步式I/O,事件驅動的程序設計模式。這些特性不僅帶來了巨大的性能提升,還減少了多線程程序設計的復雜性,進而提高了開發效率。

            Q1:單線程怎么可能榨干多核系統性能?

             

                    node.js最大的特點就是采用異步I/O與事件驅動的架構設計。對于高并發方案,傳統的架構是多線程模型,也就是為每個業務邏輯提供一個系統線程,通過系統線程切換來彌補同步式I/O調度的時間開銷。node.js是單線程模型,對于所有的I/O操作都采用異步請求方式,避免了頻繁的上下文切換。node.js在支持的過程中會維護一個時間隊列,程序在執行時進入時間循環等待下一個事件到來,每個異步I/O請求完成之后會被推送到事件隊列,等待程序進行處理。

            C1:每業務邏輯每線程應該是上個世紀的方案了。本世紀至少有任務池和線程池方案,牛逼的還有根據系統個邏輯任務的負載情況動態調度。

             

            image

            想起來網狐的AttempterEnging已經有這個味道了,只是沒有提升到理論高度。

             

             

                    node.js最大的特點就是異步I/O與事件緊密結合的編程模式。這種模式與傳統的同步模式I/O線型編程的思路有很大不同,應為控制流很大程序上要靠事件和回調來組織,一個邏輯要拆分成若干個單元。

            異步I/O擴展一下就是把能“并發的邏輯抽取出來,讓有空余負載的‘cpu’去執行,原負載‘cpu’可以去執行其他需要實時響應的邏輯”

             

            node.js核心模塊

            process: processs是一個全局變量,即global對象的屬性。他用于描述node.js進程的狀態,提供一個與操作系統的簡單接口。

            console: console用于提供控制臺標準輸出,用于向標準輸出流或標準輸入流輸出字符

             

            事件發射器:

            events模塊只提供一個對象:events.EventEmitter,他的核心就是時間發射與事件監聽功能的封裝。EventEmitter的每個事件由一個事件名和若干個時間參數組成,事件名是一個字符串,通常表達一定的語義。對于每個事件EventEmitter支持若干個事件監聽器。當時間發射時,注冊到這個事件的監聽器被依次調用,事件參數作為回調函數參數傳遞。

            EventEmitter.on(event, listener)  為指定事件注冊一個監聽器,接收一個字符串event和一個回調函數listener

            EventEmitter.emic(event, args)  發射event事件,傳遞若干個可選參數到事件監聽器參數列表

            EventEmitter.once(event, listener)  為指定事件注冊一個單次監聽器,即觸發一次后自動解除注冊

            EventEmitter.removeListener(event, listener) 解除注冊

            EventEmitter.removeAllListeners(event) 移出所有時間的所有監聽器

             

            error事件:EventEmitter定義了一個特殊的事件Error,他包含了錯誤的語義,在遇到異常的時候通常會發射error事件,當error被發射時,EventEmitter規定如果沒有相應的監聽器,node.js會把它當作一場,退出程序并打印調用棧。

             

            大多數時候不會直接用EventEmitter而是在對象中繼承他,只要是支持事件響應的核心模塊都是EventEmitter的子類。

            posted on 2013-07-28 19:42 Enic 閱讀(240) 評論(0)  編輯 收藏 引用
            久久久久99精品成人片三人毛片 | 一本伊大人香蕉久久网手机| 亚洲中文字幕无码久久2020| 亚洲国产精品成人久久| 国产精品久久久久久一区二区三区| 99国内精品久久久久久久 | 久久国产精品-久久精品| 久久五月精品中文字幕| 一日本道伊人久久综合影| 国产欧美久久久精品| 久久一区二区三区99| 久久久久夜夜夜精品国产| 久久久久久久91精品免费观看| aaa级精品久久久国产片| 久久伊人精品一区二区三区| 久久国产精品-久久精品| 久久久国产打桩机| 久久99精品国产99久久6| 91久久精品91久久性色| 免费无码国产欧美久久18| 久久久99精品一区二区| 亚洲国产精品久久66| 久久九九精品99国产精品| 久久久久亚洲精品日久生情 | 久久99热这里只有精品国产| 国产亚洲精久久久久久无码AV| 日本人妻丰满熟妇久久久久久| 久久精品国产亚洲av麻豆图片| 久久综合色之久久综合| 精品久久久久久久久久中文字幕 | 青青青青久久精品国产h久久精品五福影院1421 | 亚洲国产精品无码久久一区二区| 午夜视频久久久久一区 | 久久久精品2019免费观看| 久久精品国产精品亚洲精品 | 亚洲欧美日韩精品久久亚洲区 | 久久亚洲精品人成综合网| 亚洲国产精品无码久久久不卡| 欧美日韩精品久久久久| 亚洲va久久久噜噜噜久久狠狠| 久久天堂AV综合合色蜜桃网|