首页 > Web开发 > 详细

应用间通信方式HTTP和RPC

时间:2018-12-30 23:56:32      阅读:360      评论:0      收藏:0      [点我收藏+]

一、HTTP和RPC

1、Dobbo  RPC框架

2、Sping Cloud 微服务架构下的一站式解决方案。 微服务直接使用的是 Http restful方式

 

二、SpringCloud中服务间两种restful

RestTemplate

Feign

 

三、RestTemplate

RestTemplate 是一款http客户端,RestTemplate和httpclient功能差不多,用法上RestTemplate更简单。

例如订单服务-> (调用) 商品服务

第一种方式:直接使用RestTemplate,url硬编码

在product产品服务中增加接口 msg

技术分享图片

然后在order订单服务中调用

技术分享图片

order服务的端口设置为-Dserver.port=8081

技术分享图片

 

测试:

技术分享图片

缺点:

1、访问方式使用IP硬编码,如果IP换了,就无法访问了。

2、如果product有多个地址,如http://localhost:8080/msg, http://localhost:9080/msg,这样就涉及负载均衡,同样硬编码IP地址会有问题。

 

第二种方式:利用LoadBalancerClient ,通过应用名获得Url,然后在使用restTemplate

@RestController
@Slf4j
public class ClientController {

    @Autowired
    private LoadBalancerClient loadBalancerClient;

    @GetMapping("/getProductMsg")
    public String getProductMsg(){
        //使用RestTemplate
        RestTemplate restTemplate = new RestTemplate();
        //1.第一种方式
       /* String response = restTemplate.getForObject("http://localhost:8080/msg", String.class);*/

       //2、第二种方式
        ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");
        String url =  String.format("http://%s:%s", serviceInstance.getHost(), serviceInstance.getPort()) + "/msg";
        String response = restTemplate.getForObject(url, String.class);
        log.info("url={},response={}",url,response);
        return  response;
    }
}

  

第三种方式 (利用@LoadBalanced,可在restTemplate里使用应用的名字

1、增加RestTemplate的bean,然后增加注解LoadBalanced

技术分享图片

@RestController
@Slf4j
public class ClientController {


    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/getProductMsg")
    public String getProductMsg(){
        //使用RestTemplate

        //3.第三种方式
        String response = restTemplate.getForObject("http://PRODUCT/msg", String.class);
        log.info("response={}",response);
        return  response;
    }
}

  

 

应用间通信方式HTTP和RPC

原文:https://www.cnblogs.com/linlf03/p/10180005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!