Apache APISIX是一款API,如果你需要配置就可以下载这款软件,现在很多开发都需要配置,在设计web程序的时候可以添加路由,在配置数据传输方案的时候可以配置,在开发数据库的时候也需要配置,通过配置路由和可以实现数据通信,实现数据请求,您可以将数据请求的服务流程接入Apache APISIX,通过API功能一键部署你需要的服务,一键配置路由,为用户提供更方便的添加方式;Apache APISIX使用范围非常广泛,无论是web程序还是云服务都可以通过这款软件配置!
Apache APISIX软件功能
Apache APISIX是动态,实时,高能的API。
APISIX提供了丰富的流量管理功能,例如负载平衡,动态上游,金丝雀释放,电路中断,身份验证,可观察等。
您可以使用Apache APISIX来处理传统的南北流量以及服务之间的东西向流量。它也可以用作k8s入口控制器。
Apache APISIX的技术架构:
您可以将Apache APISIX用作处理所有业务数据的流量入口,包括动态路由,动态上游,动态证书,A / B测试,金丝雀发布,蓝绿色部署,限制速率,防御恶意攻击,指标,监视警报,服务可观察,服务治理等。
云原生微服务API,可为所有API和微服务提供终极能,安全,开源和可扩展平台。Apache APISIX基于Nginx和etcd。与传统的API相比,APISIX具有动态路由和插件热加载功能,特别适合微服务系统下的API管理。
APISIX提供了灵活的自定义插件,供开发人员和企业编写自己的逻辑。
Apache APISIX软件特色
一、所有平台
原生云:与平台无关,无供应商锁定,APISIX可以从机运行到Kubernetes。
运行环境:同时支持OpenResty和Tengine。
支持ARM:不用担心基技术的锁定。
二、多协议
TCP / UDP代理:动态TCP / UDP代理。
Dubbo代理:动态HTTP到Dubbo代理。
动态MQTT代理:支持对MQTT进行负载平衡client_id,均支持MQTT 3.1。*,5.0。
gRPC pxy:代理gRPC通信。
gRPC转码:支持协议转码,以便客户端可以使用HTTP / ON访问您的gRPC API。
代理Websocket
代理协议
代理Dubbo:基于Tengine的Dubbo代理。
HTTP(S)转发代理
SSL:动态加载SSL证书。
三、全动态
热更新和热插件:不断更新其配置和插件,而无需重新启动!
代理重写:支持重写host,u,schema,enable_websocket,headers发送之前该请求的上游。
响应重写:为客户端设置自定义的响应状态代码,正文和标头。
无:在APISIX的每个阶段调用功能。
动态负载平衡:循环负载平衡。
基于散列的负载平衡:具有一致的散列会话的负载平衡。
运行状况:在上游节点上启用运行状况,并在负载平衡期间自动过滤不正常的节点,以确保系统稳定。
断路器:智能跟踪不健康的上游服务。
代理镜像:提供镜像客户端请求的功能。
流量分配:允许用户逐步引导各个上游之间的流量百分比。
四、细粒度的路由
支持完整路径匹配和前缀匹配
支持所有的Nginx内置变量条件路由,这样你就可以使用cookie,args等如布线的条件来实丝雀释放,A / B测试等。
支持各种商作为路由的判断条件,例如{"arg_age", ">", 24}
支持自定义路由匹配功能
IPv6:使用IPv6来匹配路由。
支持TTL
支持优先
支持批处理Http请求
五、安全
身份验证:key-th,JWT,basic-th,wolf-rbac
IP白名单/黑名单
引荐人白名单/黑名单
IdP:支持外部身份验证服务,例如Auth0,okta等,用户可以使用它来连接到OAuth 2.0和其他身份验证方法。
极限要求
极限数
极限并发
Anti-ReDoS(正则表达式拒绝服务):Anti ReDoS的内置策略,无需配置。
CORS为您的API启用CORS(跨域资源共享)。
I阻止程序:按I阻止客户端请求。
请求验证器
六、OPS友好
OpenTracing:支持Apache Skywalking和Zipkin
与外部服务发现一起使用:除了内置的etcd外,它还支持Consul和Nacos以及Eureka
监控和指标:普罗米修斯
集群:APISIX节点是无状态的,创建配置中心的集群,请参考etcd集群指南。
高可用:支持在同一群集中配置多个etcd地址。
仪表盘
版本控制:支持作回。
CLI:通过命令行启动停止重新加载APISIX。
:支持从本地YAML文件加载路由规则,它更加友好,例如在kubernetes(k8s)下。
全局规则:允许针对所有请求运行任何插件,例如:限制速率,IP过滤器等。
高能:单核QPS达到18k,平均延迟小于0.2毫秒。
故障注入
REST Admin API:使用REST Admin API控制Apache APISIX(默认情况下仅允许127.0.0.1访问),您可以修改allow_admin字段conf/config.yaml以指定允许调用Admin API的IP列表。另外,请注意,Admin API使用密钥身份验证来验证调用者的身份。部署前需要修改其中的admin_key字段,conf/config.yaml以确保安全。
外部志记录器:将访问志导出到外部志管理工具。(HTTP记录器,TCP记录器,Kafka记录器,UDP记录器)
舵图
七、高度可扩展
定制插件:允许钩共同相,如rewte,access,header filter,body filter和log,还允许钩balancer阶段。
自定义负载平衡算法:您可以在此balancer阶段中使用自定义负载平衡算法。
自定义路由:支持用户自己实现路由算法。
Apache APISIX教程
入门#
本指南旨在开始使用Apache APISIX,我们将配置服务,该服务将路由到由API密钥保护的公共API。
另外,我们将以以下echo端点为例,它将返回我们传递的参数。
要求
回复
让我们解构以上请求L。
通讯协定:HTTP
港口:80
主持人: httpbin.org
I /路径: /get
查询参数:foo1,foo2
先决条件#
如果您已经安装了Apache APISIX,请随意并跳至步骤2。
本指南使用Docker和Docker Compose设置Apache APISIX。
curl:本指南使用curl命令进行API测试,但是您也可以使用任何其他工具,例如Postman。
我知道您正在等待片刻,让我们开始吧!
步骤1:安装Apache APISIX #
感谢Docker,我们可以通过执行以下命令来启动Apache APISIX并启用Admin API:
下载所有需要的文件将花费一些时间,这取决于您的网络,请耐心等待。完成此步骤后,我们可以使用curlAdmin API来判断Apache APISIX是否成功启动。
我们希望返回以下数据:
第2步:创建路由#
恭喜你!您现在有一个正在运行的Apache APISIX实例!接下来让我们创建一条路线!
在我们继续之前#
你知道吗?Apache APISIX提供了功能强大的Admin API和仪表板供我们使用,但是我们将在本指南的此处使用Admin API。我们走吧!
我们可以创建一个Route并将其定位到我们的后端服务(通常称为上游),当一个Request路由到达Apache APISIX时,Apache APISIX将看到该请求的去向。
那么Apache APISIX如何知道这一点?那是因为我们有一个使用Route配置的规则列表。以下是路线数据示例
此路由意味着,当所有入站请求都httpbin.org:80符合所有这些规则(匹配的请求)时,它们将被转发到上游:
请求的HTTP方法是GET;
请求具有Host标头,其值为example.com:
请求的路径匹配/s/users/*,*表示所有子路径,例如/s/users/getAll?limit=10。
创建此路由后,我们可以使用Apache APISIX的地址访问我们的后端服务(实际上是上游):
创建上游#
阅读以上部分后,我们知道我们必须将Upstreamfor设置为Route。只需执行以下命令即可创建一个:
我们将其undbin用作负载平衡器机制,并将其设置httpbin.org:80为我们的上游目标(后端),其ID为50。有关更多字段,请参阅Admin API。
注意: Create an Upstream实际上并不是必需的,因为我们可以使用插件来拦截请求直接响应,但是假设我们需要Upstream在本指南中至少设置一个。
与上游绑定路线#
我们刚刚创建了一个上游(参考我们的后端服务),让我们绑定一条路由!
就是这样!
验证#
再次恭喜您!我们创建了一个Route和Upstream,还将它们绑定在一起。现在,让我们调用Apache APISIX来测试d ute。
哇!它会从我们的Upstream(httpbin.org实际上)返回数据,它按预期工作!
进阶#
验证号码
让我们做一些有趣的事情,由于任何人都可以访问我们Route在Step2中创建的公众,我们只希望John可以访问它。让我们使用使用者和插件来实现此保护。
首先,让我们使用key-th插件创建使用者 ,我们需要提供一个指定的密钥:John
接下来,让我们结合我们的Consumer(John)到Route,我们只需要启用的关键AUTH该插件Route:
好的,当我们Route从现在开始访问在步骤2中创建的内容时,将发生未授权错误。让我们看看如何访问它Route:
是的,刚刚添加了一个带有正确密钥的Header被叫apikey!保护任何东西都很容易Routes,对吧?
路线编号中的前缀
现在,假设您要在路由中添加前缀(例如:samplePrefix),并且不想使用host标头,则可以使用pxy-rewte插件来执行此作。
现在,您可以使用以下命令调用路由:
$ curl -i -X GET “ http://127.0.0.1:9080/samplePrefix/get?param1=foo¶m2=bar” -H “ apikey:约翰键”复制
APISIX仪表板#
Apache APISIX提供了一个仪表板,使我们可以更轻松地作Apache APISIX。
Apache APISIX常问问题
为什么要使用新的API?
微服务领域对API有新的要求:更高的灵活,更高的能要求和云原生。
APISIX和其他API之间有什么区别?
APISIX基于etcd来保存和同步配置,而不是诸如Postgres或MySQL之类的关系数据库。
这不仅消除了询,使代码更简洁,而且使配置同步更加实时。同时,系统中将没有单点,这将更有用。
另外,APISIX具有动态路由和插件的热加载功能,特别适合微服务系统下的API管理。
APISIX的能如何?
APISIX设计和开发的目标之一是获得业界最高的能。具体的测试数据可以在这里找到:基准
APISIX是能最高的API,单核QPS为23,000,平均延迟仅为0.6毫秒。
APISIX是否具有控制台界面?
是的,APISIX具有功能强大的仪表板。APISIX和APISIX Dashboard是的项目,您可以部署APISIX Dashboard通过Web界面来作APISIX。
近期热门