Eureka+Ribbon实现服务注册与发现

目录

一、相关文章

二、兼容说明

三、服务注册

四、服务发现


一、相关文章
二、兼容说明
  • 与SpringBoot3兼容的SpringCloud里的eureka-client依赖不含Ribbon,新增了LoadBalancer。

  • 如果想使用Ribbon,需要使用SpringBoot2,兼容版本参照https://blog.csdn.net/cherishSpring/article/details/149472557

  • 使用SpringBoot3,即使单独引用了Ribbon也是不生效的。

  • 如果是按SpringBoot3.2.4创建的工程,需要将一些配置改为如下:

Groovy 复制代码
plugins {  
	id 'org.springframework.boot' version '2.3.12.RELEASE'  
	id 'io.spring.dependency-management' version '1.0.11.RELEASE' // 引入dependency-management插件  
}

//JDK版本太高可能和SpringBoot不兼容
sourceCompatibility = 11  
targetCompatibility = 11

runtimeOnly 'mysql:mysql-connector-java'

//mybatis  
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.1'

//mybatis-plus  
implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.2'
三、服务注册

1、父工程build.gradle引入版本依赖管理

Groovy 复制代码
dependencyManagement {  
	//版本号需根据springboot版本确定
	imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:Hoxton.SR12" }  
} 

2、子工程build.gradle引入eureka-client

Groovy 复制代码
//eureka-client  
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

3、配置application.yml

Groovy 复制代码
eureka:  
	client:  
		service-url:  
			# 注册中心地址  
			defaultZone: http://127.0.0.1:10086/eureka/  
  
user-service:  
	ribbon:  
		# eureka负载均衡规则  
		NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule  
  
ribbon:  
	eager-load:  
		# 开启饥饿加载,启动时初始化,给首次访问加速  
		enabled: true  
		clients:  
			# 指定饥饿加载的服务名称  
			- user-service

4、参考idea中同服务启动多个-CSDN博客启动两个user-service,在Eureka服务端查看

四、服务发现

1、在OrderApplication类创建RestTemplate

java 复制代码
@Bean  
@LoadBalanced  //添加使用负载均衡注解
RestTemplate restTemplate() {  
	return new RestTemplate();  
}

2、服务远程调用

java 复制代码
//示例:在order服根据用户ID拉取user服用户信息
@Override  
public Order getOrderById(Long orderId) {  
	//获取订单信息  
	Order order = orderMapper.getOrderById(orderId);  
	  
	//根据订单用户ID获取用户信息,通过host:port拼接请求路径
	//String url = "http://localhost:8083/user/" + order.getUserId();  
	
	//eureka方式:通过user-service服务名拼接请求路径
	String url = "http://user-service/user/" + order.getUserId();  
	
	//执行远程调用
	User user = restTemplate.getForObject(url, User.class);  
	order.setUser(user);  
	  
	return order;  
}
相关推荐
code_slave(码畜)1 小时前
微服务架构落地:消息队列架构设计(上篇)——异步解耦、削峰填谷,看懂业务事件流转本质
spring boot·spring cloud·微服务·云原生·架构
code_slave(码畜)5 小时前
微服务架构落地:消息队列架构设计(下篇)——消息堆积、死信治理与集群监控告警实战
spring boot·spring cloud·微服务·云原生·中间件·架构
灯澜忆梦5 小时前
【docker】#2 | 基础命令
docker·容器·eureka
sbjdhjd8 小时前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
蜡笔婧萱20 小时前
Docker介绍及其基础简介(一)
云原生·eureka
sbjdhjd1 天前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
热爱Liunx的丘丘人1 天前
1、什么是K8s
云原生·容器·kubernetes
openFuyao2 天前
新增Agent沙箱调度能力!openFuyao v26.09社区发行版上线,AI原生基础设施能力进一步升级
云原生·ai-native·ai推理·openfuyao·多样化算力集群软件
阿里云云原生2 天前
云效工作项智能优化:先澄清,再开工
云原生