前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud服务间通信方式

SpringCloud服务间通信方式

作者头像
用户4283147
发布2022-10-27 14:42:07
3660
发布2022-10-27 14:42:07
举报
文章被收录于专栏:对线JAVA面试对线JAVA面试

接下来在整个微服务架构中,我们比较关心的就是服务间的服务改如何调用,有哪些调用方式?

总结:在springcloud中服务间调用方式主要是使用 http restful方式进行服务间调用

1. 1基于RestTemplate的服务调用

在上面的基础上,使用的是consul注册,pom.xml文件

1. 说明

  • spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。

1.2RestTemplate 服务调用

  1. 创建两个服务并注册到consul注册中心中
  • users 代表用户服务 端口为 9999
  • products 代表商品服务 端口为 9998 `注意:这里服务仅仅用来测试,没有实际业务意义

1.3 在商品服务中提供服务方法

1.4在用户服务中使用restTemplate进行调用

1.5启动服务

1.6测试服务调用

  • 浏览器访问用户服务 http://localhost:9999/user/findAll

1.7 总结

  • rest Template是直接基于服务地址调用没有在服务注册中心获取服务,也没有办法完成服务的负载均衡如果需要实现服务的负载均衡需要自己书写服务负载均衡策略。 restTemplate直接调用存在问题
  • 1.直接使用restTemplate方式调用没有经过服务注册中心获取服务地址,代码写死不利于维护,当服务宕机时不能高效剔除
  • 2.调用服务时没有负载均衡需要自己实现负载均衡策略

2. 基于Ribbon的服务调用

2.0说明

  • 官方网址: https://github.com/Netflix/ribbon
  • Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。

再创建一个服务类,和上面的服务类一样,只有端口不同

其他一样

2.1Ribbon 服务调用

默认的轮训策略,也就是当前访问的9998,之后是9997,循环访问

2.2Ribbon负载均衡策略

ribbon负载均衡算法

  • RoundRobinRule 轮训策略 按顺序循环选择 Server
  • RandomRule 随机策略 随机选择 Server
  • AvailabilityFilteringRule 可用过滤策略 `会先过滤由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问
  • WeightedResponseTimeRule 响应时间加权策略 `根据平均响应的时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够会切换到
  • RetryRule 重试策略 `先按照RoundRobinRule的策略获取服务,如果获取失败则在制定时间内进行重试,获取可用的服务。
  • BestAviableRule 最低并发策略 `会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务

2.3修改服务的默认负载均衡策略

2.4Ribbon停止维护

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 对线JAVA面试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 1基于RestTemplate的服务调用
    • 1. 说明
      • 1.2RestTemplate 服务调用
        • 1.3 在商品服务中提供服务方法
          • 1.4在用户服务中使用restTemplate进行调用
            • 1.5启动服务
              • 1.6测试服务调用
                • 1.7 总结
                • 2. 基于Ribbon的服务调用
                  • 2.0说明
                    • 2.1Ribbon 服务调用
                      • 2.2Ribbon负载均衡策略
                        • 2.3修改服务的默认负载均衡策略
                          • 2.4Ribbon停止维护
                          相关产品与服务
                          负载均衡
                          负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档