我们在微服务架构中使用客户端负载均衡调用非常简单,只需要如下两步:
1、服务提供者只需要启动多个服务实例并注册到以供注册中心或多个相关联的服务中心。
2、服务消费者直接通过调用@LoadBalanced注解修饰过的RestTemplate来实现面向服务的接口调用。
RestTemplate详解:
GET请求:
在RestTemplate中,对GET请求可以通过如下两个方法实现。
第一种:getForEntity函数。该方法返回的是RResponseEntity,该对象是spring对HTTP请求相应的封装,其中主要存储HTTP的几个重要元素,比如HttpStatus(404、500),HTTP请求头等。
getForEntity(String url,Class responseType,Object... urlVariables);
getForEntity(String url,Class responseType,Map urlVariables);
getForEntity(URI url,Class responseType);
第二种:
getForObject函数。该方法可以理解为对getForEntity的进一步封装,它通过HttoMessageConverterExtractor对HTTP的请求响应体body内容进行对象转换,实现请求直接返回包装好的对象内容。
getForObject(String url,Class responseType,Object... urlVariables);
getForObject(String url,Class responseType,Map urlVariables);
getForObject(URI url,Class responseType);
POST请求:
postForEntity函数。
postForEntity(String url,Object request,Class responseType,Object... urlVariables);
postForEntity(String url,Object request,Class responseType,Map urlVariables);
postForEntity(URI url,Object request,Class responseType);
postForObject函数。
postForObject(String url,Object request,Class responseType,Object... urlVariables);
postForObject(String url,Object request,Class responseType,Map urlVariables);
postForObject(URI url,Object request,Class responseType);
postForLocation:以POST请求提交资源,返回新资源的URI。
postForLocation(String url,Object request,Object... urlVariables);
postForLocation(String url,Object request,Map urlVariables);
postForLocation(URI url,Object request);
PUT请求
put(String url,Object request,Object... urlVariables);
put(String url,Object request,Map urlVariables);
put(URI url,Object request);
PUT无返回值。
DELETE请求
delete(String url,Object request,Object... urlVariables);
delete(String url,Object request,Map urlVariables);
delete(URI url,Object request);
delete无返回值。