Guardian Angel is a lightweight middleware for service-oriented architecture.
What is the service-oriented
here ?
big services
: export a http(s) apismall services
- microservices / nanoservices
- serverless / FaaS
We don't want to argument the term, we just want to do right job. :-)
Current Support:
- custom your middleware with golang plugin ( third-party-middleware )
Current Middlewares:
- openai : as a gateway of openai, custom your key and limit the request count
- hello : for example
- jwt : decode JWT (from
Authorization
in HTTP Request Header), and setX-User-Id
header by user id - addauth : manage
access_token
andrefresh_token
, add JWT withAuthorization
in HTTP Request Header auto - openapi : authorize permissions and validate request args with OpenAPI 2.0 Spec Document of the backend service
- debug : print http request data when debug is enable
- openapi-response : check the response for testing
ga 架构示例:
- 支持启动任意数量的 forwarder ,每个 forwarder 可以自由搭配任意数量的 middlewares
- 支持 golang plugin 方式写自定义的 middleware 。 可以查看示例: hello
- 支持提供 TLS 服务:指定证书和私钥或使用 letsencrypt 申请并自动更新证书(参考 caddy 和 traefik )。避免使用文件系统存放证书,而是使用 etcd 存放证书(分布式)。
- 使用 etcd 或类似服务作为统一分布式存储,主程序和 middleware 都可以使用 etcd 存储和读取数据及配置,提供统一内部 API 供主程序和 middleware 使用。
- 存储可以考虑单机(kv)或分布式(etcd)2种方式,提供统一的 store 抽象。
- main, middleware 的配置和数据(监控),以及 let's encrypt 的证书都需要存储。