Gateway动态路由实现
Gateway网关启动时,路由信息默认会加载内存中,路由信息被封装到 RouteDefinition 对象中,配置多个RouteDefinition组成Gateway的路由系统。
通过Spring Gateway 集成Nacos实现配置管理,并且实现动态路由管理。
从路由的加载机制可以看出,能够实现动态添加、删除、修改路由的方式就是自定义实现RouteDefinitionRepository,从而可以保证在Spring Cloud Gateway启动时加载之前已经添加过的路由。
两个网段中的两台电脑能相互访问,那么需要在每台路由器上做静态路由来实现,但是做静态路由需要知道下一跳的地址。
动态路由之所以能根据网路的情况自动计算路由、选择转发路径,是由于当网路发生变化时,路由器之间彼此交换的路由信息会告知对方网路的这种变化,通过信息扩散使所有路由器都能得知网路变化。
gateway网关路由匹配规则
路由(Route): 路由是网关最基础的部分,路由信息由ID、目标URI、一组断言和一组过滤器组成,如果断言路由为真,则说明请求的URI和配置匹配。 断言(Predicate): java8中的断言函数。
连接到多个物理 TCP/IP 网络的设备,可以在这些网络之间进行路由选择或交付 IP 数据包。网关在不同的传输协议或数据格式(例如,IPX 和 IP)之间进行转换,通常是因为它的转换能力而将其添加到网络中。
新的gateway网关路由配置有两种方式:通过@Bean自定义RouteLocator,在启动主类Application中配置。在配置文件yml中配置。这两种方式都可以实现网关路由是等价的,但是通常项目开发中会使用配置文件yml方式。
无论是哪一种,在启动网关后将无法修改路由配置,如有新服务要上线,则需要先把网关下线,修改 yml 配置后,再重启网关。
最后点击“确定”完成设置。测试网关。打开“运行”对话框,输入命令“CMD”打开MSDOS窗口。然后在窗口中输入命令“ping 19161 -t”,如果信息显示成功接收到数据,则说明默认网关配置成功。
图形化设置:这里举例家用路由器的网关设置方法,通过WEB页面登录路由设置页面,在WAN口设置中可以对网关进行设置,如下图。
springcloud网关的常见功能不包括路由转发
1、微服务框架。SpringCloud未开发者提供了一套快速开发分布式系统的组件,SpringCloud并不推荐重复造轮子,主张利用Springboot对其他公司较成熟的组件进行封装,微服务框架是不常用的,可以简化分布式系统基础组件的开发和使用。
2、路由转发:接收一切外界请求,转发到后端的微服务上去;过滤器Filter:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。
3、通过@Bean自定义RouteLocator,在启动主类Application中配置。在配置文件yml中配置。这两种方式都可以实现网关路由是等价的,但是通常项目开发中会使用配置文件yml方式。