日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

基于.NET CORE微服务框架 -谈谈Cache中间件和缓存降级

發布時間:2023/12/4 asp.net 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于.NET CORE微服务框架 -谈谈Cache中间件和缓存降级 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、前言

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

最近也更新了surging新的版本

更新內容:

1. Cache中間件基于Redis 所依賴的第三方庫已將servicestack.redis轉成stackexchange?
2. 增加緩存降級
3. 增加攔截緩存降級的例子

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

2.軟件環境

IDE:Visual Studio 2017 15.3 Preview ,vscode
框架:.NET core 2.0

vscode 技術支持:

周松柏(zsbfre)

3、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的適配
PropertiesCache 相關配置節

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")

4、緩存降級

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

對于緩存會有以下疑問

  • 數據一致性:對于服務是分布式部署在各臺服務器上, 緩存存儲讀取也應該支持分布式,所以應該選擇支持分布式的緩存框架,如:redis,couchbase,membercache

  • 緩存命中率:在無命中的情況下,無法直接通過緩存獲取到想要的數據,而直接通過調用遠程服務獲取數據,這樣就會增加響應時間和影響吞吐量,所以我們必須引用工具進行監控

  • 緩存降級

    ?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))

    5.測試

    測試環境

    CPU:Intel Core i7-4710MQ

    內存:16G

    硬盤:1T SSD+512G HDD

    網絡:局域網

    開啟redis測試結果如下:

    停用Redis測試結果如下:

    ?

    6、總結

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

    相關文章

    • 谷歌發布的首款基于HTTP/2和protobuf的RPC框架:GRPC

    • 擁抱.NET Core,跨平臺的輕量級RPC:Rabbit.Rpc

    • 基于DotNet Core的RPC框架(一) DotBPE.RPC快速開始

    • 基于.NET CORE微服務框架 -surging的介紹和簡單示例 (開源)

    • 剝析surging的架構思想

    • 基于.NET CORE微服務框架 -談談surging的服務容錯降級

    原文地址:http://www.cnblogs.com/fanliang11/p/7256069.html


    .NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

    總結

    以上是生活随笔為你收集整理的基于.NET CORE微服务框架 -谈谈Cache中间件和缓存降级的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。