前言
假设你有一个服务A,要调用服务B(有三个实例,B1、B2、B3),如何只调用其中的B1和B2,屏蔽掉B3?实际上解决方法大致分为两类。
一种是外部路由,就是通过网关等组件,在请求链路上进行路由选择,即A -> 网关 -> B。
另一种是内部路由,即A服务借助一些第三方库,直接决定要访问的B服务实例,即A -> B。
本文重点介绍内部路由的一种实现方式~
最近整理的Java架构学习视频和大厂项目底层知识点,需要的同学欢迎私信我【资料】发给你~一起学习进步!
Ribbon简介
一句话来说,Spring Cloud Ribbon是Netflix Ribbon实现的客户端负载均衡器。一张图能解释它的作用,从一个服务的多个实例中,最终选择一个实例用于消费。

对于没有使用过Spring Cloud的同学来说可能有点陌生,如果你写过Spring Boot应用,要调用的远程服务仅通过IP加端口的形式暴露,远程调用的姿势可能是这样的。
RestTemplate restTemplate = new RestTemplate();
String url = "http://10.10.10.10:8080";
String result = restTemplate.getForObject(url, String.class);
当被消费的服务做高可用,有多个实例的时候,这样的调用方式完全不可行。使用Ribbon的话,就可以将一个服务名映射到多个实例上。大致的使用方式如下,首先在配置文件中加上自己想要的服务名,以及该服务名后面映射的实例地址,在调用的时,url直接使用服务名。
# application.properties
# 服

本文介绍了如何在SpringBoot应用中实现动态路由,通过增强Netflix Ribbon和使用NSF微服务框架。Ribbon作为客户端负载均衡器,通常配合注册中心使用。通过自定义IRule实现动态路由,而NSF框架提供无侵入式的服务治理,包括动态路由、熔断降级、流量控制等功能,支持多种语言和服务框架。
最低0.47元/天 解锁文章
619

被折叠的 条评论
为什么被折叠?



