采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
RibbonController 中的 getTemplateInfo 方法怎么看出来走了Ribbon呢? infoUrl中的地址是怎样最终找到真正的微服务呢?
同学你好:
你这里提出的两个问题是与 Ribbon 相关的,我来依次对它们进行解答。
1. RibbonController 中的 getTemplateInfo 方法怎么看出来走了Ribbon呢?
其实可以看到,在 RibbonController 中首先注入了 RestTemplate,这其实是使用 Ribbon 的 “标志”,因为 Ribbon 使用 HTTP 服务。另外,在运行微服务并调用接口的时候,其实也会打印 Ribbon 相关的日志的(更明显的是,在调用服务的时候,使用了 Eureka Client Name,这也是 SpringCloud 框架使用 Ribbon 的 “证明”)。
2. infoUrl中的地址是怎样最终找到真正的微服务呢?
这里最核心的是 infoUrl 的定义,如下所示:
String infoUrl = "http://eureka-client-coupon-template/coupon-template/info";
可以看到,这里指出了 EurekaClient 的 Name,Ribbon 在找微服务的时候,首先会访问 Eureka Server,确定 EurekaClient 是否存在,并获取到 EurekaClient 的访问地址。最后,再根据 uri 的声明访问微服务的具体服务接口,并返回响应。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
Ribbon是从eureka中发现了template的ip:port吗? feign也是从这样的吗? 这两种有什么区别呢?可以结合在一起吗?
Ribbon 是从 Eureka 中发现 Template 服务的 ip 和 port;Feign 是基于 Ribbon 封装的,底层实现就是 Ribbon,只是换了一种不一样的使用方式。
那一般情况下还会存在直接使用Ribbon的情况吗? Hystrix好像自定义熔断策略,比如指定时间端失败率,这个在课程的例子中怎么实现呢?
登录后可查看更多问答,登录/注册
微服务,SpringCloud,SpringBoot面试、毕设、
997 6
1.2k 6
1.1k 5
990 5
975 5