學習筆記----微服務網關API

 

前言

書接上文,上文書說到:微服務架構概念、優缺點、劃分原則以及技術選擇,既然指導思想有了,那就用實踐學習來檢驗。

一,網關API

1,何爲網關API?

網關網關API——整個系統的統一入口,往上,接收一切外界請求;往下,通知內部所有服務。簡單來講就是一個“門”。

2,網關API功能作用

(1)身份認證與授權

這“家”裏窮不窮富不富的先不說,有門了就不能隨便讓人進,這要來壞人那就得出事,所以得給門加個鎖,有鑰匙(token)的您裏面請,沒鑰匙的........

當然了進來了也讓人隨便跑,這“二奶奶”能不能去“大奶奶”的房還得看老爺的意思,爲了家裏和諧還是各自回廂房歇着。

身份認證與授權:保證系統安全訪問

(2)負載均衡

老爺家挺大的,一到過年過節家裏客人也多;家裏大少爺飽讀詩書又有功名在身,平時喜好交朋友;老爺甚是喜歡老早就把東西廂房給了他;

看門的一聽是找大少爺的,不是讓去東廂房就是讓去西廂房,把這人情事故處理的妥妥當當的。

(3)訪問限流

看門的這來的人太多把門都快擠壞了,趕緊把情況報告給老爺,老爺一方面怕大少爺會客累壞身子,另一方面怕門出問題這都是事;

“今日各位朋友遠道而來,令寒舍蓬蓽生輝倍感榮幸,大家的熱情鄙人和犬子都感受到,奈何這家小門小實在照顧不周,眼看天色也不早了,、

還請離家近的朋友把機會留給遠方的朋友,遠方的朋友也請你們排排隊 這樣也能快一點把事辦了”老爺說完一拱手就見門口的情況好了很多,轉身就回屋了。

......東街李員外意外路過看了十分眼紅,心裏暗下決定趕明照着這個給也弄一個。。。

二,Ocelot網關搭建

李員外也是實幹主義的人說幹就幹,上到性能檢查下到實施全部親力親爲,最終綜合考慮就用Ocelot

官網:https://ocelot.readthedocs.io/

1,第一步創建一個.net core web 項目


  

 

 

 2.使用 NuGet安裝Ocelot的相關組件
  

 

  因爲框架使用的是 .net core 3.1 所以只能安裝16.0一下版本,,,

 3,修改程序配置 

   在startup 裏面添加ocelot服務

     

 

 

       在Program 裏面添加ocelot配置

 

   

 

 

 

    ocelot.json:

{
  "Routes": [
    {
      "DownstreamPathTemplate": "/product/{path}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 4001
        },
        {
          "Host": "localhost",
          "Port": 4002
        }
      ],
      "UpstreamPathTemplate": "/api/product/{path}",
      "UpstreamHttpMethod": [
        "Get",
        "Post"
      ],
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    },
    {
      "DownstreamPathTemplate": "/order/{path}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 4050
        }
      ],
      "UpstreamPathTemplate": "/api/order/{path}",
      "UpstreamHttpMethod": [
        "Get",
        "Post"
      ],
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    }
  ],
  "GlobalConfiguration": {
    "BaseUrl": "http://localhost:4000"
  }
} 

 

 參數說明:
  DownstreamPathTemplate:下游具體服務地址,{path}佔位變量,"path"可以是其他字符支持自定義

  DownstreamScheme:下游請求方案,可以使用:http/https

  DownstreamHostAndPorts:下游服務的主機和端口集合,對下游服務的請求進行負載平衡, Ocelot 允許添加多個條目,然後選擇一個負載平衡器

  UpstreamPathTemplate:上游路徑地址,上游的路徑無需和下游一致

  UpstreamHttpMethod:上游接受請求方式集合:[ "Get", "Post", "Put", "Delete" ]

  LoadBalancerOptions:負載均衡平衡器,4個參數可選RoundRobin - 循環訪問,NoLoadBalancer - 從配置或服務發現中獲取第一個可用服務,"LeastConnection" 請求最少的服務發送新請求,

  CookieStickySessions - 使用 cookie 將所有請求粘貼到特定服務器

  GlobalConfiguration:全局配置,BaseUrlocelot網關運行的地址

  

  其中product 設置使用兩個端4001,4002 模擬負載均衡,按上述簡單配置不出問題運行效果如下:
  

  

 

 

 

 

 客戶端對服務的調用使用網關進行統一中轉,簡化客戶端請求配置,服務端也做跨域也方便,避免了服務地址直接暴露

 如果ocelot.json 中下游端口等其他的配置經常變化修改對整個系統並不是很友好,所以Ocelot 允許指定服務發現提供者,並將使用它來查找 Ocelot 將請求轉發到的下游服務的主機和端口

 

 下一篇 Ocelot中的服務發現、註冊、健康檢查以及簡單的服務治理

 

--------to be continue --------


 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章