前言: 之所以想寫記錄這個系列是因為今年在不斷學習新的東西和研究新的開源項目,偶然看到某機構的第一期淘淘商城的項目和視頻,多多少少看了幾集,前面課程較簡單,後面的課程就稍微難一點,偏向運維這塊。總體來說比較容易,適合剛入門的人看;相信不少人學習的時候也會有自己的觀點和疑惑,當然我也不例外,所以帶著這 ...
前言:
之所以想寫記錄這個系列是因為今年在不斷學習新的東西和研究新的開源項目,偶然看到某機構的第一期淘淘商城的項目和視頻,多多少少看了幾集,前面課程較簡單,後面的課程就稍微難一點,偏向運維這塊。總體來說比較容易,適合剛入門的人看;相信不少人學習的時候也會有自己的觀點和疑惑,當然我也不例外,所以帶著這些東西我把淘淘商城這個項目重構了一遍。
觀後感:
淘淘商城是典型的maven模塊項目,其中pojo,service,mapper,controller單獨劃分為子模塊,由taotao-manager統一管理,這也是目前互聯網公司流行的開發模式之一。後續加入的restRESTful項目是為了提供給前端頁面提供介面,這裡順帶普及一下rest知識點:restRESTful可以通過一套統一的介面為 Web,iOS和Android提供服務,對外返回json格式數據。還有sso項目, sso項目是用來統一管理用戶緩存信息,將用戶信息存儲到redis,解決用戶只需要登錄一次就可以訪問所有相互信任的應用系統,而不用重覆登錄。
那麼這個項目也存在一些問題,也是我自己思考後的一些疑惑,如下幾點 :
- 儘管劃分了模塊但從總體來看項目還是屬於單體垂直應用架構,因為從Controller->Service->Dao->Db都是一套流程下來,如果說某天改了dao需要發佈版本那麼整個網站都要shutdown後重新發佈。
2.對於數據訪問,沒有做對應的熱點緩存,每次查詢都去load資料庫,主頁訪問量最多,同時併發量也凸顯在這裡,一個商城如果不做好緩存這塊,那麼資料庫的IO分分鐘就容易達到瓶頸。
3. 跨域這一塊,使用的是JSONP請求rest項目,但存在的問題是jsonp只支持get請求而不支持post請求,也即是說如果想傳給後臺一個json格式的數據,此時問題就來了,瀏覽器會報一個http狀態碼。
4.sso存在一個問題是沒有做到刷新用戶的緩存時間,也就是從登錄那一刻設置30分鐘緩存時間,就算30分鐘內我不斷請求那麼失效時間也不會更新。
5.配置文件(xxx.properties不統一)
重構:
- 引入dubbo分散式服務框架,減輕項目之間的耦合度,引入api工程,對外提供服務,註冊中心使用的是zookeeper。
- 新建taotao-config工程,統一管理配置文件,通過命名區分不同的模塊對應的文件。
- 引入spring-redis-session,解決sso的不足之處。
- 接通支付模塊,真正實現支付過程以及支付回調流程(這裡對接的是某第三方支付測試環境)。
- 新增隊列功能。
- ..........................
最後:
下次的的博客章節會逐步分析和記錄