在上一篇文章中我們創建了一個簡單的服務,現在我們想治理我們的服務,首先需要做的是把服務註冊在一個公共的服務上,讓它可以被別的服務發現,本篇主要介紹Eureka服務發現。
項目搭建
我們還是像上一篇一樣用IntelliJ的Spring Initializer創建一個基礎工程,這次選擇的組件是Eureka Server。
image.png
這樣我們就有了一個入口方法類以及一個配置文件。
image.png
注意這裡配置文件本來是application.properties,我改成了個人更喜歡的application.yml格式,這樣可以用yaml格式來寫配置,好處是比properties文件更能展示配置的層級關係。
服務註冊與發現
打開入口文件,我們需要把這個服務註解成Eureka註冊服務器,所以加上註解@EnableEurekaServer。
@EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
我們還需要配置一下服務器的端口,所以編輯application.yml:
server: port: 8081 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
我們配置了服務器的端口為localhost的8081,通過配置registerWithEureka false和fetchRegistry fase表明這是一個Eureka服務器。這時啟動項目,我們可以打開http://localhost:8081/ 觀察Eureka服務器頁面。
image.png
看到Instances currently registered with Eureka,目前還沒有服務註冊。我們打開上一篇文章創建的項目,準備把它註冊到我們的Eureka服務器作為一個Eureka Client。打開Client項目的配置文件修改:
server: port: 8870 spring: application: name: dummy-service eureka: instance: hostname: localhost port: 8081 client: serviceUrl: defaultZone: http://${eureka.instance.hostname}:${eureka.instance.port}/eureka/
Client端口監聽8870,定義了一個名字叫"dummy-service"來作為服務名稱,然後指定我們的Eureka Server為localhost:8081。然後在代碼加上@EnableDiscoveryClient註解:
@EnableDiscoveryClient @RestController @SpringBootApplication public class Example { @RequestMapping("/") String home { return “Hello World”; } ... }
運行Client
啟動我們的Client項目,它會自動去尋找我們的Eureka Server,並註冊,這時候再刷新我們的http://localhost:8081/ 頁面,就可以看到我們的服務"dummy-service"已經成功註冊
image.png
Client會發送心跳,CPU等運行數據給Eureka Server,所以如果Client掛了很快就會從Eureka Server上消失。
上一篇:Spring Cloud 微服務(二) 創建一個簡單的服務