• <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 閱讀(251) 評論(0)  編輯 收藏 引用
            亚洲国产欧美国产综合久久| 精品久久久久久国产潘金莲| 久久国产乱子伦精品免费午夜| 色综合合久久天天综合绕视看 | 久久AⅤ人妻少妇嫩草影院| 成人国内精品久久久久影院VR| 色8激情欧美成人久久综合电| 日日躁夜夜躁狠狠久久AV| 国産精品久久久久久久| 亚洲色大成网站WWW久久九九| 成人资源影音先锋久久资源网| 午夜精品久久影院蜜桃| 999久久久无码国产精品| 久久人人爽人人爽AV片| 久久99国产综合精品免费| 精品久久久久久无码人妻蜜桃| 久久亚洲AV成人出白浆无码国产| 国产精品久久久天天影视香蕉 | 97久久久久人妻精品专区| 久久精品成人欧美大片| 国产成人精品久久一区二区三区 | 久久天天躁狠狠躁夜夜不卡| 日日躁夜夜躁狠狠久久AV| 一级女性全黄久久生活片免费| 一本大道加勒比久久综合| 日本强好片久久久久久AAA| 久久精品极品盛宴观看| 久久这里都是精品| 久久无码人妻精品一区二区三区| 亚洲国产成人久久综合碰碰动漫3d | 精品久久久久久久国产潘金莲| 国产精品嫩草影院久久| 久久这里只有精品久久| 狠狠色丁香久久婷婷综合五月| 无码久久精品国产亚洲Av影片| 中文精品久久久久人妻不卡| 亚洲Av无码国产情品久久| 亚洲国产天堂久久综合| 伊色综合久久之综合久久| 亚洲精品成人久久久| 久久亚洲精品成人无码网站|