服務的提供者和消費者 服務之間可以通過Spring提供的RestTemplate來進行http請求去請求另一個Springboot的項目,這就叫做服務間的遠程調(diào)用。 當一個服務通過遠程調(diào)用去調(diào)用另一個服務時,被調(diào)用的服務就叫做服務的提供者,調(diào)用服務的服務就叫做服務的消費者。 一個服務可以既是服務的提
服務之間可以通過Spring提供的RestTemplate來進行http請求去請求另一個Springboot的項目,這就叫做服務間的遠程調(diào)用。當一個服務通過遠程調(diào)用去調(diào)用另一個服務時,被調(diào)用的服務就叫做服務的提供者,調(diào)用服務的服務就叫做服務的消費者。一個服務可以既是服務的提供者也是服務的消費者。
服務調(diào)用關系:
遠程調(diào)用的問題
eureka原理
搭建eurekaServer
服務注冊
服務發(fā)現(xiàn)
eureka的作用:
在eureka架構中,微服務角色有兩類:
EurekaServer服務注冊
父工程引入對應版本的springcloud依賴
springboot 3.1.5對應
org.springframework.cloud
spring-cloud-dependencies
2022.0.4
pom
import
引入eureka服務端依賴
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
啟動eureka服務,在啟動類上添加@EnableEurekaServer注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
配置文件中配置服務名稱-地址-服務端口
spring:
application:
name: eureka-server #微服務名稱
server:
port: 10086 #服務端口
eureka:
client:
service-url: #eureka地址信息 eureka自己也是一個微服務,也會被注冊到eureka中 為了做eureka集群
defaultZone: http://127.0.0.1:10086/eureka
eureka服務端自己也會被注冊到eureka服務中
然后就可以訪問http://127.0.0.1:10086進入eureka注冊中心了
確保父工程成功引入cloud依賴后引入eureka服務端依賴
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
在配置文件中配置eureka服務名稱和地址即可
server:
port: 8081
spring:
application:
name: cloud-user
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
引入依賴
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
配置地址
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
給RestTemplate添加上@LoadBalanced注解,實現(xiàn)同一服務多個地址的負載均衡調(diào)用
//RestTemplate spring提供的遠程調(diào)用模塊 允許發(fā)送http請求
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
使用RestTemplate不通過具體的ip地址而是通過服務名稱遠程調(diào)用實現(xiàn)查詢
@Autowired
RestTemplate restTemplate;
@GetMapping("/order/all/{id}")
public ordersUser getAllById(@PathVariable("id") Integer id){
String str1 = "http://cloud-order/order/"+id;
orders od = restTemplate.getForObject(str1, orders.class);
String str = "http://cloud-user/user/"+od.getOrderuserid();
user forObject = restTemplate.getForObject(str, user.class);
ordersUser ordersUser = new ordersUser();
ordersUser.setOrderid(od.getOrderid());
ordersUser.setUser(forObject);
ordersUser.setOrdername(od.getOrdername());
ordersUser.setOrderaddress(od.getOrderaddress());
ordersUser.setOrderprice(od.getOrderprice());
ordersUser.setOrdernumber(od.getOrdernumber());
return ordersUser;
}
小編推薦閱讀
本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)