【微服务】服务间常见的几种调用方式
在平时开发中会用到很多种调用接口的方式,今天就来总结一下常用的几种调用方式。
feign
微服务间可以通过服务名直接调用。以nacos的注册中心为例 1. 在pom.xml文件中添加依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2. 在启动类中添加@EnableFeignClients 3. 在配置文件中配置nacos注册中心地址
spring.cloud.discovery.server-addr=nacos-inter.ali.cn:80
4. body体几种提交方式 包含json、form表单的请求方式。 需要在相应的接口名称上添加注解: @FeignCleint(name=nacos-message-access) 其中name代表服务名称
@FeignCleint(name=nacos-message-access)
public interface FeignService{
//使用json格式请求,包含请求头
@PostMapping(value="/nacos/test",consumes=MediaType.APPLICATION_JSON_VALUE)
String sendNotice(
@RequestHeader("source) String source,
@RequestParam("param") String param);
//使用form表单格式提交的格式请求,包含请求头
@PostMapping(value = "/nacos/urge",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
String sendNotice(
@RequestHeader("source) String source,
@RequestParam("param") String param);
}
}
负载均衡:
其实就是根据负载均衡LoadBalanceClient轮训机制获取到对应的ip和host。
//获取到对应的实例
ServiceInstance serviceInstance=loadBalancerClient.choose("nacos-message-access");
//获取主机ip
String host=serviceInstance.getHost();
//获取端口号
int port=serviceInstance.getPort();
String url=“http://"+host+":"+port+"/nacos/urge";
