帶你逐步深入瞭解SSM框架——淘淘商城專案之專案總結
1. 專案總結
總結淘淘商城中用到的技術點:
1.1. 專案工程搭建。
1、使用maven構建工程。Maven的繼承、聚合、依賴管理。
2、Svn的使用,svn上傳下載程式碼。
1.2. ssm框架整合。
1、mybatis逆向工程。
2、後臺管理系統搭建,前臺技術使用EasyUI框架。瞭解easyUI的dategrid的使用方法。
1.3. 實現商品新增。
1、商品類目選擇。EasyUI的非同步tree的使用方法。
2、圖片伺服器的搭建。使用ftp+http配合,實現圖片服務。ftp服務使用vsftpd實現,http服務使用nginx實現。
3、KindEditor富文字編輯器的使用方法。
1.4. 規格引數實現。
1、規格引數的解決方案。
a) 方案一:建立多個表進行關聯實現商品類目。
b) 方案二:使用模板方式實現。
2、java物件、json之間的轉換。
1.5. 前臺工程搭建。
1、理解分散式系統架構思想。
2、Jsonp解決ajax跨域呼叫的問題。
1.6. 第六天:CMS系統的實現
1、CMS系統的實現思路
2、Httpclient的使用方法
3、首頁大廣告位的實現
1.7. 內容系統新增快取
1、redis的使用方法及redis叢集的搭建
2、系統中新增快取邏輯
3、快取的同步方法。
1.8. 搜尋功能實現
1、solr服務在linux環境的搭建
2、使用solr實現搜尋功能。
3、索引庫中商品的同步
1.9. 商品詳情頁面實現
1、商品詳情頁面內容非同步載入
2、規格引數按需載入
3、商品詳情頁面新增快取及快取同步
1.10. 單點登入系統實現
1、服務介面的開發
2、在分散式環境中使用redis實現session共享
3、使用cookie在多個系統中共享。
4、攔截器的使用方法
1.11. 購物車、訂單
1、使用cookie儲存購物車資訊
2、建立訂單系統。釋出服務,支援post請求提交json格式的資料。
3、在使用者提交訂單之前,檢查使用者的登入狀態(攔截器)
1.12. nginx安裝、配置
1、nginx的虛擬機器的配置
2、Nginx的反向代理
3、Nginx的負載均衡
4、Nginx的高可用
1.13. solr叢集的搭建、系統部署
1、solrCloud的搭建。Zookeeper的配置、solr叢集的分片。
2、Mysql資料庫在linux環境的安裝
3、使用maven進行系統的熱部署。
1.14. 專案總結
2. 淘淘商城簡歷中描述
見之前文章。
3. 面試中的問題回答
3.1. 淘淘網站併發數:
1000-2000左右併發。
3.2. 人員配置
產品經理:3人,確定需求以及給出產品原型圖。
專案經理:1人,專案管理。
前端團隊:5人,根據產品經理給出的原型製作靜態頁面。
後端團隊:20人,實現產品功能。
測試團隊:5人,測試所有的功能。
運維團隊:3人,專案的釋出以及維護。
3.3. 開發週期
採用迭代開發的方式進行,一般一次迭代的週期為一個月左右。
3.4. 你說你用了redis快取,你redis存的是什麼格式的資料,是怎麼存的
redis中儲存的都是key-value格式的。拿商品資料來說,key就是商品id,value是商品相關資訊的json資料。
3.5. 你前臺portal採用4臺伺服器叢集部署,那能前臺高併發訪問效能提上去了,那資料庫會不會造成一個瓶頸,這一塊你是怎麼處理的?
portal系統在高併發的情況下如果每次請求都請求都查詢資料庫確實會出現數據庫的瓶頸。為了降低資料庫壓力,在服務層會新增一個快取,用redis實現,這樣的話請求先到快取中查詢是否有快取的內容,如果有直接從快取中取資料,如果沒有再到資料庫中查詢。這樣資料庫的壓力就不會那麼大了。
3.6. 你購物車存cookie裡邊 可以實現不登入就可以使用購物車 那麼我現在沒有登入把商品存購物車了 然後登入瞭然後我換臺電腦並且登入了還能不能看見我購物車的資訊?如果看不到怎麼做到cookie同步,就是在另外一臺電腦上可以看到購物車資訊
回答:
淘淘商城現階段使用的僅僅是把購物車的商品寫入cookie中,這樣服務端基本上麼有儲存的壓力。但是弊端就是使用者更換電腦後購物車不能同步。打算下一步這麼實現:當用戶沒有登入時向購物車新增商品是新增到cookie中,當用戶登入後購物車的資訊是儲存在redis中的並且是跟使用者id向關聯的,此時你更換電腦後使用同一賬號登入購物車的資訊就會展示出來。
3.7. 如果使用者一直新增購物車新增商品怎麼辦?並且他新增一次你查詢一次資料庫?網際網路上使用者那麼多,這樣會對資料庫造成很大壓力你怎麼辦?
當前我們使用cookie的方式來儲存購物車的資料,所以當用戶往購物車中新增商品時,並不對資料庫進行操作。將來把購物車商品放入redis中,redis是可以持久化的可以永久儲存,此時就算是頻繁的往購物車中新增資料也沒用什麼問題。
4. 電商活動解決方案
4.1. 電商活動倒計時方案:
1、確定一個基準時間。可以使用一個sql語句從資料庫中取出一個當前時間。SELECTNOW();
2、活動開始的時間是固定的。
3、使用活動開始時間-基準時間可以計算出一個秒為單位的數值。
4、在redis中設定一個key(活動開始標識)。設定key的過期時間為第三步計算出來的時間。
5、展示頁面的時候取出key的有效時間。Ttl命令。使用js倒計時。
6、一旦活動開始的key失效,說明活動開始。
7、需要在活動的邏輯中,先判斷活動是否開始。
4.2. 秒殺方案:
1、把商品的數量放到redis中。
2、秒殺時使用decr命令對商品數量減一。如果不是負數說明搶到。
3、一旦返回數值是負數說明商品已售完。