• <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)  編輯 收藏 引用
            婷婷久久五月天| 久久亚洲精品中文字幕三区| 久久久噜噜噜www成人网| 99久久婷婷国产一区二区| 色偷偷久久一区二区三区| 欧美午夜A∨大片久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 欧美久久一级内射wwwwww.| 久久97精品久久久久久久不卡| 色婷婷综合久久久久中文 | 青青草原1769久久免费播放| 久久99精品国产麻豆| 久久ww精品w免费人成| 2021久久国自产拍精品| 99久久国产综合精品麻豆| 色综合久久精品中文字幕首页| 久久综合欧美成人| 精品国产乱码久久久久久浪潮| 久久精品国产清自在天天线| 久久夜色精品国产亚洲av| 亚洲欧美另类日本久久国产真实乱对白| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 18禁黄久久久AAA片| 伊人伊成久久人综合网777| 国产aⅴ激情无码久久| 91精品国产综合久久久久久| Xx性欧美肥妇精品久久久久久| 久久97久久97精品免视看秋霞| 精品久久久久成人码免费动漫 | 97精品依人久久久大香线蕉97| 亚洲va国产va天堂va久久| 久久久久一区二区三区| 久久国产AVJUST麻豆| 99久久国产热无码精品免费| 精品无码人妻久久久久久| 亚洲精品高清国产一线久久| 国产一区二区精品久久凹凸| 久久亚洲AV成人无码软件| 久久香蕉国产线看观看乱码| 伊人久久精品影院| 久久久综合九色合综国产|