基於.NET CORE微服務架構 -談談Cache中介軟體和緩衝降級

來源:互聯網
上載者:User

標籤:遠程服務   eof   title   and   err   otn   build   修複   qq群   

1 、前言

surging受到不少.net同學的青睞,也提了不少問題,提的最多的是什麼時候整合API Gateway,在這裡回答大家最近已經開始著手研發,應該在1,2個月內會有個初版API Gateway,其它像Token身分識別驗證,限流降級等功能完成時間會往後推

最近也更新了surging新的版本

更新內容:

1. Cache中介軟體基於Redis 所依賴的第三方庫已將servicestack.redis轉成stackexchange
2. 增加緩衝降級
3. 增加攔截緩衝降級的例子

開源地址:https://github.com/dotnetcore/surging

2 Cache中介軟體的使用

  在剝析surging的架構思想這篇文章中大致提了下Cache中介軟體,大家也對Cache中介軟體有了初步印象,這一節我們將談談怎麼使用Cache中介軟體

1.建立設定檔

cacheSettings.json

{     "CachingSettings": [      {        "Id": "ddlCache",        "Class": "Surging.Core.Caching.RedisCache.RedisContext,Surging.Core.Caching",        "Properties": [          {            "Name": "appRuleFile",            "Ref": "rule"          },          {            "Name": "dataContextPool",            "Ref": "ddls_sample",            "Maps": [              {                "Name": "Redis",                "Properties": [                  {                    "value": "127.0.0.1:6379::1"                  }                ]              },              {                "Name": "MemoryCache"              }            ]          },          {            "Name": "defaultExpireTime",            "value": "120"          },          {            "Name": "connectTimeout",            "Value": "120"          },          {            "Name": "minSize",            "Value": "1"          },          {            "Name": "maxSize",            "Value": "10"          }        ]      }    ]}

可以支援多個執行個體配置通過配置id來標識唯一,並且通過配置Maps,來初始化服務節點列表,通過雜湊一致性來選擇服務節點

配置參數列表

參數 作用

CachingSettings

包含多個執行個體的父級配置節

Id

唯一標識

Class

對於Context的適配
Properties Cache 相關配置節

Maps

佈建服務節列表

minSize

對象池最小數

maxSize

objectpool最大數

2.代碼配置

 

        /// <summary>        /// 配置快取服務        /// </summary>        public static void ConfigureCache(IConfigurationBuilder build)        {            build              .AddCacheFile("cacheSettings.json", optional: false);        }   

以上我們就完成了緩衝中介軟體配置,接下來就可以通過以下代碼進行調用

基於redis的緩衝調用

  cacheProvider = CacheContainer.GetInstances<ICacheProvider>(“ddlCache.Redis”);

 基於MemoryCache的緩衝調用

CacheContainer.GetInstances<ICacheProvider>("MemoryCache")
3 緩衝降級

對於服務所返回的資料,有些是不需要經常修改,可以通過緩衝返回資料,比如商品應用,商品分類,商品列表、使用者資訊,訂單資訊,購物車等,通過以上需求我們就要對於proxy進行攔截,返回緩衝或者刪除緩衝。

對於緩衝會有以下疑問

  1. 資料一致性:對於服務是分布式部署在各台伺服器上, 緩衝儲存讀取也應該支援分布式,所以應該選擇支援分布式的緩衝架構,如:redis,couchbase,membercache
  2. 快取命中率:在無命中的情況下,無法直接通過緩衝擷取到想要的資料,而直接通過調用遠程服務擷取資料,這樣就會增加回應時間和影響輸送量,所以我們必須參考工具進行監控

緩衝降級

 surging的緩衝降級就是針對於proxy進行攔截,如果有快取資料,則返回快取資料,否則調用Proceed方法調用遠程服務。

 在資料進行update,delete的時候就需要針對於依賴的緩衝進行刪除,可以通過proxy進行攔截的方式把緩衝進行刪除

 緩衝降級有以下優點

1.高效能:可以減少回應時間和提高輸送量

2.高效:針對於商務邏輯的設計,無需考慮緩衝,做到了無縫整合

以下通過樣本來介紹如何使用

在業務介面方法上添加如下特性

[Command(Strategy= StrategyType.Failover,FailoverCluster =3,RequestCacheEnabled =true)]  //RequestCacheEnabled =true 就是啟用緩衝

攔截擷取緩衝

 [InterceptMethod(CachingMethod.Get, Key = "GetUser_id_{0}", Mode = CacheTargetType.Redis, Time = 480)]

攔截刪除緩衝

[InterceptMethod(CachingMethod.Remove, "GetUser_id_{0}", "GetUserName_name_{0}", Mode = CacheTargetType.Redis)]

應用[CacheKey]來標識緩衝Key,如

    public class UserModel    {        [CacheKey(1)]        public int UserId { get; set; }        public string Name { get; set; }        public int Age { get; set; }    }

配置攔截器

.AddClientIntercepted(typeof(CacheProviderInterceptor))
4.測試

測試環境

CPU:Intel Core i7-4710MQ

記憶體:16G

硬碟:1T SSD+512G HDD

網路:區域網路

開啟redis測試結果如下:停用Redis測試結果如下: 5、總結

已經開始研發API Gateway,近期更新只會修複BUG和提交單元測試。如感興趣請多關注或者加入QQ群:615562965

 

基於.NET CORE微服務架構 -談談Cache中介軟體和緩衝降級

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.