【原】從零開始改造淘淘商城(對項目的一些不足進行分析歸納)01

来源:http://www.cnblogs.com/zdd-java/archive/2017/11/22/taotao-refactoring-01.html
-Advertisement-
Play Games

前言: 之所以想寫記錄這個系列是因為今年在不斷學習新的東西和研究新的開源項目,偶然看到某機構的第一期淘淘商城的項目和視頻,多多少少看了幾集,前面課程較簡單,後面的課程就稍微難一點,偏向運維這塊。總體來說比較容易,適合剛入門的人看;相信不少人學習的時候也會有自己的觀點和疑惑,當然我也不例外,所以帶著這 ...


  前言:

      之所以想寫記錄這個系列是因為今年在不斷學習新的東西和研究新的開源項目,偶然看到某機構的第一期淘淘商城的項目和視頻,多多少少看了幾集,前面課程較簡單,後面的課程就稍微難一點,偏向運維這塊。總體來說比較容易,適合剛入門的人看;相信不少人學習的時候也會有自己的觀點和疑惑,當然我也不例外,所以帶著這些東西我把淘淘商城這個項目重構了一遍。

        觀後感:

     淘淘商城是典型的maven模塊項目,其中pojo,service,mapper,controller單獨劃分為子模塊,由taotao-manager統一管理,這也是目前互聯網公司流行的開發模式之一。後續加入的restRESTful項目是為了提供給前端頁面提供介面,這裡順帶普及一下rest知識點:restRESTful可以通過一套統一的介面為 Web,iOS和Android提供服務,對外返回json格式數據。還有sso項目, sso項目是用來統一管理用戶緩存信息,將用戶信息存儲到redis,解決用戶只需要登錄一次就可以訪問所有相互信任的應用系統,而不用重覆登錄

 

那麼這個項目也存在一些問題,也是我自己思考後的一些疑惑,如下幾點 :

  1. 儘管劃分了模塊但從總體來看項目還是屬於單體垂直應用架構,因為從Controller->Service->Dao->Db都是一套流程下來,如果說某天改了dao需要發佈版本那麼整個網站都要shutdown後重新發佈。

 2.對於數據訪問,沒有做對應的熱點緩存,每次查詢都去load資料庫,主頁訪問量最多,同時併發量也凸顯在這裡,一個商城如果不做好緩存這塊,那麼資料庫的IO分分鐘就容易達到瓶頸。

 3. 跨域這一塊,使用的是JSONP請求rest項目,但存在的問題是jsonp只支持get請求而不支持post請求,也即是說如果想傳給後臺一個json格式的數據,此時問題就來了,瀏覽器會報一個http狀態碼。

 4.sso存在一個問題是沒有做到刷新用戶的緩存時間,也就是從登錄那一刻設置30分鐘緩存時間,就算30分鐘內我不斷請求那麼失效時間也不會更新。

 5.配置文件(xxx.properties不統一)

 

  重構:

  1. 引入dubbo分散式服務框架,減輕項目之間的耦合度,引入api工程,對外提供服務,註冊中心使用的是zookeeper。
  2. 新建taotao-config工程,統一管理配置文件,通過命名區分不同的模塊對應的文件。
  3. 引入spring-redis-session,解決sso的不足之處。
  4. 接通支付模塊,真正實現支付過程以及支付回調流程(這裡對接的是某第三方支付測試環境)。
  5. 新增隊列功能。
  6. ..........................

 

最後:

下次的的博客章節會逐步分析和記錄

 

 

 

  

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • pandas可以讀寫如下格式的數據類型: 具體詳見:http://pandas.pydata.org/pandas docs/version/0.20/io.html 讀取csv文件 我們準備了一個csv文件,格式類似為: 要讀取此csv文件,方法為: 輸出為: 這裡我第一次嘗試運行時,由於沒有設置 ...
  • java 使用metadata-extractor 旋轉圖片 ...
  • 在事件驅動的應用中利用隊列來處理事件是一種常見的方法。 事件驅動的應用主要遵循實時事件發生的順序來執行。 例如,在java或windows中開發圖形用戶界面,應用程式的行為主要取決於鍵盤操作、滑鼠點擊等一些由用戶觸發的事件。其他一些數據驅動型的例子還包含飛機或工廠設備中的控制系統等。 在很多事件驅動 ...
  • [Python]嵌套迴圈nested loop-練習題,嵌套迴圈一向是新手的難點,所以作為新手,自己找了些練習題,供自己和大家練習使用。 ...
  • https://www.cnblogs.com/jecyhw/p/5504855.htmlhttp://blog.csdn.net/god_for/article/details/50500342 mkdir /data/php7 ./configure --prefix=/data/php7 \ ...
  • The branch of mathematics called number theory is about properties of numbers. One of the areas that has captured the interest of number theoreticians ...
  • 網站圖片往往有很多顯示效果,使用css是實現圖片特效的比較簡便的方式。下麵記錄一段css滑鼠指向的多重特效: ...
  • 主要內容: 目前Python主要應用領域: 雲計算: 雲計算最火的語言, 典型應用OpenStack WEB開發: 眾多優秀的WEB框架,眾多大型網站均為Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django 科學運算、人工智慧: 典型庫NumPy, Sci ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...