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,還將它們綁定在一起?,F在,讓我們調用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。