支付寶soa實踐總結

          一直以來,看了很多東西自己知道就完了,而我覺得作為互聯網的一份子,應該懂得分享。

          最近看了很多關于程立的一些演講,學習到了soa實踐中非常寶貴的經驗。

          最開始支付寶架構是單應用系統,采用分層架構模式(展現層+業務層+持久層),用過分層架構模式的人都很清楚業務層是最關鍵的一層,也是最容易造成臃腫和龐大的一層,所以需要合理的分離。而最佳實踐應該是把業務層分為:facade層和業務邏輯層,也符合現在比較熱的領域模型驅動,業務邏輯層主要負責業務本身的實現,facade層區分產品功能和決策。對于中小型而且項目業務需求也不怎么變的應用來說,是比較合理的架構。無論從學習成本和人力成本來說,都相對較低。但是業務不斷擴張的應用來說,到最后開發成本和維護將會逐步提高。支付寶也是這個時候就開始著手對“對象”進行“組件”化,也就是接下來的第二個過程了。

          從對象到組件化,我們首先要來看看組件這個概念。組件是功能職責相近類的集合。組件本身需要以下幾點功能:1、屬性 2、運行級別 3、引用 4、擴展 等。而那時比較符合支付寶這一思想的規范有osgi。具體關于osgi的相關內容可以自行google。如果用osgi會出現如下三個問題:
          1、osgi平臺如何在tomcat,jboss下運行。(現在tomcat,jboss等應用服務器都已經支持了,以前需要自己來擴展tomcat)
          2、osgi使用起來比較麻煩和復雜,如何跟spring整合起來使用也是需要解決的問題,不過spring就是spring,05左右好像就對這方面開始研究了,現在作為一個子項目(Spring Dynamic Modules)。
          3、osgi規范沒有擴展這種功能,所以需要自己來對osgi的一些框架進行擴展,可以參照eclipse的一個osgi框架,或者也可以直接用此框架(Equinox)。
          這些問題都解決了,那么“對象”進行“組件”過程就完成了。但是這個時候需要對企業內部的系統能夠配合起來,那么可以對業務層進行服務化。也就是第三個過程了。

          把組件都以服務方式部署出來,同時也需要管理好這些服務,那么此時可以引入esb(企業服務總線)中間件了。商業的和開源的都有,支付寶用的是開源的mule,不過對于某些方面,支付寶進行改造過,為了確保消息能夠百分百不丟失,畢竟跟錢打交道嘛需要嚴謹。

          其實這些基礎平臺搭建好后,還需要解決一個特別難的難題。功能服務化后,數據庫也不再是集中式了,本地事務也不能保證了。這個時候需要引入分布式事務,數據庫軟件本身也提供分布式事務,但是對于需要高訪問量和高性能的網站來說,可能需要換一種方式了。cap和base理論告訴我們可以適當放棄強一致性來達到其他兩項性能。ws-transaction是分布式中間件,但是完成一個事務需要很多消息來溝通,至少大大增大了事務的中間過程會被中斷掉。支付寶公司研究出了一些分布式事務模式,比如冪等性模式,補償性模式,tcc模式等等。每個模式都有不同的應用場景,大家可以根據自己的業務特點來進行選取。

          以上即是我最近學習的一些總結。讓更多的人能學習好的技術和經驗。讓我們一起來分享吧。

          posted on 2010-09-27 15:36 yangpingyu 閱讀(2846) 評論(0)  編輯  收藏 所屬分類: esb知識


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2010年9月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          收藏夾

          linux

          產品交互

          分析,設計,架構

          安全

          技術牛人

          數據庫

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 唐山市| 泰宁县| 清远市| 大庆市| 石景山区| 呼伦贝尔市| 卓尼县| 盐津县| 北海市| 湖州市| 荥阳市| 西林县| 榆社县| 民县| 赤水市| 普格县| 商洛市| 谢通门县| 阜宁县| 乌拉特中旗| 静乐县| 苏尼特左旗| 新晃| 昂仁县| 荔浦县| 尤溪县| 广河县| 京山县| 阜新| 云浮市| 成安县| 河源市| 香港| 天等县| 高平市| 罗定市| 乐山市| 漾濞| 北京市| 寿阳县| 颍上县|