微服务架构之spring cloud eureka

  Spring Cloud Eureka是spring cloud的核心组件,负责服务治理功能,起到中心枢纽做用,其它组件都依赖eureka来获取服务,而后再根据项目需求实现本身的业务,eureka在整个微服务架构中的位置绝对是核心地位。web

 

(一)   版本说明spring

  a)         Spring boot   2.0.6.RELEASEdocker

  b)        Spring cloud  Finchley.SR2浏览器

  c)         Java version   1.8架构

 

(二)   项目设置app

  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个实例,在运行实例的时候,能够动态设置。spring-boot

    b)        spring.application.name 项目名称微服务

    c)         server.port     运行端口号fetch

    d)        eureka.server.enable-self-preservation 是否启用自我保护功能,该功能默认是启用,但为了快速的响应服务的上下线,通常在开发环境把自我保护功能禁用url

    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服务自理就介绍完了,若是在开发中遇到问题,也能够留言共同探讨共同进步。