(轉) 學習淘淘商城第一課

http://blog.csdn.net/u012453843/article/details/62238059mysql

  當今中國,互聯網技術迅速崛起,國家也在一直倡導互聯網+的概念,因此在能夠預見的將來,互聯網工程師確定會愈來愈吃香,工資水平也愈來愈高。想在互聯網行業能有一席之地,就要掌握相關技術。nginx

        首先,咱們一塊兒來了解一下電商行業技術特色:redis

1.技術新sql

2.技術範圍廣數據庫

3.分佈式tomcat

4.高併發、集羣、負載均衡、高併發安全

5.海量數據服務器

6.業務複雜網絡

7.系統安全session

        正是因爲以上特色才讓咱們的互聯網工程師這麼吃香。

        咱們要學習的淘淘網上商城是一個綜合性的B2C平臺,相似京東商城、天貓商城。會員能夠在商城瀏覽商品、下訂單,以及參加各類活動。管理員、運營能夠在平臺後臺管理系統中管理商品、訂單、會員等。客服能夠在後臺管理系統中處理用戶的詢問及投訴。

         提到電商,咱們就一塊兒瞭解下,當前的電商模式有哪些:

B2B: 商家到商家。表明公司有阿里巴巴、慧聰網、銘萬網。

B2C: 商家到客戶。表明公司是京東。

C2C: 用戶到用戶。表明公司是淘寶。

B2B2C:商家到商家到用戶。表明公司是天貓。

O2O: 線上到線下。表明公司有百度外賣、美團、餓了麼。

           下面說下B2C電商系統架構,B2C電商系統功能列表以下圖所示。

         傳統項目的架構圖以下所示,這種架構在併發量小的狀況下是沒有什麼問題的,可是當併發量大的時候,這種架構瞬間就會崩潰。

         先來講下當併發達到1000時的場景,咱們知道,對於一個tomcat來說,理論上能處理500的併發量,但實際它能應付的併發量有個三四百就不錯了,那麼當有1000人同時訪問系統時,怎麼解決問題呢?答案是加tomcat數量(搭建tomcat集羣)並使用nginx反向代理來作負載均衡處理,以下圖所示,一個tomcat處理400併發,3個tomcat即可以處理1000的併發。須要注意的是sessioin共享的問題,原理是tomcat之間每隔一段時間便會廣播本身的session信息,別的tomcat看到本身有些信息跟人家不一致就向人家同步,同理該tomcat也會跟別的tomcat進行同步數據,從而達到數據一致的目的。

         那麼當併發量達到10000時怎麼辦呢?理論上說,能夠部署25個tomcat來解決併發問題,可是實際上這時tomcat的集羣處理併發的能力便很低了,緣由是什麼呢?上面咱們說了,不一樣的tomcat之間要保持數據同步,配置了session複製,會定時廣播session,並且每一個tomcat都既是廣播者又是接收者,當tomcat較多時,網絡帶寬都被用來進行廣播了,留給集羣來處理併發的帶寬就不多了,效率很低下,由此能夠看到,咱們不能經過增長tomcat數量來解決高併發的問題。

       上面既然說了經過增長tomcat數量來解決高併發不可行,那麼應該怎麼解決呢?要解決這個問題,須要按照功能點把系統拆分,拆分紅獨立的功能。單獨爲某一個節點添加服務器。須要系統之間配合才能完成整個業務邏輯,這就叫作分佈式。其中很核心的一點就是,這種架構把全部的session都放到單點登陸系統中了,這樣就解決了單純增長tomcat數量而引發的session廣播風暴的問題,咱們把一個完整的系統拆分紅多個模塊這樣作的緣由是,高併發處理可能僅僅涉及一小塊,好比下圖的前臺系統,其它模塊的併發量就小不少了,複製整個tomcat的作法顯然浪費了不少資源,咱們把項目模塊化,這樣咱們即可以集中處理高併發的模塊(採用集羣來處理,因爲這時已經沒有廣播風暴的問題了,所以理論上講,能夠處理很是高的併發量),那些併發量低的模塊可能一個tomcat即可以搞定,哪一個模塊併發量高了即可以配置集羣來解決。項目的運行須要各個模塊協調合做。

         概念:

         分佈式架構:多個子系統相互協做才能完成業務流程。系統之間須要通訊。

         集羣: 同一個工程部署到多臺服務器上。

         分佈式架構的優勢:

1.把模塊拆分,使用接口通訊,下降模塊之間的耦合度。

2.把項目拆分紅若干個子項目,不一樣的團隊負責不一樣的子項目。

3.增長功能時只須要再增長一個子項目,調用其它系統的接口就能夠。

4.能夠靈活的進行分佈式部署。

        有優勢就有缺點,缺點以下:

1.系統之間交互須要使用遠程通訊,接口開發增長工做量。

2.各個模塊有一些通用的業務邏輯沒法共用。

        爲了解決上面分佈式架構的缺點,咱們引入了soa架構,SOA:Service Oriented Architecture面向服務的架構。也就是把工程拆分紅服務層、表現層兩個工程。服務層中包含業務邏輯,只須要對外提供服務便可。表現層只須要處理和頁面的交互,業務邏輯都是調用服務層的服務來實現。SOA架構以下圖所示,咱們把接口和業務邏輯作成一個個的服務。好比訂單系統須要查詢商品服務,前臺系統也須要查詢商品服務,因爲咱們把商品服務獨立出來了,作到了代碼複用,它們調用便可。表現層只是用來展現數據而已。

        咱們淘淘商城的技術架構以下圖所示,能夠看到表現層與服務層之間加了一個服務中間件Dubbo,這樣作的目的是加快表現層與服務層之間的交互速度,服務層與數據庫之間加redis,能夠大大提升重複性查詢的效率,持久層是一個MySQL集羣,由MyCat數據庫中間件來管理,MyCat至關於這麼多mysql數據庫的一個抽象,咱們操做數據庫直接面向的將是MyCat而不是具體的某個mysql,是由MyCat來替咱們完成相關操做的。Solr服務是專門用來處理查詢的,主要是經過創建索引庫來實現的。消息隊列則是專門處理各個模塊之間的消息的。

    

相關文章
相關標籤/搜索