SpringCloud系列之服務注冊發現(Eureka)應用篇


@

前言

大家好,距離上周發布的配置中心基礎使用已過去差不多一周啦,趁着周末繼續完善后續SpringCloud組件的集成,本次代碼基於配置中心代碼的基礎上進行集成。
SpringCloud Config 文章
SpringCloud Config demo01

項目版本

spring-boot-version:2.2.5.RELEASE
spring-cloud.version:Hoxton.SR3

Eureka服務端

首先構建Eureka服務端項目,最近阿里雲開放了自己的項目快速構建平台,那這次就使用下吧。Alibaba initializr 操作基本上和Spirng官方提供的一模一樣。搜索並選擇eureka server即可。
pom主要信息

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

application.properties

# 服務應用名
spring.application.name=eureka-server
# 服務端口
server.port=9003
# 禁止將本服務注冊至eureka
eureka.client.register-with-eureka=false
# 屏蔽注冊信息
eureka.client.fetch-registry=false
# eureka服務地址
eureka.client.serviceUrl.defaultZone=http://localhost:9003/eureka/

EurekaServerApplication.java

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

}

@EnableEurekaServer 申明注解此應用為eureka服務端
項目啟動成功后訪問 http://localhost:9003/,即可看到Eureka服務后台

Eureka客戶端

客戶端代碼基於上篇SpringCloud配置中心(Config)使用說明,文章地址及代碼見本文開頭,這邊主要說明一些調整的地方。
先調整spring-cloud-config-server項目,我們需要將其注冊至Eureka服務上,調整如下
1.pom文件
增加eureka客戶端相關依賴

<!--eureka客戶端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2.application.properties
配置文件增加以下配置項

# eureka服務端地址
eureka.client.serviceUrl.defaultZone=http://localhost:9003/eureka/

3.ConfigServerApplication.java
增加@EnableDiscoveryClient注解標簽

@EnableConfigServer
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigServerApplication

調整完后,我們再啟動Config服務端,這時可以在Eureka服務后台看到config-server已經注冊上了,如下圖。

接着調整spring-cloud-config-client項目
1.pom文件
增加eureka客戶端相關依賴

<!--eureka客戶端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2.bootstrap.properties
將原先直接通過Config服務端地址調整為基於服務發現的配置,調整如下

# 配置服務端請求地址
#spring.cloud.config.uri=http://localhost:9001/
# 開啟服務發現
spring.cloud.config.discovery.enabled=true
# 配置Config服務應用名稱
spring.cloud.config.discovery.service-id=config-server

3.ConfigClientApplication.java
增加@EnableDiscoveryClient注解標簽

@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication

啟動Config客戶端后,即可在Eureka服務后台看到服務已注冊進來。再訪問下Config 客戶端暴露的接口,http://localhost:9002/getEnv,成功獲取到配置信息。

服務訪問

前面是基於SprongCloud Config配置中心集成的Eureka,接下來將介紹下如何使用Eureka中已注冊的服務。
這邊先構建一個System模塊,用於訪問Config client提供的接口服務。
部分pom信息

<!--eureka客戶端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--服務訪問-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

application.properties

# 服務應用名稱
spring.application.name=system-server
# 服務端口
server.port=9004
# eureka服務端地址
eureka.client.serviceUrl.defaultZone=http://localhost:9003/eureka/

SystemServerApplication.java
@EnableFeignClients開啟Feign的支持

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class SystemServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SystemServerApplication.class, args);
    }

}

ConfigService.java
@FeignClient 申明Feign客戶端信息,其中name對應應用服務提供方的應用服務名稱
@GetMapping(path = "/getEnv") 對應應用服務提供方暴露的接口地址

@FeignClient(name = "config-client")
public interface ConfigService {

    @GetMapping(path = "/getEnv")
    String getEnvName();

}

SystemController.java

@RestController
@RequestMapping(value = "/web/system")
public class SystemController {

    @Autowired
    ConfigService configService;

    @RequestMapping(value = "/getEnvName", method = RequestMethod.GET)
    public String getEnvName() {
        return configService.getEnvName();
    }

}

啟動系統服務模塊后,訪問 http://localhost:9004/web/system/getEnvName 即可訪問到信息,如下圖

訪問返回結果和訪問 http://localhost:9002/getEnv 接口返回是一樣的,僅僅只是通過Feign訪問了下 http://localhost:9002/getEnv,內部是基於通過注冊在Eureka上的config-client服務調用得到的結果,內部服務地址 http://config-client/getEnv
項目代碼結構如下

本次示例代碼地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM