服務治理 Spring Cloud Eureka

1.架構圖



1.ServiceProvider(服務提供者)會向EurekaServerRegister(服務註冊)、Renew(服務續約)、Cancel(服務下線)等操作。

2.EurekaServer之間會做註冊服務的同步,從而保證狀態一致,EurekaServer啓動固定頻率任務(默認60秒)檢查租約是否到期(租約默認90秒)

3.ServiceConsumer(服務消費者)會向EurekaServer請求服務列表

2.構建服務註冊中心(單點)


1.添加依賴:


<dependency>

  <groupId>org.springframework.cloud</groupId>

  <artifactId>spring-cloud-starter-eureka-server</artifactId>

</dependency>


2.配置


•server.port=1112
•spring.application.name=eureka-server
•eureka.client.fetch-registry=false(不需要從服務中心抓取註冊信息)
•eureka.client.register-with-eureka=false(不需要把自己註冊到服務中心)
•eureka.client.service-url.defaultZone=http://localhost:1112/eureka/
•eureka.server.enable-self-preservation=false
•#每隔多少毫秒檢查服務租約是否過期(默認60秒)如果過期則剔除服務
•eureka.server.eviction-interval-timer-in-ms=1000
eureka.environment=beta 指定eureka所在的環境

3.啓動

@SpringBootApplication

@EnableEurekaServer

public class EurekaServerApplication {

  public static void main(String[] args) {

  SpringApplication.run(EurekaServerApplication.class, args);

  }

}

訪問http://localhost:1112


2.構建服務註冊中心(高可用)

         EurekaServer的高可用實際上就是將自己作爲服務向其他服務註冊中心註冊自己,這樣就可以形成互相註冊的

服務注冊中心,以實現服務清單的互相同步,達到高可用的效果

配置如下


服務註冊中心

server.port=1111

spring.application.name=eureka-server 

eureka.client.service-url.defaultZone=http://localhost:1112/eureka/(如果有多個則用逗號隔開)

服務註冊中心2

server.port=1112

spring.application.name=eureka-server 

eureka.client.service-url.defaultZone=http://localhost:1111/eureka/

3.註冊服務提供者

1.添加依賴

 <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-eureka</artifactId>

</dependency>

2. 配置

server.port=9527

spring.application.name=mem-favorite

#只提供服務,不消費服務,則不需要拉取服務中心信息

eureka.client.fetch-registry=false

#每隔多久向服務註冊中心續約默認30

eureka.instance.lease-renewal-interval-in-seconds=30

#最後續約時間離現在超過多少秒,表示服務失效默認90

eureka.instance.lease-expiration-duration-in-seconds=90

eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/


3.啓動


@SpringBootApplication

@EnableEurekaClient

public class FavoriteBootApplication {

    public static void main(String[] args) {

        SpringApplication.run(FavoriteBootApplication.class, args);

    }

}

4.服務發現與消費

1.添加依賴

<dependency>

    <groupId>org.springframework.cloud</groupId>

   <artifactId>spring-cloud-starter-eureka</artifactId>

</dependency>

<dependency>

     <groupId>org.springframework.cloud</groupId>

     <artifactId>spring-cloud-starter-ribbon</artifactId>

</dependency>

2. 配置

server.port=8088

spring.application.name=mem-web

eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/

3.啓動

@SpringBootApplication

@EnableEurekaClient

 public class MemWebBootApplication {

    @Bean

    @Qualifier("loadBalancedRestTemplate")

    @LoadBalanced //開啓客戶端負載均衡

    public RestTemplate loadBalancedRestTemplate() {

      return new RestTemplate();

    }

    public static void main(String[] args) {

        SpringApplication.run(MemWebBootApplication.class, args);

    }

}

4.通過服務名調用服務

String response= restTemplate.getForObject("http://mem-favorite/Favorite/rest/v1/xxxxx",String.class);

5.配置總結

1.服務註冊中心


eureka.server.eviction-interval-timer-in-ms=1000 每隔多少毫秒去檢測超時沒有續約的服務,並剔除默

90秒。


eureka.server.enable-self-preservation= true運行期間統計心跳失敗的比例在15分鐘之內低於80%則將

當前的實例註冊信息保護起來,讓這些實例不會過期。默認是true


2.服務提供者


服務註冊

eureka.client.register-with-eureka=true註冊到服務中心默認true


服務續

eureka.instance.lease-renewal-interval-in-seconds=30每隔多少秒請求服務中心進行續約默認30

eureka.instance.lease-expiration-duration-in-seconds=90服務過期時間默認90


3.服務消費者

獲取服務

eureka.client.fetch-registry=true默認true

eureka.client.registry-fetch-interval-seconds=30每隔多少秒請求服務中心的服務列表




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章