通信方式
SpringCloud微服務之間的通信有2種。
- RestRestTemplate
- Feign
RestRestTemplate
分爲3種:
第一種:直接方式
//1.直接方式
RestTemplate template = new RestTemplate();
//第二個參數爲返回值
String msg = template.getForObject("http://localhost:8080/msg", String.class);
缺點:需要手動寫ip地址和端口號
第二種:使用loadBalancerClient獲取端口號和ip
@Autowired
private LoadBalancerClient loadBalancerClient;
RestTemplate template = new RestTemplate();
ServiceInstance product = loadBalancerClient.choose("PRODUCT");
String url = String.format("http://%s:%s/msg",product.getHost(),product.getPort());
String msg = template.getForObject(url, String.class);
第三種:使用配置,以註解的方式進行服務間的調用
- 配置文件
@Component
public class LoadConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
- 注入:
@Autowired
private RestTemplate restTemplate;
//第三種方式,通過配置文件的方式
String msg = restTemplate.getForObject("http://PRODUCT/msg", String.class);
return msg;
第三種方式更加的簡單
當多臺服務器啓動的時候,可能會產生負載均衡
的問題。
好的愛情是你通過一個人看到整個世界,壞的愛情是爲了一個人而捨棄世界。