中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

LindDotNetCore~Polly組件對微服務場(chang)景(jing)的價值

回到目錄

Polly是一(yi)個開源框架,在github上可以找到(dao),被善友大(da)哥(ge)收錄,也是.App vNext的一(yi)員!

App vNext:

GitHub:

NanoFabric是一個開源的微(wei)服務架構,也是善(shan)友大(da)哥推薦的:

對于NanoFabric來說,它集成了很多.net core開源項目,其中包括了Consul + .NET Core + Polly + Ocelot + Exceptionless + IdentityServer,你(ni)是否聞到了某種味(wei)道!

Polly給我們帶來了什么

  1. 對http請求提供重試機制
  2. 對指定異常進行特殊的處理
  3. 提供了多種策略

程序中的使用

封裝一(yi)個方法,對外提供一(yi)個委托的(de)參數,把需要(yao)進行polly的(de)代碼段輸入進來即(ji)可(ke),對于http,數據庫,網(wang)絡通(tong)訊等非(fei)常(chang)必要(yao),因(yin)為(wei)這些場景可(ke)能存在不穩(wen)定的(de)因(yin)素!polly正好可(ke)以幫我們非(fei)常(chang)

友好的解決它,下面的代(dai)碼(ma)主(zhu)要實(shi)現了(le)對所有(you)異常的跟(gen)蹤,然后每1秒重新執行一次(ci),可以重試5次(ci)!

        /// <summary>
        /// polly重試機制
        /// </summary>
        private static HttpResponseMessage retryTwoTimesPolicy(Func<HttpResponseMessage> action)
        {
            var policy = Policy
                .Handle<Exception>()
                .WaitAndRetry(
                 5,
                 retryAttempt => TimeSpan.FromSeconds(Math.Pow(1, retryAttempt)),
                 (ex, timer, c, i) =>
                 {
                     logger.Logger_Info($"執行失敗! 重試次數 {c}");
                     logger.Logger_Info($"異常來自(zi) {ex.GetType().Name}");
                 });
            return policy.Execute(action);
        }

我們之(zhi)前的httpHelper請求對象,也可以引(yin)入(ru)polly機制(zhi),全局進(jin)行控(kong)制(zhi)!

        /// <summary>
        /// GET請(qing)求(qiu)
        /// </summary>
        /// <param name="requestUri">服務地址</param>
        /// <param name="nv">參數鍵值</param>
        /// <returns></returns>
        public static HttpResponseMessage Get(
            string requestUri,
            NameValueCollection nv)
        {
            try
            {

                return retryTwoTimesPolicy(() =>
                {
                    var result = httpClient.GetAsync(GeneratorUri(requestUri, nv)).Result;
                    UnGZip(result);
                    return result;
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

自己開兩個api進程(cheng),一個是對外提供服務(wu),別一個作(zuo)為主服務(wu)器,被(bei)其它進行(xing)訪問,當它掛了(le)之后(hou),其實進行(xing)可以(yi)通(tong)過polly進行(xing)重試!

感謝各位的閱讀!

微服(fu)務(wu)來了(le)(le),但需要我們關(guan)注的點多了(le)(le)!

奮斗吧!

回到目錄

posted @ 2018-01-30 20:45  張占嶺  閱讀(923)  評論(0)    收藏  舉報