Gateway 网关服务

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: Gateway 网关服务

为什么需要网关

网关功能:

  • 对用户请求做身份认证、权限校验
  • 将用户请求路由到微服务,并实现负载均衡
  • 对用户请求做限流

网关的技术实现

SpringCloud中网关的实现包括两种:

  • gateway
  • zuul
  • Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能

搭建网关服务

1、创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖:

<!--网关依赖-->
<dependency>   
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
</dependency>

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/开头就符合要求

网关是个独立的服务,因此需要配置一个端口然后要配置


配置nacos,实现服务的注册和发现


允许有多个路由配置routes,每个路由配置只能有一个路由id


uri是路由的目的地址,可以直接写死目的地址,如 uri: http://127.0.0.1:8081,但是一般不这么使用


一般使用 uri: lb://userservice 这里的 userservice 是注册在服务注册中心的服务,因此上面需要配置nacos


那我们要将哪些请求转发到 userservice服务呢?这个就需要我们配置路由断言,路由断言判断哪些请求需要进行转发,我们这边只进行了Path断言条件,实际上还有很多,我额外写了一篇博客,大家可以参考

网关原理

当我们要访问一个具体服务时,不再访问其端口,而是访问网关服务的端口,网关就会将我们的请求再转发给对应的具体服务,如下

而网关具体就通过注册中心进行远程调用,如下

过滤器

GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理

其作用时机如下

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
23天前
|
存储 缓存 负载均衡
Gateway 网关坑我! 被这个404 问题折腾了一年?
小富分享了一个困扰团队一年多的 SpringCloud Gateway 路由 404 问题。通过日志追踪和源码分析,发现是网关在 Nacos 配置更新后未能正确清理旧的路由权重缓存,导致负载均衡时仍使用已删除的路由数据。最终通过监听路由刷新事件并手动更新缓存,成功解决了问题。
409 125
Gateway 网关坑我! 被这个404 问题折腾了一年?
|
2月前
|
安全 虚拟化
Omnissa Secure Email Gateway 2.33 - 电子邮件网关
Omnissa Secure Email Gateway 2.33 - 电子邮件网关
34 0
|
4月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
210 14
|
4月前
|
Java API Nacos
|
12月前
|
安全 5G 网络性能优化
深入理解5G中的SAEGW:服务网关边界
【10月更文挑战第9天】
382 0
|
10月前
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
529 8
|
11月前
|
负载均衡 Java 应用服务中间件
Gateway服务网关
Gateway服务网关
279 1
Gateway服务网关
|
10月前
|
API
Istio 使用ingress和gateway两种方式公开服务
本文档指导您完成Istio网关的部署与配置。首先安装`istiod`(步骤略过)。接着,创建`ingress.yaml`文件,定义Istio入口网关的服务、部署及权限设置,通过`kubectl apply -f ingress.yaml`命令应用。最后,创建Ingress资源,指定主机名、后端服务及TLS配置,实现对外部请求的路由管理。
873 1
|
12月前
|
前端开发 Java API
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
本文是Vert.x学习系列的第五部分,讨论了回调函数的限制、Future和Promise在异步操作中的应用、响应式扩展以及Kotlin协程,并通过示例代码展示了如何在Vert.x中使用这些异步编程模式。
283 5
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
|
11月前
|
负载均衡 Java API
项目中用的网关Gateway及SpringCloud
Spring Cloud Gateway 是一个功能强大、灵活易用的API网关解决方案。通过配置路由、过滤器、熔断器和限流等功能,可以有效地管理和保护微服务。本文详细介绍了Spring Cloud Gateway的基本概念、配置方法和实际应用,希望能帮助开发者更好地理解和使用这一工具。通过合理使用Spring Cloud Gateway,可以显著提升微服务架构的健壮性和可维护性。
545 0