SpringCloud-Eureka(二)客户端服务端配置

来源:互联网 发布:网络翻唱歌曲排行榜 编辑:程序博客网 时间:2024/06/06 03:42

客户端常用配置,均以eureka.client为前缀:

参数名 说明 默认值 enabled 启用Eureka客户端 true registryFetchIntervalSeconds 从Eureka服务端获取注册信息的间隔时间,单位为秒 30 instanceInfoReplicationIntervalSeconds 更新实例信息的变化到Eureka服务端的间隔时间,单位为秒 30 initialInstanceInfoReplicationIntervalSeconds 初始化实例信息到Eureka服务端的间隔时间,单位为秒 40 eurekaServiceUrlPollIntervalSeconds 轮询Eureka服务端地址更改的间隔时间,单位为秒。当我们与Spring CLoud Config整合,动态刷新Eureka的serviceURL地址时需要关注该参数 300 eurekaServerReadTimeoutSeconds 读取Eureka Server信息的超时时间,单位为秒 8 eurekaServerConnectTimeoutSeconds 链接Eureka Server的超时时间,单位为秒 5 eurekaServerTotalConnections 从Eureka客户端到所有Eureka服务端的连接总数 200 eurekaServerTotalConnectionsPerHost 从Eureka客户端到每个Eureka服务端主机的连接总数 50 eurekaConnectionIdleTimeoutSeconds Eureka服务端连接的空闲关闭时间,单位为秒 30 heartbeatExecutorThreadPoolSize 心跳连接池的初始化线程数 2 heartbeatExecutorExponentialBackOffBound 心跳超时重试延迟时间的最大乘数值 10 cacheRefreshExecutorThreadPoolSize 缓存刷新线程池的初始化线程数 2 cacheRefreshExecutorExponentialBackOffBound 缓存刷新重试延迟时间的最大乘数值 10 useDnsForFetchingServiceUrls 使用DNS来获取Eureka服务端的serviceUrl false registerWithEureka 是否要将自身的实例信息注册到Eureka服务端 true preferSameZoneEureka 是否偏好使用处于相同Zone的Eureka服务端 true filterOnlyUpInstances 获取实例时是否过滤,仅保留UP状态的实例 true fetchRegistry 是否从Eureka服务端获取注册信息 true serviceUrl 指定注册中心 http://:@localhost:1111/eureka

服务端常用配置,均以eureka.instance为前缀:

可以通过查看org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean的源码来获取详细内容

实例名配置:

即InstanceInfo中的instanceId参数,它是区分同一服务中不同实例的唯一标识。在Netflix Eureka的原生实现中,实例名采用主机名作为默认值,这样会使得在同一 主机上无法启动多个相同的服务实例。所以,在Spring Cloud Eureka的配置中,针对统一主机中启动多实例的情况,对实例名的默认命名作了更为合理的扩展,它采用了如下默认规则:    ${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}}对于实例名的命名规则,我们也可以通过eureka.instance.instanceId参数来进行配。如:  eureka.instance.instanceId=${spring.application.name}:${random.int}通过上面的配置,利用应用名加随机数的方式来区分不同的实例,从而实现在统一主机上,不指定端口就能轻松启动多个实例的效果。

端点配置:

homePageUrl:应用主页的URLstatusPageUrl:状态页的URLhealthCheckUrl:健康检查的URL 其中,状态页和健康检查的URL在Spring Cloud Eureka中默认使用了spring-boot-actuator模块提供的/info端点和/health端点。并且这些端点起着很重要的作用为了服务的正常运作,我们必须确保Eureka客户端的/health端点在发送元数据的时候,是一个能被注册中心访问到的地址,否则服务注册中心不会根据应用的健康检查来更改状态(仅当开启了healthcheck功能时,以该端点信息作为健康检查标准)。而/info端点如果不正确的话,会导致在Eureka面板中单机服务实例时,无法访问到服务实例提供的信息接口。 大多数情况下,我们并不需要修改这几个URL配置。

健康检测:

默认情况下,Spring CLoud Eureka中各个服务实例的健康检测并不是通过spring-boot-actuator模块的/health端点来实现的,而是依靠客户端心跳的方式来保持服务实例的存活。因此,默认的心跳方式作为健康检测并不保险。因为不能检测服务是否能有效提供服务。 在Spring Cloud Eureka中,我们可以通过简单的配置,把Eureka客户端的健康检测交给spring-boot-actuator模块的/health端点,以实现更加全面的健康状态维护。 详细步骤如下:在pom.xml中引入spring-boot-starter-actuator模块的依赖 

xml

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 

在application.properties中增加参数配置 :

eureka.client.healthcheck.enabled=true
参数名 说明 默认值 preferIpAddress 是否优先使用IP地址作为主机名的标识 false leaseRenewalIntervalInSeconds Eureka客户端向服务端发送心跳的时间间隔,单位为秒 30 leaseExpirationDurationInSeconds Eureka 服务端在收到最后一次心跳之后等待的时间上限,单位为秒。超过该时间之后服务端会将该服务实例从服务清单中剔除,从而禁止服务调用请求被发送到该实例上 90 nonSecurePort 非安全的通信端口号 80 securePort 安全的通信端口号 443 nonSecurePortEnabled 是否启用非安全的通信端口号 true securePortEnabled 是否启用安全的通信端口号 appname 服务名,默认取spring.application.name的配置值,如果没有则为unknown hostname 主机名,不配置的时候讲根据操作系统的主机名来获取

Eureka增加安全验证:

添加依赖:        <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-security</artifactId>        </dependency>配置:security:    user:      name: a      password: beureka:  server:      enable-self-preservation:   false      eviction-interval-timer-in-ms: 5000  client:      serviceUrl:           defaultZone: http://${security.user.name}:${security.user.password}@localhost:1111/eureka/**注意点:**    用户名密码的配置,要在defaultZone配置之前,因为yml是按照顺序读取配置的

有不准确,或者有疑问的地方朋友,可以加群,也可以在评论中指出,谢谢大家

Java交流群:313145288

原创粉丝点击