<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    SEDA架構筆記

    Posted on 2010-06-20 23:53 dennis 閱讀(7280) 評論(6)  編輯  收藏 所屬分類: 模式與架構java


    一、傳統并發模型的缺點


    基于線程的并發


    特點:
    每任務一線程
    直線式的編程
    使用資源昂高,
    context切換代價高,競爭鎖昂貴
    太多線程可能導致吞吐量下降,響應時間暴漲。

    基于事件的并發模型



    特點:
    單線程處理事件
    每個并發流實現為一個有限狀態機
    應用直接控制并發
    負載增加的時候,吞吐量飽和
    響應時間線性增長


    二、SEDA架構




    特點:
    (1)服務通過queue分解成stage:
       每個stage代表FSM的一個狀態集合
       Queue引入了控制邊界
    (2)使用線程池驅動stage的運行:
       將事件處理同線程的創建和調度分離
       Stage可以順序或者并行執行
       Stage可能在內部阻塞,給阻塞的stage分配較少的線程

    1、Stage-可靠構建的基礎



    (1)應用邏輯封裝到Event Handler
       接收到許多事件,處理這些事件,然后派發事件加入其他Stage的queue
       對queue和threads沒有直接控制
       Event queue吸納過量的負載,有限的線程池維持并發
    (2)Stage控制器
      負責資源的分配和調度
      控制派發給Event Handler的事件的數量和順序
      Event Handler可能在內部丟棄、過濾、重排序事件。

    2、應用=Stage網絡

       (1)有限隊列
            入隊可能失敗,如果隊列拒絕新項的話
            阻塞在滿溢的隊列上來實現吸納壓力
            通過丟棄事件來降低負載
       (2) 隊列將Stage的執行分解
            引入了顯式的控制邊界
            提供了隔離、模塊化、獨立的負載管理
       (3)方便調試和profile
            事件的投遞可顯
            時間流可跟蹤
            通過監測queue的長度發現系統瓶頸

    3、動態資源控制器

    (1)、線程池管理器

    目標: 決定Stage合理的并發程度
    操作:
    觀察queue長度,如果超過閥值就添加線程
    移除空閑線程



    (2)、批量管理器
    目的:低響應時間和高吞吐量的調度
    操作:
    Batching因子:Stage一次處理的消息數量
    小的batching因子:低響應時間
    大的batching因子:高吞吐量

    嘗試找到具有穩定吞吐量的最小的batching因子
    觀察stage的事件流出率
    當吞吐量高的時候降低batching因子,低的時候增加


    三、小結
       SEDA主要還是為了解決傳統并發模型的缺點,通過將服務器的處理劃分各個Stage,利用queue連接起來形成一個pipeline的處理鏈,并且在Stage中利用控制器進行資源的調控。資源的調度依據運行時的狀態監視的數據來進行,從而形成一種反應控制的機制,而stage的劃分也簡化了編程,并且通過queue和每個stage的線程池來分擔高并發請求并保持吞吐量和響應時間的平衡。簡單來說,我看中的是服務器模型的清晰劃分以及反應控制。



      

    評論

    # re: SEDA架構筆記[未登錄]  回復  更多評論   

    2010-06-21 14:14 by 牛牛
    3、動態資源控制器

    (1)、線程池管理器
    目標: 決定Stage合理的并發程度
    操作:
    觀察queue長度,如果超過閥值就添加線程
    移除空閑線程

    這里有個問題?如果queue長度超過閥值,但同時stage線程內部又阻塞,那怎么處理呢?

    # re: SEDA架構筆記[未登錄]  回復  更多評論   

    2010-06-21 19:51 by 匿名
    @牛牛
    可以通過排隊的方法解決

    # re: SEDA架構筆記[未登錄]  回復  更多評論   

    2010-06-22 02:00 by dennis
    @牛牛
    queue可以阻塞,也可以丟棄放入的消息,取決于你選擇的策略

    # re: SEDA架構筆記  回復  更多評論   

    2010-06-22 22:33 by 下里巴人
    這種基于事件的并發模型是可以很好的提高吞吐量跟響應時間,在業界已經有使用了嗎?哪些公司有這樣的模型運用了呢?能否推薦下這方面的具體資料

    # re: SEDA架構筆記  回復  更多評論   

    2010-08-11 17:27 by lucharse
    @下里巴人
    cassandra 用得就是 SEDA模型

    # re: SEDA架構筆記  回復  更多評論   

    2013-06-05 11:45 by 范小瑞
    大哥,圖片看不到啊,真心想看看。
    主站蜘蛛池模板: 欧洲乱码伦视频免费| 最近免费最新高清中文字幕韩国| 最近最好的中文字幕2019免费| 色噜噜综合亚洲av中文无码| 在线成人精品国产区免费| 狠狠色伊人亚洲综合成人| 三年片在线观看免费西瓜视频| 中文字幕人成人乱码亚洲电影 | 亚洲成A人片在线观看无码不卡 | 亚洲av乱码一区二区三区 | 热99re久久免费视精品频软件| 亚洲熟妇av午夜无码不卡| 在线免费观看一级毛片| 国产青草亚洲香蕉精品久久| 亚洲第一福利网站在线观看| 一级毛片不卡免费看老司机| 国产亚洲色婷婷久久99精品| 最近免费中文字幕mv在线电影| 亚洲一区二区三区四区视频| 日韩视频免费在线| 国产精品九九久久免费视频| 亚洲成人在线电影| 无人在线观看完整免费版视频| 亚洲色大18成人网站WWW在线播放| 免费永久在线观看黄网站| 中文字幕永久免费视频| 亚洲精品无码久久久久久久 | a级片免费在线播放| 亚洲一区二区三区夜色| 国产一卡二卡3卡四卡免费| 老司机午夜在线视频免费观| 久久亚洲综合色一区二区三区| 美女被cao免费看在线看网站| 国产精品亚洲va在线观看| 亚洲av无码成人黄网站在线观看| 久久精品国产免费观看 | 亚洲色图综合网站| 国产a不卡片精品免费观看| 国产精品视频白浆免费视频| 亚洲欧美综合精品成人导航| 精品国产综合成人亚洲区|