Spring Cloud Eureka 是对 Netflix Eureka 的二次封装,增加了 Spring Boot 风格的自动化配置,只需简单地引入依赖和注解就能提供完整的服务注册和服务发现。
服务中心
服务中心又称注册中心,集中式地管理各个服务的注册和发现。
在服务较多、每个服务又多份部署的的情况下,手动管理服务间的调用关系既麻烦又容易出错,其中一个服务改动,就会牵连好几个服务跟着重启。
在包含服务中心的微服务体系中,每个服务都将自身的信息注册到服务中心,各个服务间的调用都需要通过服务中心来调用,服务间调用关系有服务中心来统一管理。
Eureka
Eureka 采用 C-S 设计架构,Eureka Server 作为服务注册、发现的服务器,系统中其他服务使用 Eureka Client 连接到 Eureka Server 并维持心跳。
Eureka-Server 实践
1.添加 Eureka 服务端依赖
复制代码 org.springframework.cloud spring-cloud-starter-eureka-server
2.使用注解启用 Eureka Server
package com.ulyssesss.eurekaserver;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer@SpringBootApplicationpublic class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); }}复制代码
3.添加 Eureka 相关配置
server.port=8761spring.application.name=eureka-server# 多节点部署时各节点 url 用逗号分隔eureka.client.service-url.defaultZone=http://localhost:8761/eureka/,http://localhost:8762/eureka/# 关闭自我保护# 如 15 分钟内统计的心跳失败比例超过 85%,Eureka 会将所有实例信息保护起来,单机调试很容易出发保护机制# eureka.server.enable-self-preservation=false# 不向注册中间检索服务# eureka.client.fetch-registry=false# 不向注册中心注册自己# eureka.client.register-with-eureka=false复制代码
Eureka-Client 实践
1.添加 eureka 客户端依赖
复制代码 org.springframework.cloud spring-cloud-starter-eureka
2.使用注解启用 Eureka Client
package com.ulyssesss.eurekaclient;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient@SpringBootApplicationpublic class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); }}复制代码
3.添加 Eureka 相关配置
spring.application.name=eureka-clienteureka.client.service-url.defaultZone=http://localhost:8761/eureka/# 服务续约任务调用间隔,默认为30秒# eureka.instance.lease-renewal-interval-in-seconds=20# 服务失效时间,默认为90秒# eureka.instance.lease-expiration-duration-in-seconds=60# 服务获取任务调用间隔,默认为30秒# eureka.client.registry-fetch-interval-seconds=20复制代码
欢迎 Star