RibbonController的实现原理?

来源:9-21 编写 Ribbon 应用 Controller

慕运维041575

2020-02-16

RibbonController 中的 getTemplateInfo 方法怎么看出来走了Ribbon呢?
infoUrl中的地址是怎样最终找到真正的微服务呢?

写回答

1回答

张勤一

2020-02-16

同学你好:

    你这里提出的两个问题是与 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 群随时交流、讨论,也非常感谢同学的支持!

2
5
慕运维041575
回复
张勤一
好的,谢谢老师
2020-02-18
共5条回复

Spring Cloud微服务实战 打造企业级优惠券系统

微服务,SpringCloud,SpringBoot面试、毕设、

1203 学习 · 487 问题

查看课程