走在架構師的大道上 Jack.Wang's home

          Java, C++, linux c, C#.net 技術,軟件架構,領域建模,IT 項目管理 Dict.CN 在線詞典, 英語學習, 在線翻譯

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks
           

          Workflow 架構改進的猜想
                                        ------ Jack 2008

             開發 workflow 已經是兩年前的事了,那是我第一家公司的第一個有形產品,也是我主導開發的。在這里,真的要感謝以前的主管,使我從一個程序員爬到了技術主導的位置。

          workflow 的項目背景是這樣的:公司是個集團公司,主產業是制造和電子,開發人員有幾百號,我們屬于第二個事業部,用這個系統的有管理層,業務層大約上萬人,每個月的數據量為 200多萬筆,這個產品只是內銷。就是在這樣的背景下公司組了 20 個人的團隊,在兩年的時間開發了 workflow 系統, 它的開發語言是 Java, 總體架構是 Struts+Hibernate+Spring, J2EE 的部分,也有 J2SE 的部分,采用的標準是 WMfC.

          當時數據庫只有一個(Oracle 數據庫),在單獨的服務器上,配置很高,Web 服務器也是單獨的高檔機,還有就是客戶端的 Application. 典型的三層架構。這樣的系統能夠有多大的吞吐量呢,性能如何能,可想而知。系統的性能沒有禁得住應用的考驗,于是我們反思了,從新考慮了系統架構。發現瓶頸在數據庫,不過那時我就離職了,在公司整整呆了 2年零6個月。

           事隔這么久,只有猜想當時該如何如何。猜想 workflow 已經超負荷工作了,數據庫占了大量 CPU 資源, 系統沒有擴展性!猜想 workflow 以服務的方式加入了互聯網,用戶超過 1 個億。

               從下面兩方面改進系統。

          1.       數據庫層的架構改進:

          l         第一個觀念就是數據的讀寫分開,比如用完全一樣的數據庫,一個主數據庫用來寫,其他從數據庫用來完成讀操作,隔段時間將寫數據庫同步更新到從數據庫中。

          l         用戶表是個大表,超過一個億的資料,檢索更新速度很慢。于是把用戶表單獨放在一個數據庫服務器中,并且按照用戶的所在省份水平分割成多個表,每個表就有 300 多萬的數據,查詢可控制在 1 秒之內。

          l          表單流量很大,每月上千萬筆。同樣,表單表按照功能分割到多個數據庫服務器中,每個數據庫中再按照表單類別水平分割。這樣在增加表單時,可達到服務器的線性擴展。

          l         Oracle 在分布式方面做得很好,可以充分利用這個優勢。

                 l     數據庫的緩存
          2.       應用層的架構改進:

          l         盡量做到動態網頁靜態化,比如在流程中跑的一個固化的表單不應該動態生成,而應該在提交表單時就做靜態化。

          l         使用緩存。有些網頁,像首頁,可以學習百度首頁,緩存24小時。

          l         鏡像服務器

          l         使用負載均衡技術,比如 DNS負載均衡,四層交換機負載技術等等很多現成的方案可遵循。

          l         對系統局部模塊優化。不要自己設計模式,現有的模式很多,可以參考。

          l         引入中間件技術,對源有系統 SOA 的觀念做集成和整合。比如整合 ERP, EIP,EPP等系統到 workflow中。

          本人在系統架構方面經驗比較少,在系統分析方面做得工作比較多,請 blog 朋友多多指教





          本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。
          posted on 2008-03-27 10:30 Jack.Wang 閱讀(1689) 評論(2)  編輯  收藏 所屬分類: 架構師篇

          Feedback

          # re: 對 Workflow 架構改進的猜想[未登錄] 2008-03-27 10:50 dragon
          不錯,經驗值得我們去學習,希望繼續發表好文章。  回復  更多評論
            

          # re: 對 Workflow 架構改進的猜想 2008-03-28 14:48 wjywilliam
          我也是個菜鳥,但是曾經在一個做workflow product的公司里面呆過一回,感覺作者DB部分應該是數據庫的群集吧,不過數據量這么大,也確實厲害.
          第二部分,我同意你說的第一條,對于一些固定的business的flow來說,沒必要做dynamic form 即便dynamic genarate是你們product的一個功能,一個靜態的定制form的運行速度絕對比dynamic form好很多  回復  更多評論
            

          主站蜘蛛池模板: 通榆县| 顺昌县| 广汉市| 朔州市| 甘孜县| 桓仁| 马关县| 奈曼旗| 湟源县| 三亚市| 灵川县| 沛县| 乐山市| 北宁市| 海丰县| 罗城| 涞水县| 明水县| 绍兴县| 上饶县| 明光市| 浮梁县| 安义县| 新晃| 新化县| 老河口市| 通渭县| 大理市| 钟祥市| 乐陵市| 凤台县| 陇南市| 安达市| 台山市| 安义县| 武冈市| 改则县| 新沂市| 陆良县| 松江区| 修武县|