目錄
一、相關文章
二、兼容說明
三、服務注冊
四、服務發現
一、相關文章
-
基礎工程: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;
}