Skip to content

Commit

Permalink
docs: update Architecture docs (apache#7568)
Browse files Browse the repository at this point in the history
* docs: update Architecture docs
* move deployment guide and reference in installation docs
* add license header
  • Loading branch information
pottekkat authored and Liu-Junlin committed Nov 4, 2022
1 parent 8df7bf8 commit d330371
Show file tree
Hide file tree
Showing 5 changed files with 195 additions and 188 deletions.
34 changes: 20 additions & 14 deletions docs/en/latest/architecture-design/apisix.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
---
title: APISIX
title: Architecture
keywords:
- API gateway
- Apache APISIX
- APISIX architecture
description: Architecture of Apache APISIX—the Cloud Native API Gateway.
---

<!--
#
# Licensed to the Apache Software Foundation (ASF) under one or more
Expand All @@ -21,25 +25,27 @@ title: APISIX
#
-->

## Apache APISIX : Software Architecture
APISIX is built on top of Nginx and [ngx_lua](https://github.com/openresty/lua-nginx-module) leveraging the power offered by LuaJIT. See [Why Apache APISIX chose Nginx and Lua to build API Gateway?](https://apisix.apache.org/blog/2021/08/25/why-apache-apisix-chose-nginx-and-lua/).

![flow-software-architecture](https://raw.githubusercontent.com/apache/apisix/master/docs/assets/images/flow-software-architecture.png)

![flow-software-architecture](../../../assets/images/flow-software-architecture.png)
APISIX has two main parts:

Apache APISIX is a dynamic, real-time, high-performance cloud-native API gateway. It is built on top of NGINX + ngx_lua technology and leverages the power offered by LuaJIT. [Why Apache APISIX chose Nginx and Lua to build API Gateway?](https://apisix.apache.org/blog/2021/08/25/why-apache-apisix-chose-nginx-and-lua/)
1. APISIX core, Lua plugin, multi-language Plugin runtime, and the WASM plugin runtime.
2. Built-in Plugins that adds features for observability, security, traffic control, etc.

APISIX is divided into two main parts:
The APISIX core handles the important functions like matching Routes, load balancing, service discovery, configuration management, and provides a management API. It also includes APISIX Plugin runtime supporting Lua and multilingual Plugins (Go, Java , Python, JavaScript, etc) including the experimental WASM Plugin runtime.

1. APISIX core, including Lua plugin, multi-language plugin runtime, Wasm plugin runtime, etc.
2. Feature-rich variety of built-in plugins: including observability, security, traffic control, etc.
APISIX also has a set of [built-in Plugins](https://apisix.apache.org/docs/apisix/plugins/batch-requests) that adds features like authentication, security, observability, etc. They are written in Lua.

In the APISIX core, important functions such as route matching, load balancing, service discovery, management API, and basic modules such as configuration management are provided. In addition, APISIX plugin runtime is also included, providing the runtime framework for native Lua plugins and multilingual plugins, as well as the experimental Wasm plugin runtime, etc. APISIX multilingual plugin runtime provides support for various development languages, such as Golang, Java, Python, JS, etc.
## Request handling process

APISIX currently has various plugins built in, covering various areas of API gateways, such as authentication and authentication, security, observability, traffic management, multi-protocol access, and so on. The plugins currently built into APISIX are implemented using native Lua. For the introduction and usage of each plugin, please check the [documentation](https://apisix.apache.org/docs/apisix/plugins/batch-requests) of the relevant plugin.
The diagram below shows how APISIX handles an incoming request and applies corresponding Plugins:

## Plugin Loading Process
![flow-load-plugin](https://raw.githubusercontent.com/apache/apisix/master/docs/assets/images/flow-load-plugin.png)

![flow-load-plugin](../../../assets/images/flow-load-plugin.png)
## Plugin hierarchy

## Plugin Hierarchy Structure
The chart below shows the order in which different types of Plugin are applied to a request:

![flow-plugin-internal](../../../assets/images/flow-plugin-internal.png)
![flow-plugin-internal](https://raw.githubusercontent.com/apache/apisix/master/docs/assets/images/flow-plugin-internal.png)
160 changes: 0 additions & 160 deletions docs/en/latest/architecture-design/deployment-role.md

This file was deleted.

28 changes: 14 additions & 14 deletions docs/en/latest/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@
"version": "2.15.0",
"sidebar": [
{
"type": "category",
"label": "Architecture Design",
"items": [
"architecture-design/apisix",
"architecture-design/deployment-role"
]
"type": "doc",
"id": "getting-started"
},
{
"type": "doc",
"id": "installation-guide"
},
{
"type": "doc",
"id": "architecture-design/apisix"
},
{
"type": "category",
Expand All @@ -25,14 +29,6 @@
"terminology/upstream"
]
},
{
"type": "doc",
"id": "getting-started"
},
{
"type": "doc",
"id": "installation-guide"
},
{
"type": "category",
"label": "Plugins",
Expand Down Expand Up @@ -244,6 +240,10 @@
"xrpc"
]
},
{
"type": "doc",
"id": "deployment-modes"
},
{
"type": "doc",
"id": "health-check"
Expand Down
Loading

0 comments on commit d330371

Please sign in to comment.