文章目录
1.简介
Eureka是 Netflix开发的服务发现框架, Springcloud将它集成在自己的子项目spring- cloudlnetflix中,实现 Springcloudp的服务发现功能。 Eureka包含两个组件:Eureka Server和 Eureka Client。
Eureka Server:
提供服务注册服务,各个节点启动后,会在 Eureka Server中进行注册,这样 Eurekaserver中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client:
是一个java客户端,用于简化与 Eureka Server的交互,客户端同时也就别一个内置的、使用轮询( round- robin)负载算法的负载均衡器。在应用启动后,将会向 Eureka Server发送心跳,默认周期为30秒,如果 Eureka Server在多个心跳周期内没有接收到某个节点的心跳, Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
2.Eureka服务端开发 eureka服务搭建官网介绍地址
(1)父工程添加版本控制
注意springCloud版本必须和springboot版本相对应。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<fastjson.version>1.2.51</fastjson.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<springboot.version>2.2.2.RELEASE</springboot.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
(2)创建eureka微服务工程导入eureka微服务依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
(3)yml文件配置
server:
port: 9999
eureka:
register-with-eureka: false #不将自己注册到eureka服务中
fetch-rgister: false #是否从Eureka中获取注册信息
service-url: http://127.0.0.1:${server.port}/eureka/ #Eureka客户端与Eureka服务端进行交互的地址
(4)eurekaServer启动类编写
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
@EnableEurekaServer
public class EurekaServer {
public static void main(String[] args) {
SpringApplication.run(EurekaServer.class);
}
}
3.Eureka客户端开发
(1)添加eureka客户端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(2)yml配置
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:9999/eureka/
instance:
prefer-ip-address: true #可以跨域访问
(3)服务启动类添加注解@EnableEurekaClient
@MapperScan("com.diploma.person.mapper")
@EnableCaching
@EnableEurekaClient
public class PersonApplication {
public static void main(String[] args) {
SpringApplication.run(PersonApplication.class,args);
}
4.eureka如何保证系统可用性、和灵活性等
Eureka Server之间通过复制的方式完成数据的同步, Eureka还提供了客户端缓存机制,即使所有的 Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的APl。综上, Eureka通过心跳检査、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。
5.Eureka的保护模式
Eureka Server在运行期间,会统计心跳失败的比例,在15分钟之内是否低于85%,如果出现低于的情况(在单机调试的时候很容易满足,实际在生产环境上通常是由于网络不稳定导致), Eureka- Server会将当前的实例注册信息保护起来,同时提示这个警告。保扩模式主要用于一组客户端和 Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式, Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。