歡迎光臨
每天分享高質量文章

【NET CORE微服務一條龍應用】第一章 網關使用與配置

簡介

  微服務的系統應用中,網關係統使用的是ocelot,ocelot目前已經比較成熟了

  ocelot就不做介紹了,等整體介紹完後再進行各類擴展介紹,ocelot原始碼地址:https://github.com/ThreeMammals/Ocelot

  ocelot目前由很多功能組件組成,每個組件都可以根據自己的實際情況進行擴展(暫時不做過多介紹)

  本文主要介紹ocelot網關使用中個人認為應該最先處理的東西

健康檢查

  在實際的應用中網關專案都會部署多台,然後通過nginx進行軟負載,在更新部署網關專案的過程中服務肯定是無法使用,這個時候我們就需要利用nginx的健康檢查機制進行控制

  網關需要給nginx提供一個健康檢查地址,ocelot使用的url path地址進行路由匹配,當匹配不到時會傳回404,所以我們需要單獨處理一個健康檢查地址

  Ocelot提供了一個中間件配置替換的方法OcelotPipelineConfiguration,我們對OcelotPipelineConfiguration的PreErrorResponderMiddleware中間件方法進行擴展,代碼如下:

網關和路由配置

  網關的配置包含四個部分,ReRoutes、DynamicReRoutes、Aggregates、GlobalConfiguration,

  ocelot配置的獲取預設是使用配置檔案的方式,上面已經說了網關一般都會部署多台,使用檔案配置還是存在一定弊端

  ocelot的配置獲取方法是IFileConfigurationRepository接口,所以如果我們實現了此接口就可以滿足配置儲存方式的擴展,目前已擴展mysql和redis,代碼如下

  redis:

mysql:

可以看到四項配置里並不是全部都進行可配置化,如果有需求可以自行增加欄位實現

redis的儲存是大json方式,而mysql是一條一條的,因為配置的管理是以mysql為主,然後同步到其他儲存介質中的

網關配置的更新

 有加載就有更新,在ocelot中配置的更新是使用自己的實現來完成配置的熱更新,方式如下

 1、配置檔案方式是通過配置檔案的IOptionsMonitor的OnChange方式重新加載配置信息

 2、第三方儲存方式是通過預設實現的FileConfigurationPoller方法定時(預設1s)取獲取配置信息的

 所以我們擴展的獲取配置形式,在註冊的時候要把FileConfigurationPoller HostedService一同註入進去,代碼如下

其中涉及到Bucket.DbContext和Bucket.Redis組件很簡單,也可自行實現

配置的管理

  其實最開始的時候,使用的是consul儲存配置,然後通過網關自帶的配置接口進行配置的管理,但是在ocelot的一次升級的時候出現了一個問題(配置信息丟失),雖然當時修改了ocelot的原始碼解決了,後來還是決定擴展儲存方式,所以上面的獲取配置接口的set方法都不實現了

  上面已經說了是已mysql進行配置儲存然後同步到其他介質上,所以我們只要維護好mysql資料庫就可以了

  具體代碼就不貼了,後續會進行具體介紹,管理專案地址:github地址,截幾張管理圖

 

 

原文地址:https://www.cnblogs.com/tianxiangzhe/p/10336923.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章彙總 http://www.csharpkit.com


 

    閱讀原文

    赞(0)

    分享創造快樂