1、Eureka集群原理
2、Eureka集群搭建
2.1、Eureka服务端集群搭建
2.1.1、服务端代码结构
2.1.2、服务端POM文件
2.1.3、 配置文件yaml
2.1.4、配置主启动类
2.1.5、重复上述过程新建其他Eureka服务端
2.1.6、 测试
2.2、Eureka 客户端-服务提供者集群搭建
2.2.1、创建多个微服务实例
2.2.2、在微服务实例中进行Eureka客户端配置
2.2.3、在单机客户端基础上,修改客户端yaml配置
2.2.4、测试
2.3、Eureka 客户端-服务提供者集群搭建
2.3.1、服务消费者 Controller 中访问url修改
2.3.2、 yaml配置文件修改
2.3.3、赋予restTemplate负载均衡机制
2.3.4、测试
3、微服务信息完善
3.1、规范化实例ID
3.1.1、修改yaml配置文件,添加微服务实例ID
3.1.2、访问Eureka服务端查看修改结果
3.2、显示微服务IP地址
3.2.1、修改yaml配置文件,添加地址显示
3.2.2、访问Eureka服务端查看修改结果
原理概括:互相注册,相互守望
1、Eureka集群原理- Eureka Server 之间通过 Replicate 进行数据同步
- 不同的 Eureka Server 之间不区分主从节点,所有节点都是平等的
- 节点之间,通过置顶 serviceUrl 来相互注册,形成一个集群,进而提高节点的可用性
- 在集群中,如果某个节点宕机,Eureka Client 会自动切换到新的 Eureka Server 上。
- 每个 Eureka Server 节点,都会互相同步数据
Cloud-eureka-server7001和Cloud-eureka-server7002均为服务端
2.1.2、服务端POM文件加入spring-cloud-starter-netflix-eureka-server
cloud
com.uclass.springcloud
1.0-SNAPSHOT
4.0.0
Cloud-eureka-server7002
11
11
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
com.uclass.springcloud
Api-Commons
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
2.1.3、 配置文件yaml
- 声明服务端实例名称
- 声明其他Eureka server-url,以形成集群
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com #eureka服务端实例名称
client:
#false表示不向注册中心注册自己
register-with-eureka: false
#false表示自己就是注册中心,职责是维护服务实例,不需要检索服务
fetchRegistry: false
service-url:
#设置与Eureka Server交互的地址查询服务和注册服务的依赖地址
defaultZone: http://eureka7001.com:7001/eureka/
2.1.4、配置主启动类
加入 @EnableEurekaServer 注解,声明是Eureka服务端
@SpringBootApplication
//表名该服务是Eureka服务注册中心
@EnableEurekaServer
public class EurekaMain7002 {
public static void main(String[] args) {
SpringApplication.run(EurekaMain7002.class, args);
}
}
2.1.5、重复上述过程新建其他Eureka服务端
2.1.6、 测试
打开对应的服务端url,如下所示即为配置集群成功
此处url通过 C:\Windows\System32\drivers\etc\hosts文件 添加 127.0.0.1 eureka7001.com
2.2、Eureka 客户端-服务提供者集群搭建 2.2.1、创建多个微服务实例 2.2.2、在微服务实例中进行Eureka客户端配置详情参考Eureka基础 Eureka基础_我的眼里只有学习的博客-CSDN博客
2.2.3、在单机客户端基础上,修改客户端yaml配置添加多个 service-url:defaultZone
eureka:
client:
#表示将自己注册进EurekaServer默认为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,
#集群必须设置为true,才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
# defaultZone: http://localhost:7001/eureka #单机版
defaultZone: http://eureka7001.com:7001/eureka, http://eureka7002.com:7002/eureka #集群版
2.2.4、测试
- 访问 Eureka 服务端,显示多个已注册实例
- 此处创建了两个相同的服务生产者
服务消费者创建参考 Eureka基础_我的眼里只有学习的博客-CSDN博客
2.3.1、服务消费者 Controller 中访问url修改在单机版基础上,首先修改服务提供者访问路径:http://服务提供者的微服务名称
@Slf4j
@RestController
public class OrderController {
//单机版可以写死,访问的url
// public static final String PAYMENT_URL = "http://localhost:8001";
//联机版,寻找Eureka暴露的微服务名称
public static final String PAYMENT_URL = "http://cloud-payment-service";
@Resource
private RestTemplate restTemplate;
//添加用户信息
@GetMapping("/consumer/payment/create")
public CommonResult create(Payment payment) {
return restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, CommonResult.class);
}
//获取用户信息
@GetMapping("/consumer/payment/get/{id}")
public CommonResult getPayment(@PathVariable("id") Long id) {
return restTemplate.getForObject(PAYMENT_URL + "/payment/get/" + id, CommonResult.class);
}
}
2.3.2、 yaml配置文件修改
添加多个Eureka服务端 url
server:
port: 80
eureka:
client:
#表示将自己注册进EurekaServer默认为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,
#集群必须设置为true,才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka, http://eureka7002.com:7002/eureka
spring:
application:
name: cloud-order-service #微服务名称
2.3.3、赋予restTemplate负载均衡机制
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced //赋予restTemplate负载均衡机制
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
如果不赋予restTemplate负载均衡机制,访问出错:
2.3.4、测试 3、微服务信息完善 3.1、规范化实例ID 3.1.1、修改yaml配置文件,添加微服务实例ID instance:
# 主机名称的规范和修改
instance-id: payment8001
完整版:
eureka:
client:
#表示将自己注册进EurekaServer默认为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,
#集群必须设置为true,才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
# defaultZone: http://localhost:7001/eureka #单机版
defaultZone: http://eureka7001.com:7001/eureka, http://eureka7002.com:7002/eureka #集群版
instance:
# 主机名称的规范和修改
instance-id: payment8001
3.1.2、访问Eureka服务端查看修改结果
3.2、显示微服务IP地址
3.2.1、修改yaml配置文件,添加地址显示
# 访问路径可以显示IP
prefer-ip-address: true
完整版:
eureka:
client:
#表示将自己注册进EurekaServer默认为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,
#集群必须设置为true,才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
# defaultZone: http://localhost:7001/eureka #单机版
defaultZone: http://eureka7001.com:7001/eureka, http://eureka7002.com:7002/eureka #集群版
instance:
# 主机名称的规范和修改
instance-id: payment8001
# 访问路径可以显示IP
prefer-ip-address: true
3.2.2、访问Eureka服务端查看修改结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)