You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apisix.apache.org by tzssangglass <tz...@apache.org> on 2022/10/17 06:46:13 UTC

Proposal: Making APISIX intelligent

Background
In the early days, APISIX prided itself on its high performance, but as the
project grew, we would add more features to the main process, which caused
APISIX's performance to degrade. This is an irreversible process.
Now it's time to refocus the perspective on improving performance.
I would like to introduce a new approach for guiding current and future
performance optimization measures.

Vision
Implementing a complete AI Plane allows APISIX to dynamically determine the
best configuration switch based on user configuration (routing, plug-ins,
etc.), monitoring, and other data, and intelligently enable or disable some
features to find the best balance between functionality, performance, and
security. Make every line of the main process code real and meaningful, and
reject every bit of waste. On the premise of not compromising security and
functionality, we further improve APISIX execution efficiency, thus
enhancing APISIX node throughput and system stability, and bringing users a
more ultimate experience. In the future, AI Plane will be more intelligent
to help users better manage their existing APIs and further enhance
APISIX's experience of managing user APIs.

Goals
For now let's talk about short-term goals, in the short term (before APISIX
3.0 is released), we need to achieve
1. improve APISIX performance relative to 3.0.0-beta version in both
single-route and multiple-route scenarios;
2. optimized for many routes pressure testing scenarios (5000 routes, no
binding of any plugins, only one upstream), QPS performance should exceed
3.0.0-beta version by 30%.

Detailed Design
1. when the route matching conditions are simple, such as only URI, and
host, enable caching to speed up route matching, the cache key can be set
dynamically;
2. remove ctxdump from the Lua code and implement it at the C level;
3. if there are no plugins bound to the route that works in the
header_filter and body_filter phases, and if there are no special settings
in these two phases, skip them directly;
4. when there is only one upstream node in the upstream and no other
configuration items are enabled, set upstream in a minimalist way.

*ZhengSong Tu*
My GitHub: https://github.com/tzssangglass
Apache APISIX: https://github.com/apache/apisix

Re: Proposal: Making APISIX intelligent

Posted by YuanSheng Wang <me...@apache.org>.
It is a nice feature, if we can do `QPS performance should exceed3.0.0-beta
version by 30%`, it is cool.


On Mon, Oct 17, 2022 at 2:46 PM tzssangglass <tz...@apache.org>
wrote:

> Background
> In the early days, APISIX prided itself on its high performance, but as the
> project grew, we would add more features to the main process, which caused
> APISIX's performance to degrade. This is an irreversible process.
> Now it's time to refocus the perspective on improving performance.
> I would like to introduce a new approach for guiding current and future
> performance optimization measures.
>
> Vision
> Implementing a complete AI Plane allows APISIX to dynamically determine the
> best configuration switch based on user configuration (routing, plug-ins,
> etc.), monitoring, and other data, and intelligently enable or disable some
> features to find the best balance between functionality, performance, and
> security. Make every line of the main process code real and meaningful, and
> reject every bit of waste. On the premise of not compromising security and
> functionality, we further improve APISIX execution efficiency, thus
> enhancing APISIX node throughput and system stability, and bringing users a
> more ultimate experience. In the future, AI Plane will be more intelligent
> to help users better manage their existing APIs and further enhance
> APISIX's experience of managing user APIs.
>
> Goals
> For now let's talk about short-term goals, in the short term (before APISIX
> 3.0 is released), we need to achieve
> 1. improve APISIX performance relative to 3.0.0-beta version in both
> single-route and multiple-route scenarios;
> 2. optimized for many routes pressure testing scenarios (5000 routes, no
> binding of any plugins, only one upstream), QPS performance should exceed
> 3.0.0-beta version by 30%.
>
> Detailed Design
> 1. when the route matching conditions are simple, such as only URI, and
> host, enable caching to speed up route matching, the cache key can be set
> dynamically;
> 2. remove ctxdump from the Lua code and implement it at the C level;
> 3. if there are no plugins bound to the route that works in the
> header_filter and body_filter phases, and if there are no special settings
> in these two phases, skip them directly;
> 4. when there is only one upstream node in the upstream and no other
> configuration items are enabled, set upstream in a minimalist way.
>
> *ZhengSong Tu*
> My GitHub: https://github.com/tzssangglass
> Apache APISIX: https://github.com/apache/apisix
>


-- 

*MembPhis*
My GitHub: https://github.com/membphis
Apache APISIX: https://github.com/apache/apisix