Gateway初识
为什么需要网关
微服务直接让任何人访问不太安全,要对用户的身份进行验证。
网关功能:
1.身份认证和权限校验
2.判断服务的路由、负载均衡
3.请求的限流
网关的技术实现:
在SpringCould中网关的实现包括两种:
- gateway
- zuul
zuul是基于Servlet的实现,属于阻塞式编程(程序在执行一个任务的时候会被暂停,直到该任务完成)。
gateway是基于Spring5中提供的WebFlux,属于响应式编程,具有更好的性能。(响应式编程:通过观察和响应数据或事件的变化,来实现实时、即时地处理和更新的一种编程方式。 eg:监听鼠标点击)
快速入门
搭建网关服务步骤:
1.创建新的module,引入SpringCouldGateway的依赖和nacos的服务依赖:
<!--nacos服务注册发现依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--网关依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>
main函数
@SpringBootApplication public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class,args); } }
2.编写路由配置及nacos地址
断言:表示为一些布尔表达
server: port: 10010 #网关端口 spring: application: name: gateway #服务名称 cloud: nacos: server-addr: localhost:8848 #nacos地址 gateway: routes: #网关路由配置 - id: user-service #路由id,自定义,只要唯一即可 # uri: http://127.0.0.1:8081 #路由的目标地址 http就是秃顶地址 uri: lb://userservice #路由的目标地址 lb就是负载均衡,后面跟服务名称 predicates: #路由断言,也就是判断请求是否符合路由规则的条件
- path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
然后发现这样配置会像下面这样
然后查了一下,发现gateway和userservice不在一个namespace里
再补一张路由规则判断
路由断言工厂Route Predicate Factory
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通