服務註冊與發現 | 上手實踐Spring Cloud Eureka 和 Feign(二)

語言: CN / TW / HK

theme: scrolls-light

這是我參與11月更文挑戰的第9天,活動詳情檢視:2021最後一次更文挑戰

上一篇文章《上手實踐Spring Cloud Eureka 和 Feign(一)》講到了服務註冊與發現的簡單概念,這篇文章直接上手實踐Eureka,啟動一個服務註冊中心,以及將業務服務註冊到這個中心上。

二、Eureka

Eureka作為Spring Cloud的服務註冊中心,我們需要引入Spring Cloud相關的依賴,其次我們需要啟動一個Eureka註冊服務中心,最後為了驗證服務註冊的功能,需要啟動一個web 服務註冊到註冊中心。

2.1 Eureka的Spring Cloud 依賴

首先,我們將建立一個新的 Maven pom 專案模組,並將Spring Cloud的的依賴放入,這個依賴將決定Spring Cloud 相關元件Starter的版本。

```maven 2020.0.1

org.springframework.cloud spring-cloud-dependencies ${version.spring-cloud} pom import ``` Spring Cloud 依賴的版本我用的比較新,根據實際工程選擇合適的即可。

2.2 註冊中心

我們新建一個子模組管理Eureka的註冊中心服務,在這裡要引入Eureka的Server依賴包。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> 然後寫一個啟動類Launcher,目的是把服務啟動起來,包含的內容如下。 ```java @SpringBootApplication @EnableEurekaServer public class Launcher {

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

} `application.yml`的配置資訊如下。properties server.port=8761 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false `` 此時啟動服務,瀏覽器上訪問URLhttp://{yourhost}:8761`,如下圖所示,表示服務註冊中心啟動成功,能提供服務註冊和發現的功能。

screenshot-127-0-0-1-8761-1636959093343.png

2.3 服務提供方

在有了服務註冊中心後,我們可以啟動一個服務去註冊到服務註冊中心,這些服務都統統成為Eureka Client,所以要引入Client相關的依賴。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> 我們提供一個簡單的greeting api介面。 ```java public interface GreetingController {

@GetMapping("/greeting")
String greeting();

} 然後在啟動類`Launcher`去實現這個介面。java @SpringBootApplication @RestController public class Launcher implements GreetingController {

@Autowired
@Lazy
private EurekaClient eurekaClient;

@Value("${spring.application.name}")
private String appName;

@Override
public String greeting() {
    return String.format(
        "Hello from '%s'!", eurekaClient.getApplication(appName).getName());
}

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

} `` 配置檔案application.yml`的內容如下。

```yml spring: application: name: spring-cloud-eureka-client

server: port: 0 eureka: client: serviceUrl: defaultZone: ${EUREKA_URI:http://localhost:8761/eureka} instance: preferIpAddress: true ``` 然後啟動這個服務,觀察Eureka的服務管理頁面,可以看到有服務註冊成功。

screenshot-127-0-0-1-8761-1636959488655.png 此時,服務的提供方也準備好了,接下來就需要去消費這個服務了。


少年,沒看夠?點選石頭的主頁,隨便點點看看,說不定有驚喜呢?歡迎支援點贊/關注/評論,有你們的支援是我更文最大的動力,多謝啦!