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