1. 程式人生 > 實用技巧 >Spring Cloud之Eureka註冊中心

Spring Cloud之Eureka註冊中心

在前後端分離架構中,服務層被拆分成了很多的微服務,微服務的資訊如何管理?Spring Cloud中提供服務註冊中 心來管理微服務資訊。

為什麼 要用註冊中心?

1、微服務數量眾多,要進行遠端呼叫就需要知道服務端的ip地址和埠,註冊中心幫助我們管理這些服務的ip和 埠。

2、微服務會實時上報自己的狀態,註冊中心統一管理這些微服務的狀態,將存在問題的服務踢出服務列表,客戶 端獲取到可用的服務進行呼叫。

Spring Cloud Eureka 是對Netflix公司的Eureka的二次封裝,它實現了服務治理的功能,Spring Cloud Eureka提 供服務端與客戶端,服務端即是Eureka服務註冊中心,客戶端完成微服務向Eureka服務的註冊與發現。服務端和 客戶端均採用Java語言編寫。

1、Eureka Server是服務端,負責管理各各微服務結點的資訊和狀態。

2、在微服務上部署Eureka Client程式,遠端訪問Eureka Server將自己註冊在Eureka Server。

3、微服務需要呼叫另一個微服務時從Eureka Server中獲取服務呼叫地址,進行遠端呼叫。

建立Eureka工程

加入依賴

<dependencies>
    <!‐‐ 匯入Eureka服務的依賴 ‐‐>
    <dependency>
    <groupId>org.springframework.cloud</groupId
> <artifactId>spring‐cloud‐starter‐netflix‐eureka‐server</artifactId> </dependency> </dependencies>

啟動類

@EnableEurekaServer//標識這是一個Eureka服務
@SpringBootApplication
public class GovernCenterApplication {
    public static void main(String[] args) {
        SpringApplication.run(GovernCenterApplication.
class, args); } }

在啟動類上新增@EnableEurekaServer註解,來標識此服務為Eureka服務

在application.yml的配置內容如下:

server:
    port: 50101 #服務埠
spring:
    application:
        name: xc‐govern‐center #指定服務名
eureka:
    client:
        registerWithEureka: false #服務註冊,是否將自己註冊到Eureka服務中
        fetchRegistry: false #服務發現,是否從Eureka中獲取註冊資訊
        serviceUrl: #Eureka客戶端與Eureka服務端的互動地址,高可用狀態配置對方的地址,單機狀態配置自己(如果不配置則預設本機8761埠)
          defaultZone: http://localhost:50101/eureka/
    server:
        enable‐self‐preservation: false #是否開啟自我保護模式
        eviction‐interval‐timer‐in‐ms: 60000 #服務登錄檔清理間隔(單位毫秒,預設是60*1000

registerWithEureka:被其它服務呼叫時需向Eureka註冊

fetchRegistry:需要從Eureka中查詢要呼叫的目標服務時需要設定為true

serviceUrl.defaultZone 配置上報Eureka服務地址高可用狀態配置對方的地址,單機狀態配置自己

enable-self-preservation:自保護設定。

eviction-interval-timer-in-ms:清理失效結點的間隔,在這個時間段內如果沒有收到該結點的上報則將結點從服務 列表中剔除。

啟動Eureka Server

啟動Eureka Server,瀏覽50101埠。

  報錯:出現紅色提示資訊: THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.

            意思:自我保護模式被關閉。在網路或其他問題的情況下可能不會保護例項失效。

Eureka Server有一種自我保護模式,當微服務不再向Eureka Server上報狀態,Eureka Server會從服務列表將此 服務刪除,如果出現網路異常情況(微服務正常),此時Eureka server進入自保護模式,不再將微服務從服務列 表刪除。

  在開發階段建議關閉自保護模式。

二、將服務註冊到eureka中

2.1新增依賴:

<!‐‐ 匯入Eureka客戶端的依賴 ‐‐>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring‐cloud‐starter‐netflix‐eureka‐client</artifactId>
</dependency>

2.2在application.yml配置:

eureka:
    client:
        registerWithEureka: true #服務註冊開關
        fetchRegistry: true #服務發現開關
        serviceUrl: #Eureka客戶端與Eureka服務端進行互動的地址,多箇中間用逗號分隔
            defaultZone: ${EUREKA_SERVER:http://localhost:50101/eureka/}
    instance:
        prefer‐ip‐address: true #將自己的ip地址註冊到Eureka服務中
        ip‐address: ${IP_ADDRESS:127.0.0.1}
        instance‐id: ${spring.application.name}:${server.port} #指定例項id
    

2.3在啟動類上添加註解:

在啟動類上添加註解 @EnableDiscoveryClient ,表示它是一個Eureka的客戶端.

完。。。