<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      使用 Microsoft.Extensions.ServiceDiscovery 進行服務發現并調用

      簡介

      在現代微服務架構中,服務發現(Service Discovery)是一項關鍵功能。它允許微服務動態地找到彼此,而無需依賴硬編碼的地址。以前如果你搜 .NET Service Discovery,大概率會搜到一大堆 Eureka,Consul 等的文章。現在微軟為我們帶來了一個官方的包:Microsoft.Extensions.ServiceDiscovery。這個包出自 Aspire 項目,提供了一個簡便的方式在 .NET 中實現服務發現。

      安裝 Nuget 包

      首先,需要安裝 Microsoft 提供的 Service Discovery 包。使用以下命令添加包到你的項目中:

      dotnet add package Microsoft.Extensions.ServiceDiscovery
      

      這一步確保你的項目具有使用 Service Discovery 所需的依賴項。

      配置和注冊服務

      接下來,需要在項目中配置和注冊 Service Discovery。打開 Program.csStartup.cs 文件,并添加以下代碼:

      builder.Services.AddServiceDiscovery();
      
      builder.Services.ConfigureHttpClientDefaults(static http =>
      {
          http.AddServiceDiscovery();
      });
      

      這段代碼將 Service Discovery 注冊到依賴注入容器中,并配置默認的 HTTP 客戶端使用 Service Discovery。

      配置服務端點

      為了讓 Service Discovery 知道如何找到其他服務,需要在配置文件(如 appsettings.json)中定義服務端點。例如:

      {
        "Services": {
          "weatherReport": {
            "http": [
              "localhost:5089",
              "127.0.0.1:5089"
            ],
            "https": []
          }
        }
      }
      

      在這個配置中,我們定義了名為 weatherReport 的服務的 HTTP 端點。Service Discovery 將使用這些信息來查找和訪問該服務。

      使用服務名進行 HTTP 調用

      配置完成后,可以通過服務名稱進行 HTTP 調用。以下代碼展示了如何使用 IHttpClientFactory 進行服務調用:

      app.MapGet("/report", async (IHttpClientFactory factory) =>
      {
          const string serviceName = "weatherReport";
          var client = factory.CreateClient();
          var response = await client.GetAsync($"http://{serviceName}/weatherforecast");
          var content = await response.Content.ReadAsStringAsync();
      
          return content;
      });
      

      這段代碼創建了一個 HTTP 客戶端,通過服務名 weatherReport 發起請求,并返回響應內容。

      啟動服務后嘗試進行調用:

      通過觀察日志可以看到 http://weatherreport/weatherforecast 被轉換成 http://127.0.0.1:5089http://localhost:5089 的 http 調用。

      負載均衡

      如果服務配置了多個 endpoint 。 那么進行服務調用的時候我們往往需要按實際情況配置 Load-balancing 的策略:

      builder.Services.AddHttpClient<CatalogServiceClient>(
          static client => client.BaseAddress = new("http://weatherReport"));
        .AddServiceDiscovery(RandomServiceEndpointSelector.Instance);
      
      • PickFirstServiceEndpointSelectorProvider.Instance: 總是調用第一個

      • RoundRobinServiceEndpointSelectorProvider.Instance: 輪詢調用

      • RandomServiceEndpointSelectorProvider.Instance: 隨機調用

      • PowerOfTwoChoicesServiceEndpointSelectorProvider.Instance: 解釋太長看英文原文吧。Power-of-two-choices, which attempts to pick the least heavily loaded endpoint based on the Power of Two Choices algorithm for distributed load balancing, degrading to randomly selecting an endpoint when either of the provided endpoints do not have the IEndpointLoadFeature

      總結

      Service Discovery 是實現微服務架構的重要組件。在 .NET 中,通過簡單的配置和使用,可以不用 hardcode IP 跟 port 而使用服務名,可以大大簡化服務間的調用。同時還能配置不同的調用策略,進行負載均衡。

      關注我的公眾號一起玩轉技術

      posted @ 2024-09-09 00:51  Agile.Zhou  閱讀(1015)  評論(6)    收藏  舉報
      主站蜘蛛池模板: 国产精品久久欧美久久一区| 开心五月激情五月俺亚洲| 久久无码中文字幕免费影院| 中文字幕亚洲精品人妻| 樱桃视频影院在线播放| 一本本月无码-| 国产精品亚洲а∨天堂2021| 国产成人午夜一区二区三区 | 国产偷自视频区视频| 国产成人欧美日韩在线电影| 亚洲精品无码日韩国产不卡av| 色悠久久网国产精品99| 精品91在线| 国产一区二区三区十八禁| 日本亚洲一区二区精品| 真人性囗交视频| 国产激情国产精品久久源| 成人特黄特色毛片免费看| 无码人妻出轨黑人中文字幕| 国产美女被遭强高潮免费一视频| 日韩高清国产中文字幕| 国产精品男女午夜福利片| 亚洲综合伊人久久大杳蕉| 美欧日韩一区二区三区视频| 乱码精品一区二区三区| 欧美交a欧美精品喷水| 久久精品亚洲精品国产色婷| 性人久久久久| 亚洲精品区二区三区蜜桃| 欧美和黑人xxxx猛交视频| 色护士极品影院| 亚洲av第一区二区三区| 中文字幕理伦午夜福利片| 国产高清av首播原创麻豆| 美女一区二区三区亚洲麻豆| 免费大黄网站在线观看| 女人喷水高潮时的视频网站| 人妻少妇偷人精品免费看| 国产精品国产高清国产av| 青青草无码免费一二三区| 亚洲一区二区三区激情视频|