專訪80后架構師沙洲:遨游網架構揭秘

cmb2 9年前發布 | 11K 次閱讀 架構師

原文  http://www.csdn.net/article/2015-03-18/2824243


在今年的兩會上,國務院總理李克強不僅提出了“互聯網+”概念,還親自為網購代言,這一切都充分說明企業要想做好產品、做活產品,互聯網是必不可少的一個平臺。

那么,傳統產業,比如旅游業該如何向互聯網轉型,在技術架構上會遇到哪些挑戰呢?帶著這些疑問,我們采訪了中青旅遨游網架構師沙洲。

專訪80后架構師沙洲:遨游網架構揭秘

中青旅遨游網架構師 沙洲

1.請您自我介紹一下,可以分享一下您的技術成長之路嗎?

沙洲: 大家好,我叫沙洲,今年29歲,目前主要負責遨游網技術架構的工作,包括基礎開發框架的設計,系統流程架構的設計以及API建設等。

在來遨游網之前,我曾在北京一家做gis開發的公司做開發工程師,在那里,我遇到了一位技術高超并非常嚴格負責的領導。他經常對我的代碼進行CodeReview,不斷向我灌輸程序設計思想,久而久之,我發現自己的技術水準上升非常大。

在2011年,我有幸入職遨游網,當時遨游網正在開始進行傳統企業向互聯網企業轉型的起步階段,于是便開始不斷開拓技術視野,學習互聯網企業的技術架構,并將其應用到遨游網上來。目前遨游網仍處在技術架構轉型中,我也仍在不斷的學習和進步中。

2.介紹下中青旅遨游網網站架構?

沙洲: 遨游網分為前臺網站系統,后臺管理系統和商戶平臺系統,每個系統又拆分為不同的子站,每個子站都細分為不同的模塊。目前遨游網已經完成了第一階段的SOA化, 將業務模塊進行全面解耦和拆分,簡化了系統復雜度,降低了故障擴散風險。

專訪80后架構師沙洲:遨游網架構揭秘

網站架構圖

我們把細粒度的服務當作基礎服務,根據業務需要將其組合,提供粗粒度的服務對應用層公開,這樣不僅可以做到模塊的全面解耦,也解決了對外暴露服務 過多,業務系統應用服務時組裝服務過于繁雜的問題。底層服務資源的消耗能夠簡化上層應用邏輯,對于系統架構層次的合理性更為有益,只要提高底層基礎服務的 性能,上層服務能力將更具彈性。

專訪80后架構師沙洲:遨游網架構揭秘

SOA架構圖

3.傳統旅游業在向互聯網轉型的過程中,在技術架構上遭遇哪些挑戰?你們是如何應對的?

沙洲: 由于遨游網之前的規劃并不是電商網站,因此一直以來并沒有自己的后臺系統,一切業務的處理和流轉均基于中青旅的ERP系統,而ERP系統的建設標準是基于 財務結算和線下業務流轉。其中涉及到了無數的事務性操作以及大量直接與數據庫交互的操作,因此無論在系統性能方面還是硬件部署方式上均與電商網站相距甚 遠。更令人沮喪的是,相對保守的ERP系統無法滿足OTA業務多樣性的發展,因此針對遨游網的一點點改動都是傷筋動骨的,嚴重制約了網站的成長。于是我們 下決心建立一套獨立的,輕量的,適合電商的后臺系統來支撐遨游網。

在這期間遇到了兩個問題:

  1. 第一個問題是 如何做到所謂的"高速路上換輪胎" ,在脫胎換骨的過程中如何盡量小的影響業務的發展。對此我們采取的方式是先做業務梳理和系統拆分,即進行系統的SOA化改造,拆分后的模塊之間的耦合度大大降低, 我們便可以從容的進行新模塊的構造以及的對舊模塊的更替;
  2. 第二個問題是 與ERP系統的對接策略 ,由于在遨游網上售賣的產品70%來自中青旅, 因此會涉及到大量的數據交互,而這些交互大部分是通過接口來實現。這時便會出現ERP系統的性能和穩定性對網站造成影響的問題。 對此我們的對策是進行 大量的異步操作和采用分布式緩存技術 。建立消息系統,緩存更新系統以及監控系統。做到網站和ERP系統的性能解耦, 從而保證網站運行的穩定性和良好的用戶體驗。

4.你在上文中提到,每個子站都細分為不同的模塊,可否介紹一下這幾個模塊的技術細節?

沙洲: 由于遨游網的各個子站都是一類業務流程的集合,針對這類業務的各個子流程就會分為不同模塊,不同模塊所使用的技術和部署的環境也不盡相同。例如預訂站點主 要針對下單流程,其中包括了各個品類普通產品的預訂模塊,促銷搶購類產品的預訂模塊等。相較于普通產品的預訂, 促銷搶購類產品的預訂由于涉及高并發訪問,我們對整個模塊包括數據庫都進行了獨立部署,而且針對價格庫存等敏感信息進行單獨配置,并提供了預警和側峰機 制,這樣便保證了促銷活動期間搶購模塊不會對其他模塊產生影響。

5.能否結合具體實例談談你們是如何運用分布式緩存技術的?

沙洲: 對于分布式緩存技術,我們已經在使用的是memcached,對于Redis我們已經在小范圍使用,今年將逐步推廣至整個網站。

目前我們的緩存技術主要運用于兩種情況:一種是針對一些 頻繁讀取且變化相對較少的數據 ,例如地理信息、景區景點信息、業務字典信息等數據。 我們將這些數據存入緩存中并提供定期數據同步機制,從而減少數據庫的訪問量,提高讀取速度。另一種是 針對與其他系統的對接 ,例如網站在下訂單的過程中要從產品系統中獲取產品信息,出發班期,價格,庫存等信息。為了保證網站的穩定性和良好的用戶體驗,需要把這些信息預先加載至 緩存中,之后所有的操作如價格校驗和扣減庫存等都在緩存中進行,配合消息系統和產品緩存更新機制,做到信息快速同步更新。這樣不僅提升了下單速度, 也防止了接口故障對預訂流程的影響。

6.從你2011年加入遨游網至今,架構和不同模塊都發生過哪些變化,為什么有這些變化?

沙洲: 一開始遨游網的技術架構是典型的傳統應用的架構類型,所有的業務邏輯都混在一起。隨著業務的增多,系統愈發臃腫龐大,輕微的改動都可能造成整個網站的癱瘓。

為了改變這種狀況,我們首先進行了站點的拆分,把不同的業務流程歸置到不同的站點下,每個站點都進行獨立部署。隨后為了解決數據庫性能問題, 根據業務類型以及訪問情況進行了數據庫的拆分和優化。之后便開始了SOA化改造,改造過程中為了保證代碼質量和便于統一維護和管理, 我們打造了AoyouFramework的基礎開發框架,在此框架上做到了代碼優化和邏輯重構。

7.國內開源氛圍非常活躍,你們在技術上有用到哪些開源產品嗎?

沙洲: 對于開源技術,我們始終堅信這是在我們技術發展歷程中至關重要的一個環節。當開拓或重構一個業務線時,我們越來越多的將焦點放在了開源技術上。 我們目前用到了Node.js,Bootstrap,Angularjs,Mongodb,Python,Redis,RabbitMQ等成熟的開源技 術,并在逐步擴大LNMP/LAMP此類經典開源網站服務器架構在生產環境的使用率。今年已按計劃實施了與北京GDG開發者社區合作,旨在更好的使用, 參與并且支持開源技術。

</div>

 本文由用戶 cmb2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!