Spring Boot分布式系統實踐【1】-架構設計


前言

【第一次嘗試去寫一個系列,肯定會有想不到的地方,歡迎大家留言指正】

本系列將介紹如果從零構建一套分布式系統。同時也是對自己過去工作的一個梳理過程。

本文先整理出構建系統的主要技術選型,以及技術框架。其實在形成如下框架前,我參考了許多資料和結構,也結合中小型公司的時間以及人力等因素綜合。

選型

分布式調用框架

可選的有  dubbox, SpringCloud

dubboX:當當基於dubbo搞的,還在維護可以一用,推薦。

SpringCloud:整合了大量組件,相關文檔比較復雜,需要針對性的進行閱讀,學習成本還是需要一些。

最后選擇:dubbox + zk +Spring Boot

雲平台

可選方案:阿里雲、騰訊雲、百度雲、華為雲等等

 

大概就是比較不同平台相同配置價格,以及同一平台下不同區域間的價格等等,最終選擇阿里雲。

Redis

用來做緩存自建成本有點高,選擇使用阿里的redis

負載均衡

可選方案: SLB, Nginx.

SLB要收錢,但是比較便宜,有保證,不會掛。 但是可配置的很少,不能根據域名做ip映射等

最后為了減少維護成本,直接使用SLB【測試環境還是要搭建nginx】

CDN

用來緩存靜態文件等,七牛、阿里可選

最終選擇七牛,服務好,反應及時【價格也會低一些】

身份認證

可選方案:session+redis、jwt

從擴展性來說確實jwt比較適合,但是有一個小麻煩,就是處理token的失效問題。【其實主要問題是使用token增加了代碼復雜度】

最終選擇session+redis

擴展:有人會說瀏覽器可以很好支持cookie但是移動端很難支持,其實移動端支持也不難。iOS端可以從HTTPCookieStorage讀取cookie,請求時設置cookie。Android端使用Cookiejar。

權限控制

shiro:一直都在用shiro,也比較簡單

數據庫

oracle:使用阿里雲的話自建oracle還是比較麻煩的

mysql:可以自建也可以用阿里的RDS

最終選擇阿里雲數據庫RDS

持久層框架

常用Mybatis,那就繼續用吧

部署架構圖

 

 

附一張阿里的部署架構圖供大家參考

 

 

完整流程圖地址:https://www.processon.com/view/5b4d9b26e4b09a67416e1611

項目調用關系圖

 

 

項目模塊說明

service 為業務層 即服務提供者(包含 service實現及facadeService實現、Dao)

facade為接口層(只定義 接口類 與 實體類)

middle為服務中間層 (通過facade層 調用service層 )可以理解為web層與api層共用的模塊

web為服務消費者,包含web頁面 (通過facade層 調用service層 )

api為服務消費者,主要為客戶端提供api服務 (通過facade層 調用service層 )

 

 


免責聲明!

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



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