SpringCloud服务间通信

springCloud 服务间的通信方式有两种

  • RestTemplate 方式

  • Feign 的方式

服务端–商品服务

image-20200702192227094

客户端–订单服务

RestTemplate 方式

第一种方式image-20200702192252669

缺点:URL固定写死了

1、当注册中心有很多服务时,我们可能不知道我们需要的服务由谁提供,无法获取对方IP,因此就可能无法调用到服务。

2、实际业务场景中,并发量大,需要部署多台服务器, “localhost:9080/getMsg,localhost:9081/getMsg “,那么此时就需要负载均衡用户具体使用哪台服务器是不知道的

第二种方式

​ 通过 LoadBalancerClient 来获取应用名,进而获取地址和端口,在格式化拼接地址,从而调用 product服务

image-20200702224000158

缺点:是每次调用服务都要这样写,拼接URL字符串,编码很麻烦。

第三种方式

新建一个config类,配置RestTemplate的Bean,并加上@LoadBalanced注解。

image-20200702225620546

在客户端ClientController中,利用@LoadBalanced可在restTemplate里使用应用名字

image-20200702225544430

使用 Feign 的方式进行通信

  • 声明式 REST客户端(伪 RPC)
  • 采用了基于接口的注解

完整错误:Failed to introspect Class [org.springframework.cloud.openfeign.ribbon.FeignRibbonClientAutoConfiguration] from ClassLoader
不能加载 FeignRibbonClientAutoConfiguration

错误原因:
全局变量:SpringBootVersion 和springCloudVersion在Feign兼容方面有问题

img

<dependency>`
		<groupId>org.springframework.cloud</groupId>`
		<artifactId>spring-cloud-starter-openfeign</artifactId>`
		<version>2.0.0.M6</version>`		
</dependency>`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值