springcloud基於springboot2.X項目構建-02

上次說到我已經新建了maven的父工程,加上了Eureka Server,今天我來建立一個Eureka Client的模板實例,在以後的項目中,其實每個服務都是一個Eureka Client,比如網關、用戶服務、或者註冊中心等等,所以今天這個章節是以後各個組件的基礎。


springcloud基於springboot2.X項目構建-02


建立maven項目

我們在父級項目的下面新建一個Module,然後選擇maven,輸入名稱,新建maven項目

idea生成文件後,我們來修改下pom程序


springcloud基於springboot2.X項目構建-02

maven內容-01


springcloud基於springboot2.X項目構建-02

maven內容-02


springcloud基於springboot2.X項目構建-02

maven內容-03

下面我來解釋下引用這幾個文件的意義

spring-cloud-starter-netflix-eureka-client:這是EurekaClient的基礎包,是必須的,這樣本實例才能把心跳數據發送到EurekaServer中,EurekaServer才能做負載均衡和路由分發等功能

spring-boot-starter-web、spring-boot-starter-web-services、fastjson:這個是為了測試本項目,寫了一個接口,返回數據json格式

spring-boot-starter-actuator:這個是actuator監控主程序,在正式的項目中,比如有很多的客戶端,我們使用kill -9 關閉一個服務,但是在Eureka Server中還是存在的,引入這個包,我們才能優雅的關閉實例

配置application.yml


springcloud基於springboot2.X項目構建-02

application.yml


下面我來解釋下

prefer-ip-address: 在集群部署時以IP來區分各個實例,默認是以localhost,因為每一臺機器的默認主機名是localhost,所以集群環境下顯然不行

hostname:配置了上面,這個就可以不用配置了,當然配置了也沒有任何壞處

instance-id:在EurekaServer中status的顯示方式:ip+應用名稱+端口

defaultZone:需要註冊到哪個EurekaServer,如果是集群環境,只要寫一個就可以了,因為集群環境下的EurekaServer可以相互通知,EurekaClient可以相互同步

port和name就不介紹了,很常用

management.endpoints.web.exposure.include: 這個是開放一個可以監控程序的端口,只要配置就可以使用了,使用了3個端口,用的方法是10.12.49.143:7002/actuator/shutdown,需要加上一個actuator,如果不加也可以,有一個base-path配置,默認是/actuator

endpoint.shutdown.enabled: true:開啟優雅關閉系統


設置啟動程序

springcloud基於springboot2.X項目構建-02

Client啟動程序


  1. OK!client已經成功搭建,我們啟動下。。。

用網頁打開兩個EurekaServer,顯示服務已經上線!如果這時我們直接關閉idea,服務並不會馬上消失?那怎麼辦呢?我想要的是如果關閉程序,服務在這個立馬下線!

由於我們剛剛配置了監控程序的優雅關閉功能,只要打開postman,發送一個post請求即可!


springcloud基於springboot2.X項目構建-02

EurekaServer-191

springcloud基於springboot2.X項目構建-02

EurekaServer-190


springcloud基於springboot2.X項目構建-02

優雅關閉系統

發送post請求後,我們看到idea自動關閉了程序,並且在兩個EurekaServer上,服務也已經成功下線!

這才是正確關閉程序的方式!以前都是直接kill的,那種方式很不安全!


後續

既然可以監控每個服務的狀態,那麼以後我想要寫一個管理頁面,把這些服務管理起來,做到上線和下線的監控和操作


分享到:


相關文章: