【微服务】服务间常见的几种调用方式
在平时开发中会用到很多种调用接口的方式,今天就来总结一下常用的几种调用方式。
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";