暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SpringCloud Gateway实现网关

IT那活儿 2022-06-12
589
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!! 





网关介绍


对于微服务架构来说,系统内的各个模块都可能对外提供服务,此时就需要一个API网关的角色,它位于所有服务之前,用来提供鉴权管理、路由转发、流量控制等。

网关是用来对于API服务的访问进行统一管理,使得应用内的接口服务对调用者透明。



Gateway介绍

SpringCloud Gateway是Spring官方基于Spring5.0、SpringBoot2.0和Project Reactor等技术实现的网关,目的是为微服务架构提供一种简单统一的API路由管理方式。
Gateway核心概念包括Route、Predicate、过滤器,作为所有API接口的接入点,同时也是所有后端服务的聚合点,实现安全、路由、过滤等策略,对所有API服务和策略统一管理。




实  现

新建一个SpringBoot工程,引入spring-cloud和spring-cloud-alibaba的依赖,需要注意两者版本对应关系。
引入gateway的依赖:
由于需要用nacos作为注册中心实现负载均衡形式转发,所以引入nacos依赖:
项目启动类加入@EnableDiscoveryClient,实现项目启动后能在nacos的web端界面看到服务的相关信息,并且具备拉取服务信息的功能。
配置文件加入nacos配置:
配置文件加入gateway配置:
上面配置了一个路由规则,id为xxx-interface,当请求的路径为/xxx-interface/**时将请求通过负载均衡转发到服务名为xxx-interface的服务上,从nacos上根据服务名获取服务真实地址进行转发。
StripPrefix=1表示将请求的前缀去除一个,由于前缀的第一个是用来区分调用哪个服务的,请求转发后需要去除。
Gateway提供的路由策略有很多,例如Header、Host、Method、Query等,示例采用最常见的Path来做路由。



效果展示

上面新建了一个网关服务xxxxx-axz-gateway,以及一个提供接口服务的xxx-interface工程,期望通过网关服务访问接口服务的/interface/auth/pubkey接口。
分别启动两个服务,在nacos中可以看到两个服务均已启动,其中xxx-interface启动在8090端口,xxxxx-axz-gateway启动在8081端口。
先直接访问xxx-interface的接口服务,接口正常。
通过xxxxx-axz-gateway访问接口,可以看到响应结果一致,路由转发成功。


END



本文作者:孙涛涛

本文来源:IT那活儿(上海新炬王翦团队)

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论