写在前面(ShenYu)

初衷

最近公司在做项目重构,将现有的单体应用要转变为微服务架构,那大家知道的微服务架构前置网关是非常重要的,所以此栏目会就网关进行展开介绍。

为什么要使用网关

在现代应用程序架构中,微服务和云计算的兴起导致了应用程序的复杂性增加,服务之间的通信变得更加复杂。因此,需要一种工具来处理流量路由、身份验证、授权、限流、负载均衡等任务,同时提供安全性和可扩展性。这就是网关的作用,它是一个中间层,位于客户端和后端服务之间,用于管理和控制请求和响应。

网关选型,为什么是ShenYu

首先我们在市面上见到的网关很多,最常见的使用最多的应该是Spring Cloud GateWay ,还有kongzuul等等网关。网上现在有很多网关之间对比介绍,我这里就不赘述了。下面我列举一下为什么要选择ShenYu。

性能

​ 根据众多大佬的测试,ShenyuSpringcloudGateWay的性能差距很小,甚至可能ShenYu的性能更优,这个是听说,本人没有实际测试哈。

插件化

​ 这个也是ShenYu的一个特色,ShenYu有很多插件化组件,而且是插拔式的,即插即用。而且还可以自己拓展插件,自定义插件。

二次开发

​ 因为是完全开源项目,所以二次开发起来很容易,代码写的非常清晰,而且注释也是非常好的,加上我们团队也是java开发。

可视化界面

ShenYu有一个独立的admin后台,对于维护来说可是非常的友好的。当然这个有利也有弊,需要单独部署服务。

支持dubbo

​ 由于我们的微服务架构是ShenYu+ dubbo3ShenYu是支持dubbo的。

安全性和认证

​ ShenYu提供了强大的安全性功能,包括身份验证和授权机制,您可以使用它来确保只有授权用户可以访问您的服务。这对于保护敏感数据和应用程序至关重要。

社区支持

​ ShenYu拥有一个活跃的社区,这意味着您可以获得及时的支持、问题解答和更新。这对于确保您的网关保持最新和安全非常重要。

与市面其他网关进行对比

ShenYu vs. Spring Cloud Gateway

ShenYu优势
  • 多协议支持: ShenYu支持多种协议,包括HTTP、gRPC等,使其适用于不同类型的应用程序。

  • 开源性质: ShenYu是一个开源项目,没有许可费用,可以根据需要自由定制。

  • 流量管理: ShenYu提供了广泛的流量管理功能,包括请求路由、限流、负载均衡等,以提高性能和可伸缩性。

  • 安全性和认证: ShenYu提供了强大的安全性功能,有助于保护应用程序和数据。

  • 活跃的社区支持: ShenYu拥有活跃的社区,提供及时的支持和更新。

Spring Cloud Gateway优势
  • Spring生态系统: Spring Cloud Gateway是Spring生态系统的一部分,与其他Spring组件(如Spring Boot和Spring Cloud)紧密集成,使其在Spring项目中易于使用。
  • 过滤器链: 它采用了过滤器链的概念,允许开发人员编写自定义过滤器以处理请求和响应。
  • 集成性: 与Spring Cloud一起使用时,可以轻松集成服务发现、负载均衡等功能。
对比
  • ShenYu和Spring Cloud Gateway都是开源项目,但ShenYu更专注于微服务架构。
  • Spring Cloud Gateway在Spring生态系统中更容易集成,对于已经使用Spring的团队可能更具吸引力。
  • ShenYu的多协议支持可能对某些项目更有吸引力,尤其是涉及到gRPC等非HTTP协议的情况。

ShenYu vs. Apache APISIX

ShenYu优势
  • 多协议支持: ShenYu支持多种协议,适用于不同类型的应用程序。
  • 开源性质: ShenYu是一个开源项目,没有许可费用,可以根据需要自由定制。
  • 流量管理: ShenYu提供了广泛的流量管理功能,包括请求路由、限流、负载均衡等,以提高性能和可伸缩性。
  • 安全性和认证: ShenYu提供了强大的安全性功能,有助于保护应用程序和数据。
  • 活跃的社区支持: ShenYu拥有活跃的社区,提供及时的支持和更新。
Apache APISIX优势
  • 高性能: APISIX以高性能著称,特别适用于需要处理大量请求的场景。
  • 可扩展性: 它具有灵活的插件系统,允许用户自定义功能和行为。
  • 实时监控: APISIX提供了实时监控和仪表板,帮助管理员了解网关的性能和运行状况。
对比
  • ShenYu和Apache APISIX都是开源的高性能API网关。
  • APISIX在处理大量请求时具有出色的性能和低延迟。
  • ShenYu更注重多协议支持和微服务架构,适用于不同的使用情境。

分享

下面会分享我们实际项目中使用到的网关的相关功能,以及会分享一些对于ShenYu的一些改造,以及对于ShenYu的一些源码分析和使用到的每个插件的一些源码分析,如果有分析的不对的,或者大家有更好的见解,欢迎大家指导。

### ShenYu Zuul 的区别、特性性能对比 #### 特性概述 Apache ShenYu 是一款基于 Java Reactor 开发的响应式 API 网关,具有高性能、动态灵活的流量管控、热插拔易于部署的特点[^1]。相比之下,Netflix Zuul 则是一款较早推出的 API 网关,最初设计用于 Netflix 自身的服务架构。 #### 架构差异 - **ShenYu** 使用反应式编程模型来处理请求,这使得它可以更有效地管理资源并提高并发处理能力。此外,ShenYu 支持多种协议转换服务治理功能,能够更好地适应现代微服务架构的需求[^3]。 - **Zuul** 基于同步阻塞 I/O 模型构建,在高负载情况下可能会遇到性能瓶颈。不过,随着版本迭代,Zuul 也引入了一些改进措施以提升效率,比如通过增加线程池等方式优化吞吐量[^2]。 #### 功能特性 | 特性 | Apache ShenYu | Netflix Zuul | | --- | --- | --- | | 编程范式 | 反应式 (Reactive) | 同步/异步混合 | | 性能表现 | 更高的吞吐率与更低延迟 | 较低的吞吐率与较高延迟 | | 流量控制 | 提供丰富的策略配置选项 | 主要依赖外部组件实现复杂逻辑 | | 插件机制 | 内置插件体系结构便于扩展 | 外部过滤器形式较为繁琐 | #### 部署灵活性 对于 Kubernetes 用户来说,ShenYu 提供了一个官方维护的 Helm Chart 来简化安装过程,并且该图表不仅限于特定语言环境,可以很好地与其他基础设施集成工作[^4];而 Zuul 虽然也可以运行在容器化环境中,但在自动化运维方面可能不如前者便捷。 ```yaml # Example of deploying Apache ShenYu via Helm on Kubernetes helm repo add shenyu https://apache.github.io/shenyu-helm-chart/ helm install my-shenyu-gateway shenyu/shenyu ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单简单小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值