spring Cloud服务注册中心eureka
Eureka是什么?
1、Eureka是SpringCloud Netflix的核心子模块。
2、Eureka包含Eureka Server和Eureka Client。
3、Server提供注册服务,存储所有可用服务节点。
4、用于简化Client与Server通讯复杂度。
eureka原理流程图:
Eureka核心特性
一、服务注册(Registry)
(1)Eureka Client在第一次心跳时向Eureka Server注册
(2)注册时会提供诸多自身元数据:主机名、端口、健康指标URL等
二、服务续约(Renew)
(1)Eureka Client通过发送心跳进行续约
(2)默认每30秒发送一次心跳
(3)如果90秒内Eureka Server未收到续约,则进行服务剔除
三、服务下线(Cancel)
(1)Eureka Client优雅退出时会发送cancel命令
(2)Eureka Server收到cancel命令时会删除该节点
Eureka为什么注册慢?
Eureka注册慢的根本原因是在于Eureka要保证AP特性
Eureka client 延迟注册,默认30秒
Eureka server的响应缓存,默认30秒
Eureka server的缓存刷新,默认30秒
最极端最慢是90秒
Eureka的自我保护
Eureka server会自动更新续约更新阀值
Eureka server续约更新频率低于阀值则进入保护模式
自我保护模式下Eureka server不会剔除任何注册信息
eureka环境搭建:
1、pom文件加以下maven依赖包:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> <version>2.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-netflix-eureka-server</artifactId> <version>2.2.2.RELEASE</version> </dependency> </dependencies>
2、配置文件application.yml加以下配置:
server: port: 8761 tomcat: uri-encoding: utf-8 eureka: instance: hostname: localhost # 优先使用IP地址方式进行注册服务 prefer-ip-address: true client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:${server.port}/eureka/ spring: application: name: spring-cloud-eureka
3、EurekaApplication.java文件加注解@EnableEurekaServer
启动项目访问//localhost:8761/
eureka示例项目代码github地址//github.com/yuanzipeng/spring-cloud-eureka