为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第19天 SpringCloud微服务学习

标签:
Java

课程名称:SpringCloud  Finchley三版本微服务实战

课程章节:

第5章 应用通信

主讲老师:廖师兄

课程内容:

   HTTP、RPC,服务之间的负载均衡调用

课程收获:

1、SpringCloud中服务间的两种restful调用方式:

(1).RestTemplate

(2).Feign

https://img1.sycdn.imooc.com/632d0a4b0001c86815660867.jpg


2、SpringCLoud服务中的三种通信方式

1、RestTemplate

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。

restTemplate.getForObject(要访问的URL, 用于接受结果的类型.class, 入参)

入参可以使用Map的形式,也可以以可变参数的形式,

定义:

可变参数:

String result = template.getForObject( "url/{count}/{page}", String.class, "5", "1"); 

//restTemplate会对参数进行URI编码


第一种方式(直接使用RestTemplate,url写死)

RestTemplate restTemplate  =  new RestTemplate ();
String response = restTemplate.getForObject("http://localhost:8080/msg", String.class );

url写死的,只能写一个地址


第二种方式(利用LoadBalanceClient获取url,再使用RestTemplate)

@Autowired
private LoadBalanceClient loadBalanceClient ;
ServiceInstance serviceInstance = loadBalanceClient .choose("PRODUCT");
String url = String.format("http://%s:%s",serviceInstance.getHost(), serviceInstance.getPort() + "/msg");
String response = restTemplate.getForObject(url , String.class);


写法麻烦

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

@Component
public class RestTemplateConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
@Autowired 
private RestTemplate restTemplate;
String response = restTemplate.getForObject("http://PRODUCT/msg", String.class);


3、Ribbon实现软负载均衡核心:

(1)、服务发现:发现依赖服务的列表(依据服务的名字,把所有实例都找出来)

(2)、服务选择规则:依据规则策略如何从多个服务中选择一个有效的服务

(3)、服务监听: 检测失效的服务,做到高效剔除


4、订单查询商品服务

注意要点:

(1)、使用@requestbody注解以后必须使用post提交

(2)、@PathVariable注解对应着get请求

https://img4.sycdn.imooc.com/632d0a2700014b6015420816.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消