apisix VS Lua

Compare apisix vs Lua and see what are their differences.

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
apisix Lua
64 118
13,689 7,996
0.8% 1.3%
9.6 8.5
7 days ago 17 days ago
Lua C
Apache License 2.0 MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

apisix

Posts with mentions or reviews of apisix. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-05-02.
  • Ask HN: Are there any open source forks of nomad smd consul?
    9 projects | news.ycombinator.com | 2 May 2024
    > I think etcd is basically a k8s only project now

    I hate etcd with the best of them, but etcd is used in a lot more places than just kubernetes:

    https://github.com/apache/apisix/blob/master/docs/en/latest/...

    https://github.com/traefik/traefik#:~:text=Etcd,

    https://github.com/zalando/patroni#patroni-a-template-for-po...

    https://github.com/purpleidea/mgmt/tree/0.0.26/etcd (this one shows up on HN quite a bit)

    https://github.com/sorintlab/stolon#features

    It's actually one of the major reasons I wouldn't touch those projects

  • Multi-layer Caching in API Gateway Tackles High Traffic Challenges
    1 project | dev.to | 26 Jan 2024
    Through this intelligent caching mechanism, APISIX efficiently utilizes system resources when handling a large volume of requests, thereby improving overall system performance and stability. APISIX, with its advanced LRU cache, provides developers with a reliable and efficient API gateway solution, facilitating smooth communication with external services.
  • Apache APISIX plugin priority, a leaky abstraction?
    2 projects | dev.to | 14 Dec 2023
    The main issue is that priority is documented in the config-default.yaml file, while the phase is buried in the code. Worse, some plugins run across different phases. For example, let's check the proxy proxy-rewrite plugin and, more precisely, the functions defined there:
  • A "Tiny" APISIX Plugin
    4 projects | dev.to | 27 Nov 2023
    // references: // https://github.com/tetratelabs/proxy-wasm-go-sdk/tree/main/examples // https://github.com/apache/apisix/blob/master/t/wasm/ package main import ( "github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm" "github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm/types" "github.com/valyala/fastjson" ) func main() { proxywasm.SetVMContext(&vmContext{}) } // each plugin has its own VMContext. // it is responsible for creating multiple PluginContexts for each route. type vmContext struct { types.DefaultVMContext } // each route has its own PluginContext. // it corresponds to one instance of the plugin. func (*vmContext) NewPluginContext(contextID uint32) types.PluginContext { return &pluginContext{} } type header struct { Name string Value string } type pluginContext struct { types.DefaultPluginContext Headers []header } func (ctx *pluginContext) OnPluginStart(pluginConfigurationSize int) types.OnPluginStartStatus { data, err := proxywasm.GetPluginConfiguration() if err != nil { proxywasm.LogErrorf("error reading plugin configuration: %v", err) return types.OnPluginStartStatusFailed } var p fastjson.Parser v, err := p.ParseBytes(data) if err != nil { proxywasm.LogErrorf("error decoding plugin configuration: %v", err) return types.OnPluginStartStatusFailed } headers := v.GetArray("headers") ctx.Headers = make([]header, len(headers)) for i, hdr := range headers { ctx.Headers[i] = header{ Name: string(hdr.GetStringBytes("name")), Value: string(hdr.GetStringBytes("value")), } } return types.OnPluginStartStatusOK } // each HTTP request to a route has its own HTTPContext func (ctx *pluginContext) NewHttpContext(contextID uint32) types.HttpContext { return &httpContext{parent: ctx} } type httpContext struct { types.DefaultHttpContext parent *pluginContext } func (ctx *httpContext) OnHttpResponseHeaders(numHeaders int, endOfStream bool) types.Action { plugin := ctx.parent for _, hdr := range plugin.Headers { proxywasm.ReplaceHttpResponseHeader(hdr.Name, hdr.Value) } return types.ActionContinue }
  • 10 Reasons for Choosing API7
    4 projects | dev.to | 20 Nov 2023
    API7 takes Apache APISIX as its robust foundation, which is open-source and has an active community with over 600 contributors all over the world. The nature of open source allows users to examine the source code, which promotes transparency. This transparency helps users understand how APISIX works, verify its security, and identify and fix any potential vulnerabilities or bugs.
  • How is Apache APISIX Fast?
    6 projects | dev.to | 13 Sep 2023
    But the best part is that the libraries mentioned here and Apache APISIX are entirely open source, meaning you can look under the hood and modify things yourself.
  • Ops friendly Apache APISIX
    1 project | dev.to | 17 Aug 2023
    Default configuration
  • Custom Plugin Development For APISIX With Lua And ChatGPT
    5 projects | dev.to | 14 Jun 2023
    4. Plugin definition: It is a really important part of plugin implementation that we define as a table with properties for the version, priority, name, and schema. The name and schema are the plugin's name and schema defined earlier. The version and priority are used by APISIX to manage the plugin. The version typically refers to the version that is currently in use like API versioning. If you publish and update your plugin logic, it is going to be 1.1 (You can set any version you wish). But you need to be very careful in choosing priority. The priority field defines in which order and phase your plugin should be executed. For example, the 'ip-restriction' plugin, with a priority of 3000, will be executed before the 'example-plugin', which has a priority of 0. This is due to the higher priority value of the 'ip-restriction' plugin. If you're developing your own plugin, make sure that you followed the order of plugins not to mess up the order of existing plugins. You can check the order of existing plugins in the config-default.yaml file and open the Apache APISIX Plugin Development Guide to determine.
  • Your opinion on Kong
    4 projects | /r/devops | 22 Mar 2023
    Their use of etcd was a hard pass for me; I don't need more etcd in my life
  • The Ultimate Beginner’s Guide to Open Source Contribution
    12 projects | dev.to | 6 Dec 2022
    Apache APISIX Apache APISIX is an open source, dynamic, real-time, high-performance cloud native API gateway. APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more. Official website https://apisix.apache.org/ GitHub projects APISIX (the core): https://github.com/apache/apisix GitHub - apache/apisix: The Cloud-Native API Gateway GitHub - apache/apisix-dashboard: Dashboard for Apache APISIX GitHub - apache/apisix-website: Apache APISIX Website GitHub - apache/apisix-docker: the docker for Apache APISIX GitHub - apache/apisix-go-plugin-runner: Go Plugin Runner for APISIX GitHub - apache/apisix-java-plugin-runner: APISIX Plugin Runner in Java GitHub - apache/apisix-python-plugin-runner: Apache APISIX Python plugin runner GitHub - apache/apisix-helm-chart: Apache APISIX Helm Chart GitHub - apache/apisix-ingress-controller: ingress controller for K8s

