微服务架构之spring cloud eureka

举报
架构师聊技术 发表于 2019/02/12 23:34:36 2019/02/12
【摘要】 Spring Cloud Eureka是spring cloud的核心组件,负责服务治理功能,起到中心枢纽作用,其它组件都依赖eureka来获取服务,然后再根据项目需求实现自己的业务,eureka在整个微服务架构中的位置绝对是核心地位。 (一) 版本说明a) Spring boot 2.0.6.RELEASEb) Spring cloud Finchl...

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>

2.         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

3.         主要参数说明

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

2.                项目运行

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运行,运行后,可以查看运行效果

                   image.png

3.                在浏览器中输入你的主机的IP:端口号,就可以看到eureka服务自理的运行界面如下图所示

image.png

a)         可以看到3个服务都在运行,其实你可以访问3个端口的任何一个,都可以看到该效果,同时该界面也显示了一些环境信息,比如有效内存、已经运行的时长 等等。

b)        关于docker镜像生成、docker 私有仓库请翻阅我以前的文章。

 

这样spring cloud eureka服务自理就介绍完了,如果在开发中遇到问题,也可以留言共同探讨共同进步。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。