点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!! 对于微服务架构来说,系统内的各个模块都可能对外提供服务,此时就需要一个API网关的角色,它位于所有服务之前,用来提供鉴权管理、路由转发、流量控制等。
网关是用来对于API服务的访问进行统一管理,使得应用内的接口服务对调用者透明。SpringCloud Gateway是Spring官方基于Spring5.0、SpringBoot2.0和Project Reactor等技术实现的网关,目的是为微服务架构提供一种简单统一的API路由管理方式。Gateway核心概念包括Route、Predicate、过滤器,作为所有API接口的接入点,同时也是所有后端服务的聚合点,实现安全、路由、过滤等策略,对所有API服务和策略统一管理。新建一个SpringBoot工程,引入spring-cloud和spring-cloud-alibaba的依赖,需要注意两者版本对应关系。由于需要用nacos作为注册中心实现负载均衡形式转发,所以引入nacos依赖:项目启动类加入@EnableDiscoveryClient,实现项目启动后能在nacos的web端界面看到服务的相关信息,并且具备拉取服务信息的功能。上面配置了一个路由规则,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访问接口,可以看到响应结果一致,路由转发成功。