Lua

Posts with mentions or reviews of Lua. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-19.
  • 5-Step Approach: ProjectSveltos Event Framework for Kubernetes Deployment with Cilium Gateway API
    3 projects | dev.to | 19 Feb 2024
    The EventSource uses the Lua language to search for any services with ports set to 80 or 443 in the ‘argocd’ namespace. More examples can be found here.
  • Building a Wordle Clone with Lua! 🕹
    3 projects | dev.to | 25 Jan 2024
    If you're new to the 12 in 24 series, I'm learning and building projects with a new programming language every month - this month, it's the Lua scripting language. You can find source code for the projects I build in the official GitHub repository (check it out, this week's folder contains code for both this and two other bonus projects!).
  • Gearing up for Lua
    3 projects | dev.to | 1 Jan 2024
    This month, we're talking about Lua. It's not always a first choice when it comes to programming, but I think there's a lot to enjoy about this little language. Heck, I'm a big game development fan myself - I would look into it even if that was the only reason to.
  • Pluto, a Modern Lua Dialect
    9 projects | news.ycombinator.com | 27 Dec 2023
    It’s Portuguese. It’s the same in the Lua codebase [1].

    [1]: https://github.com/lua/lua

  • Fluent Bit with ECS: Configuration Tips and Tricks
    4 projects | dev.to | 26 Dec 2023
    If we think we need more flexibility for processing records, we can write our own embedded filters using Lua language. Lua is a highly efficient programming language used mainly for embedded scripting.
  • A Linguagem Lua completa 30 anos!
    3 projects | dev.to | 17 Oct 2023
  • The Top 20 Programming Languages and Their Origins
    7 projects | dev.to | 24 Sep 2023
    Lua
  • Lua C headers, MacOS
    2 projects | /r/lua | 7 Sep 2023
    ➜ ~ brew info lua ==> lua: stable 5.4.6 (bottled) Powerful, lightweight programming language https://www.lua.org/ /opt/homebrew/Cellar/lua/5.4.6 (29 files, 788.7KB) * Poured from bottle using the formulae.brew.sh API on 2023-05-16 at 11:03:06 From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/l/lua.rb License: MIT ==> Caveats You may also want luarocks: brew install luarocks ==> Analytics install: 16,599 (30 days), 56,745 (90 days), 139,027 (365 days) install-on-request: 1,763 (30 days), 6,266 (90 days), 21,105 (365 days) build-error: 0 (30 days)
  • How do you like code documentation inline in the source code vs. as separate guides, or how would you do it?
    3 projects | /r/ProgrammingLanguages | 3 Jul 2023
    I think Lua is a good example of doing documentation well. The source code is commented only as much as needed, mainly with brief comments about things that might not be obvious and a small number of longer explanations of how the architecture works (mainly relevant to developers). It also has a super nice feature that's surprisingly rare: each file has a very short line at the top that describes what the file is, so you don't have to guess based on the filename alone. The API is documented in a single HTML file on the website that has both the high level descriptions of the language and architecture, as well as documentation for each public-facing function. The docs are maintained by hand, but the API is mostly stable, so the docs don't need to change very often.
  • Total Noob With a Question.
    2 projects | /r/learnprogramming | 27 Jun 2023
    This is using the Lua language and the Solar2d game framework

What are some alternatives?

When comparing apisix and Lua you can also consider the following projects:

Kong - 🦍 The Cloud-Native API Gateway and AI Gateway.

julia - The Julia Programming Language

haproxy-lua-http - Simple Lua HTTP helper && client for use with HAProxy.

assemblyscript - A TypeScript-like language for WebAssembly.

emissary - open source Kubernetes-native API gateway for microservices built on the Envoy Proxy

NvChad - Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.

envoy - Cloud-native high-performance edge/middle/service proxy

lua-nginx-module - Embed the Power of Lua into NGINX HTTP servers

lua-resty-auto-ssl - On the fly (and free) SSL registration and renewal inside OpenResty/nginx with Let's Encrypt.

kotlin-script-examples - Examples of Kotlin Scripts and usages of the Kotlin Scripting API

tyk-operator - Tyk Operator for Kubernetes

mal - mal - Make a Lisp