自第一篇《 基於SpringCloud的Microservices架構實戰案例-序篇 》發表出來後,差很少有半年時間了,一直也沒有接着拆分完,有如讀本書同樣,也是須要契機的,仍是要把未完成的工做作完,雖然並非什麼經典應用,仍是有必要將simplemall的造成過程拆解下,也便於對此案例的理解。
服務拆分具體拆分到多細,業內沒有一個統一的標準。固然也不能爲了拆分而拆分,還要依據具體的業務場景應用狀況而定,讀過《淘寶技術這十年》的朋友,相信對淘寶的技術演進有一個很直觀的感覺。雖然當時微服務的概念並不今天這般火熱,但實際已經在生產環境中運行。css
simplemall項目的業務背景基於簡單的購物場景,也便是常見的電商業務。實現完備的電商業務流程很是複雜龐大,此項目僅中拆分出基礎的簡單的5個基礎服務,用戶模塊、訂單模塊、支付模塊、產品模塊、消息模塊。實際的業務應用中可能拆解的更加細緻,好比產品服務中還能夠細分出庫存、促銷、價格、產品分類、推薦等等,本項目僅以最簡單的服務展示,以達成簡單瞭解並使用spring cloud組件的目的。前端
所有模塊基於SpringBoot,採用maven進行項目管理。mysql
項目架構結構圖以下:git
基礎業務服務分爲:程序員
account-service用戶子服務github
product-service產品子服務redis
payment-service支付子服務spring
order-service訂單子服務sql
msg-service消息子服務api
front-app業務前端展現
每一個業務服務有本身的單獨的DB,數據存儲基於mysql 5.6+,sql文件夾下面存放着基礎的初始化腳本,直接執行便可。每一個服務鏈接db的配置依本地配置爲準。
基礎支撐服務分爲:
admin-server服務監控
conf-server配置中心
eureka-server服務註冊中心
hystrix-dashborad服務熔斷監控面板
sleuth-server連接跟蹤監控
turbine-server服務熔斷集合監控
zuul-server網關服務器
common-module基礎模塊
必備服務是eureka-server,用於服務註冊、發現。其他基礎服務模塊是慢慢演變優化加入進去的。
common-module模塊中存放redis的鏈接配置及相關模塊的實體。有朋友問entity爲什麼存儲在common模塊中,此種作法有利有弊。好處是全部子模塊直接依賴此common模塊,能夠拿到因此模塊相關的實體及接口,弊端是服務增多時,Java類繁多龐大,會引入不少無關代碼。比較常見的作法時,每一個子服務模塊中獨立一個api模塊,存放實體及對外的api接口。以下圖:
小節一下:本文介紹了simplemall項目的代碼結構,重點述說了下子服務的實體及接口代碼的存儲,後續深刻具體模塊詳細介紹。
源碼地址:https://github.com/backkoms/simplemall
擴展閱讀: