不知道大家有沒有這樣的經歷:入職了一家新公司,接觸的專案是微服務專案,而自己之前接觸的都是單體專案,不知道如何下手專案,心裡會比較慌。今天就以我的mall-swarm微服務電商實戰專案為例,來聊聊如何快速上手微服務專案。
mall-swarm專案簡介
這裡先簡單介紹下mall-swarm專案,mall-swarm專案(11k+star)是一套微服務商城系統,採用了2024最新微服技術棧
,涵蓋Spring Cloud Alibaba、Spring Boot 3.2、JDK17、Kubernetes等核心技術。mall-swarm專案在電商業務的基礎整合了註冊中心、配置中心、監控中心、閘道器等系統功能。
- Github地址:https://github.com/macrozheng/mall-swarm
- Gitee地址:https://gitee.com/macrozheng/mall-swarm
- 教程網站:https://cloud.macrozheng.com
專案演示:
把專案執行起來
學習專案的第一步,一般都是把專案執行起來,例如學習mall-swarm專案的時候,可以根據《mall-swarm微服務學習教程》 的快速開始部分,把開發環境搭建起來。
在《mall-swarm專案後端開發環境搭建》文件中,就有mall-swarm專案後端開發環境的搭建教程,對比下之前mall專案的搭建,其實就多了一個Nacos元件而已。
在《mall-swarm前端開發環境搭建》文件中有mall-swarm專案後臺管理系統和前臺商城系統搭建教程,對比下之前mall專案的前端搭建,把後端API請求路徑改為呼叫閘道器即可。
熟悉專案功能
搭建完專案之後,我們就可以開始熟悉專案的功能了,熟悉專案的功能有利於我們理解專案的業務邏輯。
在《mall-swarm專案核心功能演示》文件中就有專案的核心功能的演示,包括後臺管理系統功能及移動端商城功能,前後端結合的訂單流程以及微服務專案系統功能演示,可以讓大家對mall-swarm專案實現的功能有個大概瞭解。
大家在接觸新專案的時候,自己把對應的功能去使用一下也可以加深對專案功能的理解,比如體驗下後臺管理系統的功能:https://www.macrozheng.com/admin/
再體驗下前臺商城系統的功能,前後臺系統結合使用也有助於我們理解專案的核心業務邏輯:https://www.macrozheng.com/app/
學習微服務核心元件
其實基於Spring Cloud的微服務專案是由一個個Spring Boot應用組合起來的,所以在Spring Boot的基礎上,我們還需學習Spring Cloud核心元件,這些核心元件是微服務專案的基礎。
目前最新的Spring Cloud版本為Spring Cloud 2023
,我們構建微服務專案時一般會用到如下Spring Cloud和Spring Cloud Alibaba核心元件。
Spring Cloud核心元件
- Spring Cloud Eureka:註冊中心,可以實現服務註冊與發現功能。
- Spring Cloud Consul:服務治理與配置中心。
- Spring Cloud Zookeeper:服務治理與配置中心。
- Spring Cloud Gateway:API閘道器服務。
- Spring Cloud Circuit Breaker:斷路器,實現服務容錯保護功能。
- Spring Cloud Config:配置中心,外部集中化配置管理。
- Spring Cloud Bus:訊息匯流排,可以實現分散式訊息傳送。
- Spring Cloud LoadBalancer:負載均衡元件,可以實現服務間負載均衡的呼叫。
- Spring Cloud OpenFeign:服務呼叫元件,可以實現服務間的宣告式服務呼叫。
- Spring Cloud Stream:訊息元件,可以構建基於事件驅動的應用。
Spring Cloud Alibaba核心元件
- Nacos:可以作為註冊中心和配置中心使用。
- Sentinel:和斷路器具有類似功能,能實現熔斷與限流。
- Seata:微服務分散式事務解決方案。
在我的《mall-swarm微服務學習教程》 元件篇中不僅會講解上述Spring Cloud核心元件,還會講解微服務許可權解決方案Spring Authorization Server和分散式鏈路跟蹤工具SkyWalking,具體教程目錄如下。
搭建微服務腳手架
學習完Spring Cloud核心元件之後,如何把這些元件運用到專案中去呢?此時可以自行搭建一個微服務專案腳手架,這樣就能快速掌握所學的微服務技術了。
不要小看一個微服務專案腳手架,一個腳手架會涵蓋專案中用到的幾乎所有技術,而且這些技術能複用到其他微服務專案中去,下面是mall-swarm專案使用到的後端技術棧。
技術 | 版本 | 說明 |
---|---|---|
Spring Cloud | 2023.0.1 | 微服務框架 |
Spring Cloud Alibaba | 2023.0.1.0 | 微服務框架 |
Spring Boot | 3.2.2 | 容器+MVC框架 |
Sa-Token | 1.37.0 | 認證和授權框架 |
MyBatis | 3.5.14 | ORM框架 |
MyBatisGenerator | 1.4.2 | 資料層程式碼生成 |
PageHelper | 6.1.0 | MyBatis物理分頁外掛 |
Knife4j | 4.5.0 | 文件生產工具 |
Elasticsearch | 7.17.3 | 搜尋引擎 |
Logstash | 7.17.3 | 日誌收集 |
Kibana | 7.17.3 | 日誌視覺化檢視工具 |
RabbitMQ | 3.10.5 | 訊息佇列 |
Redis | 7.0 | 分散式快取 |
MongoDB | 5.0 | NoSql資料庫 |
Druid | 1.2.9 | 資料庫連線池 |
MinIO | 8.4.5 | 物件儲存 |
Seata | 2.0.0 | 全域性事務管理框架 |
Kubernetes | 1.29 | 應用容器管理平臺 |
在我的《mall-swarm微服務學習教程》 的架構篇中,會帶大家搭建一個mall-swarm專案在使用的專案腳手架,從一個單體的Spring Boot腳手架出發,一步步改造成一個通用的微服務腳手架,涵蓋微服務API文件聚合、微服務許可權、微服務應用監控等解決方案,具體教程目錄如下。
實現專案的部署上線
Kubernetes(簡稱K8S)是一套非常流行的容器編排系統,目前有很多微服務專案在生產環境都是使用它來部署的,所以我們也有必要掌握下微服務專案在K8S環境下的部署。
在《mall-swarm微服務學習教程》 的K8S篇中,會帶大家使用企業級容器管理平臺KubeSphere實現mall-swarm專案的部署。
整個K8S篇的內容如下,涵蓋了K8S的講解、SpringBoot應用在K8S環境下的部署、KubeSphere的使用以及mall-swarm在K8S環境下的部署。
擴充套件專案開發新需求
在學習完微服務專案的技術棧,並且能自行搭建微服務腳手架之後,我們就可以在微服務專案中開發業務功能了,這些業務功能的開發與在單體應用中開發起來差不多。
總結
對於新上手的微服務專案,就算沒有微服務專案的開發經驗,大家也不必驚慌,可以按如下步驟來上手。
- 把專案執行起來:第一步,可以看對應的部署文件。
- 熟悉專案功能:有利於理解專案的業務邏輯。
- 學習微服務核心元件:看懂微服務專案程式碼的基礎。
- 搭建微服務腳手架:有助於熟練掌握專案中的微服務技術棧。
- 實現專案的部署上線:掌握微服務專案的部署流程也是必要的。
- 擴充套件專案開發新需求:在掌握專案中的技術棧和理解專案業務的情況下開發。
專案地址
https://github.com/macrozheng/mall-swarm