Spring Cloud 微服務(三) 服務發現

文章 YAML CPU 技術 安卓網hiapk 2017-05-21

在上一篇文章中我們創建了一個簡單的服務,現在我們想治理我們的服務,首先需要做的是把服務註冊在一個公共的服務上,讓它可以被別的服務發現,本篇主要介紹Eureka服務發現。

項目搭建

我們還是像上一篇一樣用IntelliJ的Spring Initializer創建一個基礎工程,這次選擇的組件是Eureka Server。

Spring Cloud 微服務(三) 服務發現

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服務器頁面。

Spring Cloud 微服務(三) 服務發現

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"已經成功註冊

Spring Cloud 微服務(三) 服務發現

image.png

Client會發送心跳,CPU等運行數據給Eureka Server,所以如果Client掛了很快就會從Eureka Server上消失。

上一篇:Spring Cloud 微服務(二) 創建一個簡單的服務

相關推薦

推薦中...