SpringCloud Eureka
什么是服务治理:
在传统的rpc远程调用框架中,管理每个服务与服务之间的依赖比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系。可以实现远程调用,负载均衡,容错等,实现服务发现与注册
Eureka的工作原理
Eureka包含两个组件:eureka服务端,eureka客户端
eureka客户端提供服务注册服务
1)各个微服务节点通过配置启动后,向eureka服务点进行注册,这时eureka服务点的注册列表中会存储已注册成功的微服务节点信息,可以通过eureka控制页面直观查看
2) eureka客户端通过配置将自身注册到eureka服务端,通过心跳机制定期向eureka服务端发送请求(默认30秒)以保证eureka客户端的可用性,如在规定的时间内,服务端未收到客户端发送的心跳请求,则eureka服务端会认为,eureka客户端以成为不可用的服务阶段,将自动清除该eureka客户端节点信息(移除节点信息时间默认90秒后)
3)eureka客户端可作为两种角色存在:提供者/消费者(单个阶段可同时即使提供者也是消费者)
eureka客户端(提供者):将自身注册到eureka服务端
eureka客户端(消费者):通过ribbon调度指定的eureka提供者以实现微服务节点之间的服务调用
Eureka+Security
禁止安全框架的验证:
链接: Securing The Eureka Server.
Eureka服务配置
#显示ip
eureka.instance.preferIpAddress
Eureka客户端区域配置
eureka可注册在不同区域,例如A区域拥有eureka节点 1 2,B区域拥有节点1.1 2.1,1节点与1.1节点为相同程序,只是部署在不同区域,这种情况下,如果部署在A区域的eureka微服务节点Q想要调用相同区域(A区域)的eureka微服务节点,而非是部署在B区域的eureka微服务节点可通过一下配置来实现:
eureka.instance.metadataMap.zone = zone1
eureka.client.preferSameZoneEureka = true
Eureka客户端刷新功能
默认情况下,eureka客户端开启刷新功能,这意味着客户端可修改配置,当eureka客户端进行刷新时,
将取消注册到eureka服务端,这时该eureka客户端节点不可用。可使用该属性禁止刷新功能:
eureka.client.refresh.enable=false
Eureka配置
1.服务端配置
1)单节点
配置信息:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
2)多节点
配置信息:
---
spring:
profiles: peer1
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: https://peer2/eureka/
---
spring:
profiles: peer2
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: https://peer1/eureka/
2.客户端配置
application.yml
server:
port: ${PORT:8771}
eureka:
client:
#注入的服务地址
#service-url:
#defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-server-01.com:8761/eureka/
#defaultZone: http://${spring.security.user.password}:${spring.security.user.password}@eureka-server-01.com:8761/eureka/,http://${spring.security.user.password}:${spring.security.user.password}@eureka-server-02.com:8762/eureka/
#发现服务
fetch-registry: true
#将自己注入到服务
register-with-eureka: true
enabled: true
healthcheck:
#是否启用健康检查
enabled: true
region: bj
availability-zones:
bj: n1,n2
service-url:
n1: http://${spring.security.user.password}:${spring.security.user.password}@eureka-server-01.com:8761/eureka/
n2: http://${spring.security.user.password}:${spring.security.user.password}@eureka-server-02.com:8762/eureka/
instance:
#修改实例名称
instance-id: ${PROVIDER-SERVER:provider-server-01}
#鼠标放到实例名称上左下角显示ip以及端口
prefer-ip-address: true
#心跳间隔时间,默认是30秒
lease-renewal-interval-in-seconds: 2
#最后一次心跳时间lease-expiration-duration-in-seconds秒就认为是下线了,默认是90秒
lease-expiration-duration-in-seconds: 3
spring:
application:
name: eureka-client-provider
security:
user:
name: admin
password: admin
更多的配置信息和参考:EurekaServerConfigBean,EurekaInstanceConfigBean ,EurekaClientConfigBean