官术网_书友最值得收藏!

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)父項目定義,具體如下:

img

定義eos-parent父項目的groupId、artifactId和版本號version。

(2)JDK版本定義,具體如下:

img

定義eos-parent父項目及其子模塊都是基于JDK1.8進行編輯和編譯的。

(3)Spring Boot版本定義,具體如下:

img

定義將Spring Boot 1.5.13版本作為開發環境和運行環境。

(4)Spring Cloud版本定義,具體如下:

img

定義將Spring Cloud Edgware.SR4版本作為開發和運行環境。

(5)Maven編譯插件定義,具體如下:

img

定義使用Spring Boot的Maven插件進行微服務編譯和打包。

(6)微服務公共依賴定義,具體如下:

img

微服務子模塊的公共依賴定義包括RESTful API開發、熔斷和調用鏈等需要依賴的包,版本號繼承使用Spring Boot和Spring Cloud定義的版本即可,這些公共依賴定義在dependencies內部。

2.4.2 創建微服務模塊

父項目設置完成后,需要創建各個微服務的子模塊,單擊父項目,選擇“File/New”菜單中的“Module”命令,彈出的對話框如圖2-6所示。

img

圖2-6 創建微服務模塊(一)

單擊“Next”按鈕,設置模塊的GroupId、ArtifactId和Version,如圖2-7所示。

img

圖2-7 創建微服務模塊(二)

如圖2-7所示,子模塊的GroupId和Version可以繼承父項目。ArtifactId是微服務名稱,一般采用“xxxx-xxxx-xxxx”的三段式命名規則,可以命名為“公司-產品-模塊”。筆者參與的項目沒有命名公司,而是從部門產品系統開始的,如eos-order-verify和eos-system-setting分別表示訂單審核與系統設置微服務。

添加微服務子模塊后,在父項目的pom.xml文件中會添加一個模塊module,具體如下:

img

2.4.3 微服務代碼結構

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

img

圖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配置項,完整配置如下所示:

img

微服務的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配置如下(節選):

img

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

img

bootstrap.yml配置如下:

img

此處沒有展示application-test.yml配置的內容,從application-dev.yml配置和application-prod.yml配置來看,主要是日志目錄、數據庫地址、redis地址等隨運行環境不同而需要分開配置。

3.微服務入口文件

微服務入口的代碼格式主要包括幾個注解和main()函數,如下所示:

img

包含main()函數的OrderAccountApplication.java文件就是微服務eos-order-account的入口,引入Spring Boot啟動注解@SpringBootApplication,需要注意的是,注解@EnableCircuitBreaker是熔斷器使用的,后續章節會詳細介紹。

主站蜘蛛池模板: 齐齐哈尔市| 耿马| 炎陵县| 前郭尔| 攀枝花市| 镇赉县| 邻水| 香港| 北辰区| 滨海县| 湖州市| 沅江市| 通山县| 呼伦贝尔市| 太仓市| 镇江市| 灌南县| 浮梁县| 巴林右旗| 商水县| 台安县| 扎鲁特旗| 无为县| 广平县| 沙坪坝区| 泗洪县| 蕲春县| 新化县| 东至县| 隆林| 华蓥市| 奉节县| 陵水| 定日县| 平塘县| 昭平县| 玉山县| 宝清县| 麦盖提县| 临湘市| 闽清县|