【自研网关系列】什么是网关,为什么需要自研网关

🌈Yu-Gateway:基于 Netty 与原生 Java 实现,使用 Nacos 作为注册与配置中心。项目实现多种过滤器,包含路由、负载均衡、鉴权、灰度发布等过滤器。

🌈项目代码地址:https://github.com/YYYUUU42/YuGateway-master

如果该项目对你有帮助,可以在 github 上点个 ⭐ 喔 🥰🥰

🌈自研网关系列:可以点开专栏,参看完整的文档

目录

1、为什么会出现 Yu-Gateway 这个项目

2、网关是什么

3、为什么需要自研网关


1、为什么会出现 Yu-Gateway 这个项目

相信大家基本上做过微服务项目的都会使用 SpringCloud GateWay 作为网关,尽管 Spring Cloud Gateway 作为 API 网关为我们带来了诸多便利,如快速开发、稳定运行以及丰富的功能集,其透明化的封装特性也带来了一些挑战。在遇到问题时,开发者往往需要深入框架内部,理解其工作原理与细节,以定位和解决问题,这无疑增加了项目的维护成本。此外,成熟框架为了适应广泛场景,可能包含了部分当前项目并不需要的功能,导致系统在某种程度上显得功能冗余。

面对上述情况,我们意识到针对特定项目需求进行个性化定制的重要性。出于学习与实践的目的,我们着手创建了 Yu-Gateway 项目。该项目旨在构建一个贴合项目实际需求、精简高效的API网关,不仅能够剔除不必要的功能以保持系统轻量化,还能提供深入理解与掌控网关运作机制的机会,从而提升技术实力与应对未来挑战的能力。

2、网关是什么

网关作为现代分布式架构中的关键组件,其作用远超乎想象的丰富多样,它犹如一座桥梁,联结客户端与后端服务,承担着至关重要的角色。对网关的核心职能进行归纳总结,以便更深入地理解其在整个系统中的价值。实际上,一个典型的客户端请求在经过网关时,会经历如下细致入微的处理步骤:

  1. 请求识别:精准解析请求的元信息,包括头部、HTTP方法与路径,以此准确判断请求的服务目标与具体操作意图。
  2. 安全验证:在安全层面执行一系列严格检查,如解密加密传输的请求、核实API密钥的有效性、执行OAuth等标准认证流程,确保请求来源的合法性与权限合规。
  3. 路由决策:遵循预定义的路由规则或利用服务发现机制动态定位目标服务实例,确保请求被精确导向至正确的处理单元。
  4. 请求调整:根据业务需求或系统配置,网关可能对请求的头部、查询参数乃至请求体进行必要修改,以适应后端服务接口或优化通信效率。
  5. 负载均衡调度:运用各种负载均衡算法,在多个服务实例间智慧分配请求,确保系统整体负载均衡,避免单点过载与资源浪费。
  6. 请求转发执行:将经过处理的请求透明、高效地转发至选定的后端服务,启动实际业务逻辑的执行。
  7. 响应处理与反馈:接收后端服务返回的响应数据,可能对其进行格式转换、内容重组等操作,确保最终呈现给客户端的响应符合约定规范。
  8. 日志记录留存:详尽记录整个请求生命周期的详细信息,包括请求与响应的具体内容、处理时间、状态码等,为后续的运维审计、性能调优与故障排查提供宝贵数据支撑。

综上所述,网关在系统架构中的职责繁多且关键,它不仅是保障系统安全、稳定、高效运行的重要屏障,也是实现服务治理、监控分析与灵活扩展的核心枢纽。因此,在设计网关时,充分考虑上述各功能点及其相互影响至关重要,它们直接决定了网关的功能完备性与性能表现,成为衡量网关设计成败的关键指标。

3、为什么需要自研网关

在评估技术栈选择时,一种有效的策略是从正反两面审视成熟框架与自研解决方案的优势与局限。通过对成熟开源网关框架的优势进行剖析,我们可以揭示其潜在的不足,进而明确自研网关的必要性。以下是对成熟框架与自研网关各自特点的深度解读:

