一個簡單的Redis結合Spring MVC架構以及實現過程


為了加快開發人員對公司項目的理解、更加容易入手和對公司項目的整體把控。

整體框架

首先介紹公司項目的整體框架,閑話少說,直接上圖

 

整體性能分析

這就是公司的一個整體的架構,為了開發人員對架構的側重點的把控,接下來先分析一下架構的整體性能並暢談一下架構的功能擴展分面。

前台項目

還是從前台項目說起吧。畢竟做這么多工作,最終的目的是把公司的產品展示給客戶看,給客戶更高的用戶體驗

用了提高前面頁面的讀取速度,所以設計者采用具有“內存數據庫”美譽的Redis數據庫,但是Redis的缺點就在於事務的處理和檢索。所用設計

者又采用了第三方全文檢索來進行彌補。而且這個第三方全文檢索的檢索速度絕對不是MySQL的檢索速度所能比的,至少檢索速度在MySQL

檢索的數千倍甚至上萬倍。

頁面緩存

用戶訪問首先會經過一個頁面緩存OSCache如果緩存中已有該頁面內容,則直接返回內容給用戶,這樣極大的減少了服務器的壓力。建議接手者

盡量在該塊的擴展,這樣能極大的減少服務器的壓力,並提供非常之高的用戶體驗。

全文檢索&Redis

如果用戶的訪問訪問的內容在OSCache中不存在,也就是訪問穿透了頁面的緩存,這里首先會走全文檢索去檢索服務條件的內容再從Redis中取出

相應的內容,通過freemarker靜態渲染之后返回給用戶。

發布項目

該項目具有極大的擴展性,現在主要是做數據資源的同步,后期可以考慮做靜態頁面的發布,主要處理運算和IO這一塊的功能,最后如果訪問量

暴增,可以在這里做MySQL的主從庫的同步,真正的實現讀寫分離。

技術實現分析

該項目主要采用了線程池的技術,主線程不斷去掃描gt_template這個數據的表,因為公司員工對后台數據的更新的數據都會被mysql中的觸發器給觸發到gt_template這個表中,gt_template的數據庫的字段如下:

其中的source_id是資源的id,如線路的id或酒店的idsource_type為資源的類型,

主線程一旦掃描到數據就會根據這個資源的類型從線程池中開辟新的線程並選擇對應的發布程序進行發布。

發布程序會根據source_id也就是資源的idMySQL數據庫中提取相應的產品,如果產品不存在,則說明該數據被刪除不存在了,為了減少臟數據

的存在,所以發布程序也做一次清理的過程,不管該條產品是否在全文檢索Solr和非關系性數據庫Redis中存在,都做一次清理該產品;如果產品

存在,則應該根據產品的當前狀態做及時的處理,如果是發布狀態則做如下的操作:1、清理臟數據,直接從全文檢索Solr和非關系性數據庫Redis

中把該條產品清理掉;2、把最新的數據更新到全文檢索Solr和非關系性數據庫Redis中。3、從gt_template中刪除該條記錄。

后台項目

該項目相對比較簡單,主要就是采用Spring MVC模式加上mybatis實現的,相信開發人員對此種架構已經是相當的熟悉了,我就不在這里賣弄了,

免得被扔鞋子、臭雞蛋等。

 

關於架構的性能就寫這么多了,免得大牛們看得不下去了。由於自己知識淺薄,就寫到這吧,大牛們輕拍。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM