赞
踩
Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分, 它基于 Netflix Eureka 做了二次封装, 主要负责完成微服务架构中的服务治理功能。 Spring Cloud 通过为Eureka 增加了 Spring Boot 风格的自动化配置,我们只需通过简单引入依赖和注解配置就能让 Spring Boot构建的微服务应用轻松地与 Eureka 服务治理体系进行整合。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
server.port=8088
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
必须配置
eureka.instance.hostname
否则Eureka会尝试自我注册
@SpringBootApplication
@EnableEurekaServer
public class EurekaSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaSpringBootApplication.class,args);
}
}
配置 | 说明 | 默认 |
---|---|---|
eureka.server.enable-self-preservation | Eureka自我保护机制 | true |
eureka.server.eviction-interval-timer-in-ms Eureka | 剔除故障节点时间间隔 | 60秒 |
eureka.server.renewal-percent-threshold | Eureka租约计算阈值 | 0.85 |
eureka.client.register-with-eureka | 是否注册到Eureka上 | true |
eureka.client.fetch-registry | 是否从Eureka上更新列表信息 | true |
eureka.instance.hostname | Eureka微服务实例的主机名 | 无 |
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
spring.application.name=USER-SERVICE
eureka.instance.instance-id=001
eureka.instance.prefer-ip-address=true
eureka.instance.lease-expiration-duration-in-seconds=20
eureka.instance.lease-renewal-interval-in-seconds=10
eureka.client.register-with-eureka=true
eureka.client.healthcheck.enabled=true
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://localhost:8088/eureka/
运行项目实现服务的注册
Eureka中默认集成了Ribbon插件,因此只需导入
spring-cloud-starter-netflix-eureka-client
即可。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
eureka.client.fetch-registry=true
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://localhost:8088/eureka/
@SpringBootApplication
public class EurekaSpringBootConsumer {
public static void main(String[] args) {
SpringApplication.run(EurekaSpringBootConsumer.class,args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
@SpringBootTest(classes = EurekaSpringBootConsumer.class)
@RunWith(SpringRunner.class)
public class RestTemplateTests {
@Autowired
private RestTemplate restTemplate;
@Test
public void testQueryUserById(){
String url="http://USER-SERVICE/manager/user/8";
User user = restTemplate.getForObject(url, User.class);
System.out.println(user);
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
spring.security.user.name=mask
spring.security.user.password=111111
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable(); // 关闭csrf,否则其他主机无法登陆认证
http.authorizeRequests().anyRequest().authenticated().and().httpBasic();//设置成httpBasic,不可以设置为表单
}
}
eureka.client.service-url.defaultZone=http://mask:111111@localhost:8088/eureka/
server.port=6666 ## 指定当前注册中心的服务名称 spring.application.name=eurekaregistry ## 启用注册中心主动失效,并且每次主动失效检测间隔为5s 默认值60s eureka.server.eviction-interval-timer-in-ms= 5000 ## 设置eureka注册中心的响应更新时间 eureka.server.responseCacheUpdateIntervalMs=3000 eureka.server.responseCacheAutoExpirationInSeconds=60 ## 配置注册中心的主机名 eureka.instance.instance-id = eureka-1 eureka.instance.hostname = CentOSA ## 服务刷新时间配置,每隔这个时间会主动心跳一次 eureka.instance.lease-renewal-interval-in-seconds= 5 ## 服务提供者被认定为丢失心跳超时,失效多久后被删除 eureka.instance.lease-expiration-duration-in-seconds=15 ## 配置定时获取|抓取注册中心的数据时间 eureka.client.registry-fetch-interval-seconds= 5 eureka.client.instance-info-replication-interval-seconds= 5 ## 配置集群中其他eureka实例,用于本eureka实例的注册方。 eureka.client.region=beijing eureka.client.availability-zones.beijing=zone-2,zone-3 eureka.client.service-url.zone-2=http://mask:111111@CentOSB:1111/eureka/ eureka.client.service-url.zone-3=http://mask:111111@CentOSC:1111/eureka/ spring.security.user.name=mask spring.security.user.password=111111
server.port=6666 ## 指定当前注册中心的服务名称 spring.application.name=eurekaregistry ## 启用注册中心主动失效,并且每次主动失效检测间隔为5s 默认值60s eureka.server.eviction-interval-timer-in-ms= 5000 ## 设置eureka注册中心的响应更新时间 eureka.server.responseCacheUpdateIntervalMs=3000 eureka.server.responseCacheAutoExpirationInSeconds=60 ## 配置注册中心的主机名 eureka.instance.instance-id = eureka-2 eureka.instance.hostname = CentOSB ## 服务刷新时间配置,每隔这个时间会主动心跳一次 eureka.instance.lease-renewal-interval-in-seconds= 5 ## 服务提供者被认定为丢失心跳超时,失效多久后被删除 eureka.instance.lease-expiration-duration-in-seconds=15 ## 配置定时获取|抓取注册中心的数据时间 eureka.client.registry-fetch-interval-seconds= 5 eureka.client.instance-info-replication-interval-seconds= 5 ## 配置集群中其他eureka实例,用于本eureka实例的注册方。 eureka.client.region=beijing eureka.client.availability-zones.beijing=zone-1,zone-3 eureka.client.service-url.zone-1=http://mask:111111@CentOSA:1111/eureka/ eureka.client.service-url.zone-3=http://mask:111111@CentOSC:1111/eureka/ spring.security.user.name=mask spring.security.user.password=111111
server.port=6666 ## 指定当前注册中心的服务名称 spring.application.name=eurekaregistry ## 启用注册中心主动失效,并且每次主动失效检测间隔为5s 默认值60s eureka.server.eviction-interval-timer-in-ms= 5000 ## 设置eureka注册中心的响应更新时间 eureka.server.responseCacheUpdateIntervalMs=3000 eureka.server.responseCacheAutoExpirationInSeconds=60 ## 配置注册中心的主机名 eureka.instance.instance-id = eureka-3 eureka.instance.hostname = CentOSC ## 服务刷新时间配置,每隔这个时间会主动心跳一次 eureka.instance.lease-renewal-interval-in-seconds= 5 ## 服务提供者被认定为丢失心跳超时,失效多久后被删除 eureka.instance.lease-expiration-duration-in-seconds=15 ## 配置定时获取|抓取注册中心的数据时间 eureka.client.registry-fetch-interval-seconds= 5 eureka.client.instance-info-replication-interval-seconds= 5 ## 配置集群中其他eureka实例,用于本eureka实例的注册方。 eureka.client.region=beijing eureka.client.availability-zones.beijing=zone-1,zone-2 eureka.client.service-url.zone-1=http://mask:111111@CentOSA:1111/eureka/ eureka.client.service-url.zone-2=http://mask:111111@CentOSB:1111/eureka/ spring.security.user.name=mask spring.security.user.password=111111
注:三台机器需关闭防火墙并互相做主机名与IP映射
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。