成熟开源网关框架的优势与潜在局限

  1. 稳定性
  • 优势:提供高度可靠的行为和预期的输出,降低系统故障风险。
  • 潜在局限:过度追求稳定性可能导致在特定场景下缺乏必要的灵活性,使得实现特定功能变得复杂或效率降低,无法满足快速变化的业务需求或应对新兴技术挑战。
  1. 社区支持
  • 优势:丰富的社区资源、文档和实践经验有助于快速解决问题,降低学习曲线。
  • 潜在局限:过度依赖社区支持可能在需要快速响应或定制化解决方案时受制于社区响应速度和专业知识的可获取性,特别是在处理独特业务场景或应对紧急问题时。
  1. 快速开发
  • 优势:现成的功能模块与简化配置有助于缩短项目周期,提高开发效率。
  • 潜在局限:通用化设计可能无法完美契合所有应用场景,可能导致性能非最优,或需额外工作进行定制化适配,增加隐形成本。
  1. 集成能力
  • 优势:与多种服务和组件具有良好兼容性,易于构建生态体系。
  • 潜在局限:过度依赖现有集成可能阻碍新技术的采纳,尤其是当新技术与现有网关架构不兼容或未得到充分优化时,可能限制系统的创新与发展。
  1. 成本效益
  • 优势:初期投入较少,可利用开源资源快速构建基础架构。
  • 潜在局限:随着时间推移,为适应特定需求进行学习、调整和扩展开源网关可能产生额外成本,甚至可能超过初期节省,尤其是在面临复杂定制、性能瓶颈或技术演进需求时。

从简单且更加片面的角度去看,自研网关的好处有如下几点:

  1. 完全控制: 自研网关意味着拥有对网关功能的全面控制,团队可以根据具体业务需求定制网关行为,不受外部项目的限制。这包括路由决策、安全性检查、流量控制和日志记录等。
  2. 定制的性能优化: 可以针对特定的用例和环境进行性能调优。例如,如果某个服务需要非常高的吞吐量或极低的延迟,团队可以优化代码和配置来满足这些特定的性能要求。
  3. 特色功能: 在内部网关中实现独特的业务逻辑和集成,例如,自定义认证/授权机制,特殊的转换逻辑,或者与内部系统的特殊集成。
  4. 减少依赖: 自研网关减少了对外部开源项目维护速度和方向的依赖,这在某些情况下可能避免了被迫跟随外部变化带来的风险。

更加高维的视角去看,为什么需要一个自研网关?

  1. 成本考虑: 成熟的网关产品在未来可能会引入不兼容的更改或弃用特定特性,导致企业不得不进行昂贵的迁移或重构。自研网关则完全控制版本和功能迭代,避免了这种风险。
  2. 技术因素: 对于使用非HTTP协议(如TCP、UDP直连或专有协议等)的老旧系统,市面上的网关产品往往只提供有限或无支持。自研网关可以确保与这些系统的兼容性,证据在于许多遗留系统的成功集成案例,例如金融行业中特有的交易协议。
  3. 网络和安全性能: 在对网络延迟极为敏感的交易系统中,即使是毫秒级的改进也具有重大意义。自研网关可以针对特定的网络环境和数据流模式进行优化,有的金融机构通过内部开发的网关减少了30%的网络延迟。
  4. 组织和运营: 自研网关的更新和迭代可以与企业的CI/CD流程紧密集成,这为企业带来了更高的敏捷性和响应市场变化的能力。在许多成功案例中,企业能够在几小时内部署网关更新以支持新的市场需求或应对安全威胁,而不是等待第三方发布更新。
  5. 市场和竞争优势: 通过自研网关提供的独特服务或功能,企业可以在市场上建立独特的卖点。例如,Amazon的API Gateway提供了与AWS服务的深度集成,这是它们的一个关键竞争优势。
  6. 创新驱动: 自研网关允许企业实现最新的技术研究成果,而无需等待这些功能在开源项目中可用。例如,谷歌的ESPv2 API网关就是在开源的Envoy基础上,集成了谷歌特有的安全、监控和控制策略。

其实,上面说的都太高大上了,从个人角度的层面来说的话,一个自研网关的作用难道不是,在自研项目的过程中,增加你对架构设计,语言特性以及你的知识面嘛。

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值