网关属于所有服务的第一入口,那么这个入口应该具备什么样的能力,如何设计?在微服务环境下的网关如何对接完成业务所需要的对接能力呢?
APISIX介绍
ApacheAPISIX是一个动态、实时、高性能的API网关,基于Nginx网络库和etcd实现,提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。
你可以使用ApacheAPISIX来处理传统的南北向流量,以及服务间的东西向流量,也可以当做k8singresscontroller来使用。
APISIX技术架构图
特性
APISIX当做流量入口,来处理所有的业务数据,包括动态路由、动态上游、动态证书、A/B测试、金丝雀发布(灰度发布)、蓝绿部署、限流限速、抵御恶意攻击、监控报警、服务可观测性、服务治理等
全平台
云原生:平台无关,没有供应商锁定,无论裸机还是Kubernetes,APISIX都可以运行。运行环境:OpenResty和Tengine都支持。支持ARM64:不用担心底层技术的锁定。多协议
TCP/UDP代理:动态TCP/UDP代理。动态MQTT代理:支持用client_id对MQTT进行负载均衡,同时支持MQTT3.1.*和5.0两个协议标准。gRPC代理:通过APISIX代理gRPC连接,并使用APISIX的大部分特性管理你的gRPC服务。gRPC协议转换:支持协议的转换,这样客户端可以通过HTTP/JSON来访问你的gRPCAPI。Websocket代理ProxyProtocolDubbo代理:基于Tengine,可以实现Dubbo请求的代理。HTTP(S)反向代理SSL:动态加载SSL证书。全动态能力
热更新和热插件:无需重启服务,就可以持续更新配置和插件。代理请求重写:支持重写请求上游的host、uri、schema、enable_websocket、headers信息。输出内容重写:支持自定义修改返回内容的statuscode、body、headers。Serverless:在APISIX的每一个阶段,你都可以添加并调用自己编写的函数。动态负载均衡:动态支持有权重的round-robin负载平衡。支持一致性hash的负载均衡:动态支持一致性hash的负载均衡。健康检查:启用上游节点的健康检查,将在负载均衡期间自动过滤不健康的节点,以确保系统稳定性。熔断器:智能跟踪不健康上游服务。代理镜像:提供镜像客户端请求的能力。精细化路由
支持全路径匹配和前缀匹配支持使用Nginx所有内置变量做为路由的条件,所以你可以使用cookie,args等做为路由的条件,来实现灰度发布、A/B测试等功能支持各类操作符做为路由的判断条件,比如{arg_age,,24}支持自定义路由匹配函数IPv6:支持使用IPv6格式匹配路由支持路由的自动过期(TTL)支持路由的优先级支持批量Http请求安全防护
多种身份认证方式:key-auth,JWT,basic-auth,wolf-rbac。IP黑白名单Referer白名单IdP支持:支持外部的身份认证服务,比如Auth0,Okta,Authing等,用户可以借此来对接Oauth2.0等认证方式。限制速率限制请求数限制并发防御ReDoS(正则表达式拒绝服务):内置策略,无需配置即可抵御ReDoS。CORS:为你的API启用CORS。URI拦截器:根据URI拦截用户请求。请求验证器。运维友好
OpenTracing可观测性:支持ApacheSkywalking和Zipkin。对接外部服务发现:除了内置的etcd外,还支持Consul和Nacos的DNS发现模式,以及Eureka。监控和指标:Prometheus集群:APISIX节点是无状态的,创建配置中心集群请参考etcdClusteringGuide。高可用:支持配置同一个集群内的多个etcd地址。控制台:内置控制台来操作APISIX集群。版本控制:支持操作的多次回滚。CLI:使用命令行来启动、关闭和重启APISIX。单机模式:支持从本地配置文件中加载路由规则,在kubernetes(k8s)等环境下更友好。全局规则:允许对所有请求执行插件,比如黑白名单、限流限速等。高性能:在单核上QPS可以达到18k,同时延迟只有0.2毫秒。故障注入RESTAdminAPI:使用RESTAdminAPI来控制ApacheAPISIX,默认只允许.0.0.1访问,你可以修改conf/config.yaml中的allow_admin字段,指定允许调用AdminAPI的IP列表。同时需要注意的是,AdminAPI使用keyauth来校验调用者身份,在部署前需要修改conf/config.yaml中的admin_key字段,来保证安全。外部日志记录器:将访问日志导出到外部日志管理工具。(HTTPLogger,TCPLogger,KafkaLogger,UDPLogger)高度可扩展
自定义插件:允许挂载常见阶段,例如init,rewrite,access,balancer,headerfiler,bodyfilter和log阶段。自定义负载均衡算法:可以在balancer阶段使用自定义负载均衡算法。自定义路由:支持用户自己实现路由算法。性能测试
8核心服务器来压测APISIX,QPS可以达到,同时延时只有0.2毫秒。
后续努力推出优质的内容
你的点赞与
转载请注明:http://www.0431gb208.com/sjszjzl/2326.html