目录
一、相关文章
二、兼容说明
三、服务注册
四、服务发现
一、相关文章
-
基础工程:gradle7.6.1+springboot3.2.4创建微服务工程-CSDN博客
-
Eureka服务端启动:https://blog.csdn.net/cherishSpring/article/details/149473554
-
Ribbon负载均衡:Ribbon负载均衡-CSDN博客
-
Ribbon和LoadBalancer对比:https://blog.csdn.net/cherishSpring/article/details/149472557
二、兼容说明
-
与SpringBoot3兼容的SpringCloud里的eureka-client依赖不含Ribbon,新增了LoadBalancer。
-
如果想使用Ribbon,需要使用SpringBoot2,兼容版本参照https://blog.csdn.net/cherishSpring/article/details/149472557
-
使用SpringBoot3,即使单独引用了Ribbon也是不生效的。
-
如果是按SpringBoot3.2.4创建的工程,需要将一些配置改为如下:
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 = 11runtimeOnly '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引入版本依赖管理
-
SpringCloud及SpringCloudAlibaba需根据SpringBoot参照[版本对照表]。
-
版本对照表地址:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明。
-
dependencyManagement引入依赖版本管理包,其管理的依赖引入不需要再指定版本。
-
查看管理依赖版本spring-cloud-dependencies:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies/Hoxton.SR12
dependencyManagement { //版本号需根据springboot版本确定imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:Hoxton.SR12" }
}
2、子工程build.gradle引入eureka-client
//eureka-client
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
3、配置application.yml
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
@Bean
@LoadBalanced //添加使用负载均衡注解
RestTemplate restTemplate() { return new RestTemplate();
}
2、服务远程调用
//示例:在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;
}