微服务架构之spring cloud eureka
Spring Cloud Eureka是spring cloud的核心组件,负责服务治理功能,起到中心枢纽作用,其它组件都依赖eureka来获取服务,然后再根据项目需求实现自己的业务,eureka在整个微服务架构中的位置绝对是核心地位。
(一) 版本说明
a) Spring boot 2.0.6.RELEASE
b) Spring cloud Finchley.SR2
c) Java version 1.8
(二) 项目设置
- 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>
- 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
- 主要参数说明
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 每次版本迭代都有配置参数的变更,最好是参考相对应的版本参数说明
(三) 项目运行
- 环境设置
修改/etc/hosts 文件,添加如下设置
127.0.0.1 server1
127.0.0.1 server2
127.0.0.1 server3
- 项目运行
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运行,运行后,可以查看运行效果
- 在浏览器中输入你的主机的IP:端口号,就可以看到eureka服务自理的运行界面如下图所示
a) 可以看到3个服务都在运行,其实你可以访问3个端口的任何一个,都可以看到该效果,同时该界面也显示了一些环境信息,比如有效内存、已经运行的时长 等等。
b) 关于docker镜像生成、docker 私有仓库请翻阅我以前的文章。
这样spring cloud eureka服务自理就介绍完了,如果在开发中遇到问题,也可以留言共同探讨共同进步。