我正在尝试实现一个具有java插件支持的API网关。分析过Kong、APIMan、APIsix,其中APIsix似乎是最合适的。但是当我尝试查看 java 插件支持时,java 插件运行程序的 github 显示为“该项目当前被认为是实验性的”。 https://github.com/apache/apisix-java-plugin-runner
因此想咨询社区,该插件是否是实验性的,以及是否有其他方法可以在启用 java 插件的情况下使用 ApiSix 进行生产。
也欢迎任何支持 java 的插件 API 网关的选项。
所以我将引用我在 Slack 频道上收到的项目维护者之一针对同一问题的回复,以供参考。
事实上,从我收集到的一些信息来看,已经有一些用户在生产环境中使用它了。 我无法回答是否应该将其标记为生产就绪。以下是一些事实。
- 该项目的设计模式、API接口和定制开发方法自启动以来没有发生重大变化,未来应该不会发生重大变化,因为它遵循了Java世界中一些常见的网关设计方法。
- 目前使用方式比较原始,需要clone项目源码,但在Java世界中,成熟的项目应该通过在依赖文件中定义GAV来导入依赖并使用。
基于此,我认为现在在稳定性方面已经可以投入生产了,但在其他层面还不够。
Apache APISIX Slack 频道也有同样的问题,链接:https://the-asf.slack.com/archives/CUC5MN17A/p1653908139962639
回到这个问题:Java Plugin Runner 被一些社区用户用于生产。
事情是这样的,据我所知,它已经在中国的生产环境中使用了(您可以参考社区生物周报)。
所以我建议你可以尝试一下。
此外,该插件仍然相对容易适应,我认为可以更好地定制以满足您的需求。
负载较重时,外部java插件无法正常工作。我们想在重负载环境中测试 apisix 和 java 插件。我们配置了 4 个 apisix 实例,内存和堆大小均为 4GB。插件进程在性能测试期间被终止并自行重新启动。使用的 4 个实例的 CPU 使用率均超过 100%。