服务治理 Spring Cloud Eureka
1.架构图
2.构建服务注册中心(单点)
1.添加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
2.配置
eureka.environment=beta 指定eureka所在的环境
3.启动
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
2.构建服务注册中心(高可用)
EurekaServer的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成组互相注册的
服务注册中心,以实现服务清单的互相同步,达到高可用的效果。
配置如下
服务注册中心1
server.port=1111
spring.application.name=eureka-server
eureka.client.service-url.defaultZone=http://localhost:1112/eureka/(如果有多个则用逗号隔开)
服务注册中心2
server.port=1112
spring.application.name=eureka-server
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
3.注册服务提供者
1.添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
2. 配置
server.port=9527
spring.application.name=mem-favorite
#只提供服务,不消费服务,则不需要拉取服务中心信息
eureka.client.fetch-registry=false
#每隔多久向服务注册中心续约默认30秒
eureka.instance.lease-renewal-interval-in-seconds=30
#最后续约时间离现在超过多少秒,表示服务失效默认90秒
eureka.instance.lease-expiration-duration-in-seconds=90
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/
3.启动
@SpringBootApplication
@EnableEurekaClient
public class FavoriteBootApplication {
public static void main(String[] args) {
SpringApplication.run(FavoriteBootApplication.class, args);
}
}
4.服务发现与消费
1.添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
2. 配置
server.port=8088
spring.application.name=mem-web
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/
3.启动
@SpringBootApplication
@EnableEurekaClient
public class MemWebBootApplication {
@Bean
@Qualifier("loadBalancedRestTemplate")
@LoadBalanced //开启客户端负载均衡
public RestTemplate loadBalancedRestTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(MemWebBootApplication.class, args);
}
}
4.通过服务名调用服务
String response= restTemplate.getForObject("http://mem-favorite/Favorite/rest/v1/xxxxx",String.class);
5.配置总结
1.服务注册中心
eureka.server.eviction-interval-timer-in-ms=1000 每隔多少毫秒去检测超时没有续约的服务,并剔除默
认90秒。
eureka.server.enable-self-preservation= true运行期间统计心跳失败的比例在15分钟之内低于80%则将
当前的实例注册信息保护起来,让这些实例不会过期。默认是true
2.服务提供者
服务注册
eureka.client.register-with-eureka=true注册到服务中心默认true
服务续约
eureka.instance.lease-renewal-interval-in-seconds=30每隔多少秒请求服务中心进行续约默认30秒
eureka.instance.lease-expiration-duration-in-seconds=90服务过期时间默认90秒
3.服务消费者
获取服务
eureka.client.fetch-registry=true默认true
eureka.client.registry-fetch-interval-seconds=30每隔多少秒请求服务中心的服务列表