書名: 微服務容器化開發實戰作者名: 尹為強本章字數: 1329字更新時間: 2020-10-30 15:17:08
2.4 編寫框架代碼
如果使用Spring Cloud“全家桶”構建項目的微服務框架,則可以使用EUREKA、Zuul、Config、Hystrix、Zipkin和Ribbon等組件。EUREKA用于服務注冊與發現,Zuul用于網關與路由,Config用于統一配置,Hystrix用于熔斷器,Zipkin用于調用鏈跟蹤,Ribbon用于客戶端調用的負載均衡。Spring Cloud各組件的詳細介紹與使用讀者可自行學習,此處不再贅述。
筆者的生產項目沒有使用Spring Cloud微服務框架全套組件,而是結合微服務運行環境Kubernetes進行了取舍,選取了Zuul、Hystrix和Zipkin,而服務注冊與發現則使用Kubernetes的服務發現與注冊來代替,使用Spring Boot Security和JWT進行角色與權限控制。
2.4.1 創建Maven工程
創建一個Maven工程,目錄名稱為ecs-order-system,項目名稱為eos-parent。該項目是父項目,后續各個微服務為其子項目(子模塊)。下面對eos-parent項目的pom.xml文件進行解析。
(1)父項目定義,具體如下:

定義eos-parent父項目的groupId、artifactId和版本號version。
(2)JDK版本定義,具體如下:

定義eos-parent父項目及其子模塊都是基于JDK1.8進行編輯和編譯的。
(3)Spring Boot版本定義,具體如下:

定義將Spring Boot 1.5.13版本作為開發環境和運行環境。
(4)Spring Cloud版本定義,具體如下:

定義將Spring Cloud Edgware.SR4版本作為開發和運行環境。
(5)Maven編譯插件定義,具體如下:

定義使用Spring Boot的Maven插件進行微服務編譯和打包。
(6)微服務公共依賴定義,具體如下:

微服務子模塊的公共依賴定義包括RESTful API開發、熔斷和調用鏈等需要依賴的包,版本號繼承使用Spring Boot和Spring Cloud定義的版本即可,這些公共依賴定義在dependencies內部。
2.4.2 創建微服務模塊
父項目設置完成后,需要創建各個微服務的子模塊,單擊父項目,選擇“File/New”菜單中的“Module”命令,彈出的對話框如圖2-6所示。

圖2-6 創建微服務模塊(一)
單擊“Next”按鈕,設置模塊的GroupId、ArtifactId和Version,如圖2-7所示。

圖2-7 創建微服務模塊(二)
如圖2-7所示,子模塊的GroupId和Version可以繼承父項目。ArtifactId是微服務名稱,一般采用“xxxx-xxxx-xxxx”的三段式命名規則,可以命名為“公司-產品-模塊”。筆者參與的項目沒有命名公司,而是從部門產品系統開始的,如eos-order-verify和eos-system-setting分別表示訂單審核與系統設置微服務。
添加微服務子模塊后,在父項目的pom.xml文件中會添加一個模塊module,具體如下:

2.4.3 微服務代碼結構
框架代碼包括父項目和各子模塊的代碼結構與基本配置,在IDEA中,微服務eos-order-account的代碼目錄結構如圖2-8所示。

圖2-8 微服務eos-order-account的代碼目錄結構
配置文件包括Maven的pom.xml文件和Spring Boot的bootstrap.yml、application-dev.yml、application-prod.yml、application-test.yml。Java代碼包括Spring Boot啟動入口的OrderAccountApplication.java,以及Spring Boot開發的基本源代碼目錄controller、mapper、service等。
下面對各文件和目錄進行詳細介紹。
1.pom.xml文件
該段代碼配置的關鍵是parent配置項,完整配置如下所示:

微服務的Maven配置pom.xml文件,使用parent設置繼承父項目配置,同時設置自己的artifactId。
2.Spring Boot配置文件
微服務使用Spring Boot進行開發,配置文件包括application-dev.yml、application-prod.yml、application-test.yml、bootstrap.yml。其中,application-*.yml是運行在開發、測試和生產環境中的特殊配置,bootstrap.yml是微服務啟動后首先加載的配置文件。
bootstrap.yml配置一般是固定不變的,如微服務名稱、端口等;而application-*.yml配置是隨運行變化而變化的,如數據庫地址、redis地址、第三方接口地址、日志輸出目錄等。
application-dev.yml配置如下(節選):

application-prod.yml配置如下(節選):

bootstrap.yml配置如下:

此處沒有展示application-test.yml配置的內容,從application-dev.yml配置和application-prod.yml配置來看,主要是日志目錄、數據庫地址、redis地址等隨運行環境不同而需要分開配置。
3.微服務入口文件
微服務入口的代碼格式主要包括幾個注解和main()函數,如下所示:

包含main()函數的OrderAccountApplication.java文件就是微服務eos-order-account的入口,引入Spring Boot啟動注解@SpringBootApplication,需要注意的是,注解@EnableCircuitBreaker是熔斷器使用的,后續章節會詳細介紹。
- Intel FPGA/CPLD設計(基礎篇)
- 計算機組裝與系統配置
- Effective STL中文版:50條有效使用STL的經驗(雙色)
- Mastering Delphi Programming:A Complete Reference Guide
- 微服務分布式架構基礎與實戰:基于Spring Boot + Spring Cloud
- 計算機組裝維修與外設配置(高等職業院校教改示范教材·計算機系列)
- 筆記本電腦維修300問
- Arduino BLINK Blueprints
- 超大流量分布式系統架構解決方案:人人都是架構師2.0
- 深入理解序列化與反序列化
- Spring Security 3.x Cookbook
- Building Machine Learning Systems with Python
- Blender 3D By Example
- Arduino項目案例:游戲開發
- 計算機組成技術教程