.NET Core 微服務—API閘道器(Ocelot) 教程 [一]

cwsheng發表於2020-07-11

 前言:

  最近在關注微服務,在 eShop On Containers 專案中存在一個API閘道器專案,引起想深入瞭解下它的興趣。

   

 

 

一、API閘道器是什麼

  API閘道器是微服務架構中的唯一入口,它提供一個單獨且統一的API入口用於訪問內部一個或多個API。它可以具有身份驗證,監控,負載均衡,快取,請求分片與管理,靜態響應處理等。API閘道器方式的核心要點是,所有的客戶端和消費端都通過統一的閘道器接入微服務,在閘道器層處理所有的非業務功能。通常,閘道器也是提供REST/HTTP的訪問API。服務端通過API-GW註冊和管理服務。

二、Ocelot簡介

  Ocelot 是一個用.NET Core實現並且開源的API閘道器,它功能強大,包括了:路由、請求聚合、服務發現、認證、鑑權、限流熔斷、並內建了負載均衡器與Service Fabric、Butterfly Tracing整合。這些功能只都只需要簡單的配置即可完成

三、Ocelot工作流程

  a)  基本整合:

     根據configuration.json(後續文章會介紹詳細內容)中配置內容,把接收所有的客戶端請求,路由到對應的下游伺服器進行處理,再將請求結果返回。而這個上下游請求的對應關係也被稱之為路由。

 

  

b)  整合IdentityServer:

   當我們涉及到授權認證的時候,我們可以跟Identity Server進行結合。當閘道器需要請求認證資訊的時候會與Identity Server伺服器進行互動來完成。

 

    

  c)  閘道器叢集配置:

    可以部署多臺Ocelot閘道器。當然這個時候在多臺閘道器前,你還需要一臺負載均衡器

    

     

  d)  結合Consul服務發現

    在Ocelot已經支援簡單的負載功能,當下遊服務存在多個結點的時候,Ocelot能夠承擔起負載均衡的作用。但是沒提供健康檢查,服務的註冊也只能通過手動在配置檔案裡面新增完成。這不夠靈活並且在一定程度下會有風險。這個時候我們就可以用Consul來做服務發現,它能與Ocelot完美結合。

    

  e)  結合Service Fabric

       

    

下一步:  

  接下來我們就一起來應用Ocelot實現路由、許可權認證、服務發現、負載均衡等等相關功能。在程式碼中進一步深入瞭解。

    • 包括如何配置路由
    • 授權認證服務接入
    • 負載均衡使用
    • 服務發現結合
    • …… 

引用:

  官方文件:https://ocelot.readthedocs.io/en/latest/introduction/bigpicture.html

 

相關文章