网关是整个服务API请求的入口,可以统一对所有请求进行处理
作用:可以实现用户的验证登录、解决跨域、日志拦截、权限控制、限流、熔断、负载均衡、黑名单与白名单机制等。
云原生、高性能、可扩展的微服务 API 开源网关
apache项目
基于OpenResty(Nginx+Lua)
使用etcd做配置中心, 服务注册发现中心
Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务
Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 http://Rambler.ru 站点(俄文:Рамблер)开发的
使用C语言开发
worker_processes 1; error_log logs/error.log; events { worker_connections 1024; } http { server { listen 8080; location / { default_type text/html; # 响应内容, 使用lua语言, 或指向lua脚本 content_by_lua_block { ngx.say("<p>hello, world</p>") } } } }
再次回顾apisix架构
看完上面nginx介绍, openresty介绍以及openresty的使用, 可以理解apisix的实现
一个请求经过nginx, 使用openresty作为基础, 对这个请求生命周期实现一些业务逻辑
基于apisix核心框架后, 使用插件的形式进行业务实现, 并可插拔式地对请求进行处理
etcd 是一个高度一致的分布式键值存储
它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据
Go语言编写
在apisix里, apisix使用etcd作为配置中心, 服务注册发现中心
高性能, 灵活性高
自定义插件热部署, 动态路由
源码更为简洁,二次开发难度更低
https://github.com/apache/apisix
https://docs.konghq.com/gateway/
https://apisix.apache.org/zh/docs/apisix/FAQ