使用RestTemplate对象实现服务间通信存在问题

在这里插入图片描述

1.现有RestTemplate方式通信存在问题?

    @GetMapping("user")
    public String invokeDemo(){
        log.info("user demo......");
        //1.调用订单服务服务地址: http://localhost:9999/order接收返回值
        RestTemplate restTemplate = new RestTemplate();
        String orderResult = restTemplate.getForObject("http://localhost:9999/order", String.class);
        log.info("调用订单服务成功{}",orderResult);
        return "调用order服务成功,结果为:"+orderResult;
    }

2.现有RestTemplate在进行服务间通信时?

a.调用服务的路径主机和服务端口直接写死在url中无法实现服务集群时请求负载均衡
b.调用服务的请求路径写死在代码中,日后提供服务服务路径发生变化时不利于后续维护工作

3.解决restTempalte鱼载均衡问题?

a.自定义负载均衡解决策略
问题: 1.无法实现服务健康检查2.负载均衡策略过于单—(随机)
b.使用springcloud提供组件ribbon解决负载均衡调用推荐

4.Ribbon springc loud-netflix-ribbon

作用:鱼载均衡客户端组件 就是用来x现请求调用时鱼载均衡

5 .Ribbon鱼载均衡原理

在这里插入图片描述

6 .使用Ribbon+RestTemplate实现请求鱼载均衡

a.使用用户调用订单服务用户服务中引入ribbon依赖
注意:consul client依赖中已经存在ribbon相关依赖无需项目中显示引入

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RestTemplate是Spring Framework提供的一个用于进行HTTP请求的客户端对象。通过RestTemplate可以方便地完成与服务端的交互,包括发送HTTP请求、接收响应等操作。 使用RestTemplate进行服务调用的一般步骤如下: 1. 创建RestTemplate对象:可以通过直接实例化RestTemplate类或者通过依赖注入的方式获取RestTemplate对象。 2. 设置请求参数:可以设置请求的URL、请求方法、请求头、请求体等参数。 3. 发送请求:调用RestTemplate的方法发送HTTP请求,如getForObject()、postForObject()等。 4. 处理响应:根据返回的响应进行相应的处理,如获取响应状态码、获取响应头、获取响应体等。 以下是一个使用RestTemplate进行GET请求的示例代码: ```java RestTemplate restTemplate = new RestTemplate(); String url = "http://example.com/api/resource"; ResponseEntity<String> response = restTemplate.getForEntity(url, String.class); int statusCode = response.getStatusCodeValue(); HttpHeaders headers = response.getHeaders(); String responseBody = response.getBody(); ``` 以上代码中,首先创建了一个RestTemplate对象,然后通过getForEntity()方法发送GET请求,并将响应结果封装到ResponseEntity对象中。最后可以通过ResponseEntity对象获取响应状态码、响应头和响应体等信息。 当然,RestTemplate还支持其他类型的HTTP请求,如POST、PUT、DELETE等,具体使用方法可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值