//
SEDA架構模型 - 簡書
http://www.lxweimin.com/p/e184fdc0ade4
//
一、傳統并發模型的缺點
基于線程的并發
特點:每任務一線程直線式的編程使用資源昂高,context切換代價高,競爭鎖昂貴太多線程可能導致吞吐量下降,響應時間暴漲。
//
基于事件的并發模型
特點:單線程處理事件每個并發流實現為一個有限狀態機應用直接控制并發負載增加的時候,吞吐量飽和響應時間線性增長
//
二、SEDA架構
特點:
(1)服務通過queue分解成stage: 每個stage代表FSM的一個狀態集合 Queue引入了控制邊界
(2)使用線程池驅動stage的運行: 將事件處理同線程的創建和調度分離 Stage可以順序或者并行執行 Stage可能在內部阻塞,給阻塞的stage分配較少的線程
//
三、小結
SEDA主要還是為了解決傳統并發模型的缺點,通過將服務器的處理劃分各個Stage,利用queue連接起來形成一個pipeline的處理鏈,并且在Stage中利用控制器進行資源的調控。資源的調度依據運行時的狀態監視的數據來進行,從而形成一種反應控制的機制,而stage的劃分也簡化了編程,并且通過queue和每個stage的線程池來分擔高并發請求并保持吞吐量和響應時間的平衡。簡單來說,我看中的是服務器模型的清晰劃分以及反應控制。
//
基于SEDA模型的交易中間件服務器架構研究_百度學術
http://xueshu.baidu.com/s?wd=paperuri:(334b6c1fae6861e2113e1e70c6442314)&filter=sc_long_sign&sc_ks_para=q%3D%E5%9F%BA%E4%BA%8ESEDA%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BA%A4%E6%98%93%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9E%B6%E6%9E%84%E7%A0%94%E7%A9%B6&tn=SE_baiduxueshu_c1gjeupa&ie=utf-8&sc_us=3847411028352465752
在大型分布式企業環境中,應用通常面對著異構的網絡環境、不同的硬件平臺以及相異的通訊協議。如果通過應用自身來解決服務器之間的通訊所帶來的數據、協議轉換問題,毫無疑問將嚴重影響應用開發的復雜程度和開發效率。而使用中間件(Middleware)可以輕松解決這些問題。針對民航業務實時并發請求多、業務功能復雜多變、數據量大、業務之間聯系密切等業務特點設計了中間件服務器的軟件架構。
本文分析當前流行的服務器并發模型的優缺點,選擇了分階段的事件驅動架構(Staged Event‐Driven Architecture,SEDA)作為服務器的架構基礎,以SEDA分階段思想對民航業務進行階段劃分,設計分布式環境下的中間件平臺部署及運行結構,以兩層SEDA共同完成對用戶業務分階段特性的支持。該架構使得應用開發人員無需關心異步調用細節,這大大降低了應用開發的復雜程度,提升了開發效率。
實驗結果表明基于SEDA的服務器軟件架構比基于線程池模型的服務器軟件架構擁有更好的處理高并發服務請求的能力,能夠使大規模民航旅客服務信息系統有效應對高并發高負載環境。同時本文分析了中間件平臺的總體結構,根據其結構特點設計了負載均衡機制,提出了固定比例因子負載均衡算法并進行魯棒性分析。為了提高中間件平臺的魯棒性和可靠性,根據其軟硬件結構特點在固定比例因子負載均衡算法的基礎上提出了動態負載均衡算法。同時設計了維護負載度量指標所需的數據結構以及在這種數據結構下維護該指標的方法,并進行了實驗對比驗證。實驗結果表明負載均衡算法能使中間件平臺的魯棒性和可靠性得到提升。