基于.NET CORE微服务框架 -谈谈surging的服务容错降级
一、前言
對于不久開源的surging受到不少.net同學(xué)的青睞,也受到.net core學(xué)習(xí)小組的關(guān)注,邀請加入.NET China Foundation?以方便國內(nèi).net core開源項目的推廣,我果斷接受邀請加入了隊伍進行互相交流學(xué)習(xí),最近也更新了surging新的版本
更新內(nèi)容:
1. Castle.Core 兼容性問題,下一版本會去除,解決部分用戶第一次編譯VS卡死問題
2. 增加容錯降級
3. 路由容錯重構(gòu),針對于失敗重試和失敗沒有重試,失敗回調(diào),
4.增加部分功能單元測試
5. 升級支持.NET CORE 2.0
最新地址:https://github.com/dotnetcore/surging
二、服務(wù)容錯降級介紹和示例
1.服務(wù)容錯降級介紹
對于上篇文章所提到的微服務(wù)可靠性,對于容錯和降級省略沒講,這篇介紹下容錯和降級
?
當(dāng)微服務(wù)不可用時,需要根據(jù)預(yù)置的策略做容錯處理,大部分的容錯能力和策略是公共的,因此可以放到框架中實現(xiàn)。
服務(wù)容錯
當(dāng)微服務(wù)調(diào)用失敗之后,利用容錯機制,可以在底層實現(xiàn)微服務(wù)的自動容錯處理,提升系統(tǒng)的可靠性。
?surging容錯策略包括:
?失敗自動切換機制(Failover):微服務(wù)調(diào)用失敗自動切換策略指的是當(dāng)發(fā)生服務(wù)調(diào)用異常時,重新選路,查找下一個可用的微 ? ?服務(wù)提供者。微服務(wù)發(fā)布的時候,可以指定服務(wù)的集群容錯策略。消費者可以覆蓋服務(wù)提供者的通用配置,實現(xiàn)個性化的容錯策略。
?失敗回調(diào)機制(Injection):微服務(wù)調(diào)用失敗之后,提供異常回調(diào)接口或者注入腳本,執(zhí)行微服務(wù)消費者自定義的失敗處理邏輯。
服務(wù)降級
服務(wù)因為某種原因不可用,但是流程不能直接失敗,需要本地Injection服務(wù)端實現(xiàn),比如年底購票12306大規(guī)模的訪問,導(dǎo)致查詢火車票服務(wù)不能正常工作,這時候要做業(yè)務(wù)放通,返回上次的緩存記錄或者NULL,而不是返回失敗。
降級的常用策略:
?1、服務(wù)路由短路,直接返回空。例如Injection = “ return null;”。
?3、服務(wù)路由短路,直接執(zhí)行本地模擬接口實現(xiàn)類。Injection = “ true;”。
容錯降級
當(dāng)服務(wù)不可用時,可以服務(wù)做業(yè)務(wù)邏輯放通,讓服務(wù)正常運行
自動容錯降級:是根據(jù)定義的闞值自動匹配觸發(fā),調(diào)用相關(guān)的策略進行降級。
強制降級:由運維根據(jù)系統(tǒng)運行情況手工操作觸發(fā)的。
2.服務(wù)容錯降級示例
創(chuàng)建服務(wù)容錯降級,選擇Injection策略腳本注入,直接返回null
| [Command(Strategy= StrategyType.Injection ,Injection =? @"return null;" )] |
創(chuàng)建服務(wù)容錯降級,選擇Injection策略腳本注入,直接返回Task<UserModel>
| [Command(Strategy= StrategyType.Injection ,Injection =? @"return Task.FromResult(new Surging.IModuleServices.Common.Models.UserModel ????????? { ???????????? Name=""fanly"", ???????????? Age=18 ????????? });" ,InjectionNamespaces = new? string [] { "Surging.IModuleServices.Common"})] |
創(chuàng)建服務(wù)容錯降級,選擇Injection策略直接本地模塊調(diào)用
| 1 | [Command(Strategy= StrategyType.Injection ,Injection =? @"return true;" )] |
?創(chuàng)建服務(wù)容錯降級,選擇Failover策略,自動切換重試遠程調(diào)用
| 1 | [Command(Strategy= StrategyType.Failover )] |
?配置相關(guān)參數(shù)列表
Strategy | 容錯策略 | 包括Failover和Injection |
FailoverCluster | ?故障轉(zhuǎn)移次數(shù) | 默認值:3 |
ExecutionTimeoutInMilliseconds | 執(zhí)行超時時間 | 默認值:1000 |
| RequestCacheEnabled | 是否開啟緩存 | 默認關(guān)閉 |
Injection | 腳本注入 | |
InjectionNamespaces | 注入命名空間 | 稱為程序集名稱更恰當(dāng) |
BreakeErrorThresholdPercentage | 錯誤率達到多少開啟熔斷保護 | 默認值:50 |
| BreakeSleepWindowInMilliseconds | 熔斷多少秒后去嘗試請求 | 默認值:60000 |
| BreakerForceClosed | 是否強制關(guān)閉熔斷 | |
BreakerRequestVolumeThreshold | 10秒鐘內(nèi)至少多少請求失敗,熔斷器才發(fā)揮起作用 | 默認值:20 |
MaxConcurrentRequests | 最大并發(fā)數(shù) | 10 |
三.測試
測試環(huán)境
CPU:Intel Core i7-4710MQ
內(nèi)存:16G
硬盤:1T SSD+512G HDD
網(wǎng)絡(luò):局域網(wǎng)
測試結(jié)果如下:
三、總結(jié)
surging下一版本增加緩存降級、針對文件進行配置服務(wù)容錯,降級等內(nèi)容,添加單元測試,對于API網(wǎng)關(guān)正在著手研究,下個月應(yīng)該會集成ocelot,如感興趣請多關(guān)注或者加入QQ群:615562965
相關(guān)文章
谷歌發(fā)布的首款基于HTTP/2和protobuf的RPC框架:GRPC
擁抱.NET Core,跨平臺的輕量級RPC:Rabbit.Rpc
基于DotNet Core的RPC框架(一) DotBPE.RPC快速開始
基于.NET CORE微服務(wù)框架 -surging的介紹和簡單示例 (開源)
原文地址:http://www.cnblogs.com/fanliang11/p/7224210.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的基于.NET CORE微服务框架 -谈谈surging的服务容错降级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端模块化工具--webpack学习心得
- 下一篇: [信息安全] 1.密码工具箱