不知道大家有沒有這樣的經歷:入職了一家新公司,接觸的項目是微服務項目,而自己之前接觸的都是單體項目,不知道如何下手項目,心裏會比較慌。今天就以我的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