【微服务】服务间常见的几种调用方式

在平时开发中会用到很多种调用接口的方式,今天就来总结一下常用的几种调用方式。

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";

restTemplate(待补充)

各种请求方式的比较(待补充)

经验分享 程序员 微信小程序 职场和发展