• <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)  編輯 收藏 引用
            青春久久| 2021国内久久精品| 国产成人综合久久综合| 国产午夜久久影院| 欧美午夜A∨大片久久 | 亚洲va国产va天堂va久久| 久久亚洲私人国产精品| 久久青青草原精品国产软件| 99久久国产宗和精品1上映| 国产精品久久久福利| 亚洲国产精品成人AV无码久久综合影院| 99蜜桃臀久久久欧美精品网站| 国产69精品久久久久99| 久久久久高潮毛片免费全部播放 | 久久夜色精品国产www| 久久久久久久精品成人热色戒| 久久久久四虎国产精品| 久久精品桃花综合| 国产精品综合久久第一页 | 天天久久狠狠色综合| 亚洲精品tv久久久久久久久久| 久久久久综合网久久| 伊人久久精品无码二区麻豆| 久久狠狠一本精品综合网| 性欧美丰满熟妇XXXX性久久久| 久久亚洲AV无码西西人体| 欧美777精品久久久久网| 青青草原精品99久久精品66 | 久久99精品久久久久久9蜜桃| 99久久精品午夜一区二区| 精品久久久中文字幕人妻| 久久久噜噜噜久久中文字幕色伊伊| 99久久超碰中文字幕伊人| 一本久久a久久精品vr综合| 久久精品免费一区二区| 久久精品免费全国观看国产| 色婷婷狠狠久久综合五月| 久久久99精品一区二区| 久久久久久av无码免费看大片| 99久久人人爽亚洲精品美女| 久久成人精品|