電商專案總結
技術新、技術範圍廣、分散式、高併發、叢集、負載均衡、高可用、海量資料、業務複雜、系統安全
電商模式:
B2B:商家到商家。阿里巴巴,慧聰網、銘萬網。
B2C:商家到使用者。京東。
C2C:使用者到使用者。淘寶。
B2B2C:商家到商家到使用者。天貓。
O2O:線上到線下。百度外賣、美團、餓了麼。
專案功能總結:
後臺管理系統:管理商品、類目以及內容釋出等功能。
前臺系統:使用者可以在前臺系統中進行註冊、登入、瀏覽商品、首頁、下單等操作。
訂單系統:提供下單、查詢訂單、修改訂單狀態、定時處理訂單。
搜尋系統:提供商品的搜尋功能。
單點登入系統:為多個系統之間提供使用者登入憑證以及查詢登入使用者的資訊。傳統架構的弊端(併發量):
一個tomcat只有500個併發量,故考慮用ngnix做tomcat叢集與負載均衡。
當tomcat叢集中節點數量增加,服務能力先增加後下降。所以叢集中節點數量不能太多,一般也就5個左右
tomcat叢集導致的session共享問題,如一個使用者登入使用者資訊需要儲存在session中,使用Redis解決(所有tomcat共享redis)
若想獲取更高的併發量,需要按照功能點把系統拆分,拆分成獨立的功能。單獨為某一個節點新增伺服器叢集。需要系統之間配合才能完成整個業務邏輯。叫做分散式
分散式架構:把系統按照模組拆分成多個子系統。多個子系統相互協作才能完成業務流程。系統之間需要進行通訊。
叢集:同一個工程部署到多臺伺服器上。
優點:
1、把模組拆分,使用介面通訊,降低模組之間的耦合度。
2、把專案拆分成若干個子專案,不同的團隊負責不同的子專案。
3、增加功能時只需要再增加一個子專案,呼叫其他系統的介面就可以。
4、可以靈活的進行分散式部署。
缺點:
1、系統之間互動需要使用遠端通訊,介面開發增加工作量。
2、各個模組有一些通用的業務邏輯無法共用。
SOA:Service OrientedArchitecture面向服務的架構。也就是把工程拆分成服務層、表現層兩個工程。服務層中包含業務邏輯,只需要對外提供服務即可。表現層只需要處理和頁面的互動,業務邏輯都是呼叫服務層的服務來實現
MyEclipse + Maven+svn+ssm+dubbo+redis+solr+activemq
Maven的常見打包方式:jar、war、pom
Pom工程一般都是父工程,管理jar包的版本、maven外掛的版本、統一的依賴管理。聚合工程。
Taotao-parent:父工程,打包方式pom,管理jar包的版本號。
|--Taotao-common:通用的工具類通用的pojo。打包方式jar
|--Taotao-manager:服務層工程。聚合工程。Pom工程
|--taotao-manager-dao:打包方式jar
|--taotao-manager-pojo:打包方式jar
|--taotao-manager-interface:打包方式jar
|--taotao-manager-service:打包方式:war
|--taotao-manager-web:表現層工程。打包方式war
使用mybatis官方提供的mybatis-generator生成pojo、mapper介面及對映檔案。供整個專案使用
並且將pojo放到toatao-manager-pojo工程中。
將mapper介面及對映檔案放到taotao-manager-dao工程中。
如何實現遠端通訊?
1、Webservice:效率不高基於soap協議。專案中不推薦使用。
2、使用restful形式的服務:http+json。很多專案中應用。如果服務太多,服務之間呼叫關係混亂,需要治療服務。
3、使用dubbo。使用rpc協議進行遠端呼叫,直接使用socket通訊。傳輸效率高,並且可以統計出系統之間的呼叫關係、呼叫次數。
- 單一應用架構
- 當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。
- 此時,用於簡化增刪改查工作量的 資料訪問框架(ORM) 是關鍵。
- 垂直應用架構
- 當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。
- 此時,用於加速前端頁面開發的 Web框架(MVC) 是關鍵。
- 分散式服務架構
- 當垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。
- 此時,用於提高業務複用及整合的 分散式服務框架(RPC) 是關鍵。
- 流動計算架構
- 當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基於訪問壓力實時管理叢集容量,提高叢集利用率。
- 此時,用於提高機器利用率的 資源排程和治理中心(SOA) 是關鍵。
Dubbo就是資源排程和治理中心的管理工具。