1. 程式人生 > >微服務架構之spring cloud eureka

微服務架構之spring cloud eureka

pri 進步 ava image ring details second tac 開發環境

  Spring Cloud Eureka是spring cloud的核心組件,負責服務治理功能,起到中心樞紐作用,其它組件都依賴eureka來獲取服務,然後再根據項目需求實現自己的業務,eureka在整個微服務架構中的位置絕對是核心地位。

(一) 版本說明

  a) Spring boot 2.0.6.RELEASE

  b) Spring cloud Finchley.SR2

  c) Java version 1.8

(二) 項目設置

  1. Pom文件

    

<dependency>

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

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

    <version>2.0.2.RELEASE</version>

</dependency>

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

  1. application.yml配置文件

    

spring:

  profiles:

    active: test-1001

  application:

    name: discover-services

eureka:

  datacenter: ctm

  instance:

  environment: dev

  server:

  client:

management:

  endpoints:

    web.exposure.include: "*"

  endpoint:

    health:

      show-details: ALWAYS

---

server:

  port: 1001

eureka:

  server:

    enable-self-preservation: false

    eviction-interval-timer-in-ms: 60000

    renewal-percent-threshold: 0.85

  client:

    service-url:

      defaultZone: http://${eureka.instance.hostname}:1002/eureka/,http://${eureka.instance.hostname}:1003/eureka/

    register-with-eureka: true

    fetch-registry: true

    healthcheck:

      enabled: true

  instance:

    hostname: ${eureka.instance.ip-address}

    prefer-ip-address: true

    ip-address: 192.168.1.129

    lease-renewal-interval-in-seconds: 10

    lease-expiration-duration-in-seconds: 30

    instance-id: ${eureka.instance.ip-address}:${server.port}

spring:

  profiles: test-1001

---

server:

  port: 1002

eureka:

  server:

    enable-self-preservation: false

    eviction-interval-timer-in-ms: 60000

    renewal-percent-threshold: 0.85

  instance:

    hostname: ${eureka.instance.ip-address}

    prefer-ip-address: true

    ip-address: 192.168.1.129

    lease-renewal-interval-in-seconds: 10

    lease-expiration-duration-in-seconds: 30

    instance-id: ${eureka.instance.ip-address}:${server.port}

  client:

    service-url:

      defaultZone: http://${eureka.instance.hostname}:1001/eureka/,http://${eureka.instance.hostname}:1003/eureka/

    register-with-eureka: true

    fetch-registry: true

    healthcheck:

      enabled: true

spring:

  profiles: test-1002

---

server:

  port: 1003

eureka:

  server:

    enable-self-preservation: false

    eviction-interval-timer-in-ms: 60000

    renewal-percent-threshold: 0.85

  instance:

    hostname: ${eureka.instance.ip-address}

    prefer-ip-address: true

    ip-address: 192.168.1.129

    lease-renewal-interval-in-seconds: 10

    lease-expiration-duration-in-seconds: 30

    instance-id: ${eureka.instance.ip-address}:${server.port}

  client:

    service-url:

      defaultZone: http://${eureka.instance.hostname}:1001/eureka/,http://${eureka.instance.hostname}:1002/eureka/

    register-with-eureka: true

    fetch-registry: true

    healthcheck:

      enabled: true

spring:

  profiles: test-1003

  1. 主要參數說明

    a) spring.profiles.active 設置當前使用的配置項,一般多配置場景下使用,這裏為了eureka高可用,設置了3個實例,在運行實例的時候,可以動態設置。

    b) spring.application.name 項目名稱

    c) server.port 運行端口號

    d) eureka.server.enable-self-preservation 是否啟用自我保護功能,該功能默認是啟用,但為了快速的響應服務的上下線,一般在開發環境把自我保護功能禁用

    e) client.client.service-url.defaultZone 服務註冊中心地址,這裏是交叉設置3個服務自理實例

    f) client.instance.lease-renewal-interval-in-seconds 發送心跳的頻率

    g) client.instance.lease-expiration-duration-in-seconds 失效間隔,這個主要是判斷客戶端還活著,一般設置為client.instance.lease-renewal-interval-in-seconds的3倍。

    h) 其它參數說明可以參考官方說明,需要說明的是spring cloud 每次版本叠代都有配置參數的變更,最好是參考相對應的版本參數說明

(三) 項目運行

  1. 環境設置

修改/etc/hosts 文件,添加如下設置

127.0.0.1 server1

127.0.0.1 server2

127.0.0.1 server3

  1. 項目運行

      

sudo docker run --name discoverservice-1001 -d -p 1001:1001 -e ACTIVE=" --eureka.client.service-url.defaultZone=http://server2:1002/eureka/,http://server3:1003/eureka/  --eureka.instance.hostname=server1 --eureka.instance.ip-address=server1 --spring.profiles.active=dev-1001 -Xms128m -Xmx512m" discoverservice/discoverservice

 

sudo docker run --link discoverservice-1001:server1 --name discoverservice-1002 -d -p 1002:1002 -e ACTIVE=" --eureka.client.service-url.defaultZone=http://server1:1001/eureka/,http://server3:1003/eureka/  --eureka.instance.hostname=server2 --eureka.instance.ip-address=server2 --spring.profiles.active=dev-1002 -Xms128m -Xmx512m" discoverservice/discoverservice

 

sudo docker run --link discoverservice-1002:server2 --link discoverservice-1001:server1  --name discoverservice-1003 -d -p 1003:1003 -e ACTIVE=" --eureka.client.service-url.defaultZone=http://server1:1001/eureka/,http://server2:1002/eureka/  --eureka.instance.hostname=server3 --eureka.instance.ip-address=server3 --spring.profiles.active=dev-1003 -Xms128m -Xmx512m" discoverservice/discoverservice

我這裏是docker運行,運行後,可以查看運行效果

   技術分享圖片

  1. 在瀏覽器中輸入你的主機的IP:端口號,就可以看到eureka服務自理的運行界面如下圖所示

   技術分享圖片

  a) 可以看到3個服務都在運行,其實你可以訪問3個端口的任何一個,都可以看到該效果,同時該界面也顯示了一些環境信息,比如有效內存、已經運行的時長 等等。

  b) 關於docker鏡像生成、docker 私有倉庫請翻閱我以前的文章。

  這樣spring cloud eureka服務自理就介紹完了,如果在開發中遇到問題,也可以留言共同探討共同進步。

微服務架構之spring cloud eureka