spring cloud整合Eureka
Server模块的搭建
pom.xml配置
pom.xml文件,这里没有版本号是因为,这里的依赖都继承于父工程的pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
启动类配置
要使用@EnableEurekaServer开启EurekaServer服务
@SpringBootApplication
@EnableEurekaServer
public class EureMain {
public static void main(String[] args) {
SpringApplication.run(EureMain.class,args);
}
}
application.yam配置
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
查看Eureka主页面
使用浏览器打开http://localhost:7001 查看主页面。
client模块的搭建
pom.xml配置
在要注册的微服务模块中的pom.xml添加Eureka-client依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
启动类配置
要使用@EnableEurekaClient开启EurekaClient服务
@SpringBootApplication
@EnableEurekaClient
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class,args);
}
}
application.yam配置
spring:
application:
name: cloud-payment-service
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka
在Eureka中查看注册
进入Eureka的主页,查看服务是否注册成功。
Eureka集群搭建
另一篇博客有写,不重复累赘:Eureka集群搭建
Eureka的保护机制
最近项目在Kubernetes上使用Eureka遇到一些问题,在网站上找到一篇针对Eureka自我保护机制原理的文章,觉得不错,总结如下:
Eureka的自我保护特性主要用于减少在网络分区或者不稳定状况下的不一致性问题
Eureka在运行期间会统计心跳失败的比例,在15分钟内是否低于85%,如果出现了低于的情况,Eureka Server会将当前的实例注册信息保护起来,同时提示一个警告,一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据。也就是不会注销任何微服务。
原文地址:Eureka的自我保护机制 - ericnie - 博客园 (cnblogs.com)
Eureka的自我保护机制默认是开启的。可以通过一些配置进行修改
eureka:
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 2000
Eureka,zookeeper,consul对比
组件名 | 语言 | CAP | 一致性算法 | 服务健康检查 | 对外暴露接口 | Spring Cloud集成 |
---|
Eureka | Java | AP | 无 | 可配支持 | HTTP | 已集成 | Consul | Go | CP | Raft | 支持 | HTTP/DNS | 已集成 | Zookeeper | Java | CP | Paxos | 支持 | 客户端 | 已集成 |
Eureka中自带的Ribbon
在新版的Eureka中自包含了Ribbon,所以在导入spring-cloud-starter-netflix-eureka-client时就自带Ribbon做负载均匀。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
使用
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
|