91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Tye輔助開發k8s 應用

發布時間:2021-12-16 09:41:12 來源:億速云 閱讀:122 作者:柒染 欄目:云計算

如何使用Tye輔助開發k8s 應用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

Newbe.Claptrap 是一個用于輕松應對并發問題的分布式開發框架。如果您是首次閱讀本系列文章。建議可以先從本文末尾的入門文章開始了解。

服務發現 - 微服務開發不可缺少的部件

服務發現,就是新注冊的這個服務模塊能夠及時的被其他調用者發現。不管是服務新增和服務刪減都能實現自動發現。

我們在調用微服務的過程中,假設在調用某個 REST API 或者 Thrift API, 為了完成某次調用請求,代碼里面需要指定服務所在的 IP 地址和端口,在傳統的應用中,網絡地址和端口是靜態的,一般不會改變,我們只需要把它們配到配置文件中,就可以通過讀取配置文件來完成調用。但是,在現代基于 Cloud 的微服務架構中,這種方式將失效,因為服務的實例是動態分配的地址,網絡地址也是動態的,這樣做的好處是便于服務的自動伸縮,失敗處理和升級.

簡單來說,通過服務發現,服務之間可以使用名稱來代替具體的地址和端口甚至訪問細節。這樣可以使得服務更加容易適用于云原生這種應用程序實例多變的環境。

首先,我們需要兩個服務

和前篇一樣,我們使用命令行來創建兩個服務。

dotnet new sln -n TyeTestdotnet new webapi -n TyeTestdotnet sln .\TyeTest.sln add .\TyeTest\TyeTest.csprojdotnet new webapi -n TyeTest2dotnet sln .\TyeTest.sln add .\TyeTest2\TyeTest2.csproj

然后使用 tye init 創建 tye.yml

便可以在 tye.yml 中得到如下內容:

name: tyetestservices:  - name: tyetest    project: TyeTest/TyeTest.csproj  - name: tyetest2    project: TyeTest2/TyeTest2.csproj

這樣我們就可以在本地使用 tye run 啟動著兩個服務。

接下來,我們會改造其中的 TyeTest 服務,使其調用 TyeTest2 作為其下游服務。

這樣我們便可以驗證服務發現的效果。

然后,使用 Tye.Configuration

添加包

運行以下命令,為 TyeTest 項目添加包:

dotnet add ./TyeTest/TyeTest.csproj package Microsoft.Tye.Extensions.Configuration --version 0.6.0-alpha.21070.5

添加 HttpClientFactory

由于我們需要使用 HttpClient 調用下游服務,因此需要使用到 HttpClientFactory。故而,在 TyeTest 項目的 Startup.cs 增加對 HttpClientFactory 的注冊。

  public void ConfigureServices(IServiceCollection services)  {+     services.AddHttpClient();      services.AddControllers();      services.AddSwaggerGen(c =>      {          c.SwaggerDoc("v1", new OpenApiInfo { Title = "TyeTest", Version = "v1" });      });  }

使用 HttpClient 調用服務

進入 WeatherForecastController, 我們使用 HttpClient 來調用下游服務,并且將得到的數據返回:

using System;using System.Collections.Generic;using System.Linq;using System.Net.Http;using System.Text.Json;using System.Threading.Tasks;using Microsoft.AspNetCore.Mvc;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.Logging;namespace TyeTest.Controllers{    [ApiController]    [Route("[controller]")]    public class WeatherForecastController : ControllerBase    {        private readonly ILogger<WeatherForecastController> _logger;        private readonly IConfiguration _configuration;        private readonly HttpClient _httpClient;        public WeatherForecastController(ILogger<WeatherForecastController> logger,            IConfiguration configuration,            HttpClient httpClient)        {            _logger = logger;            _configuration = configuration;            _httpClient = httpClient;        }        [HttpGet]        public async Task<string> Get()        {            var serviceUri = _configuration.GetServiceUri("tyetest2");            Console.WriteLine(serviceUri);            var httpResponseMessage = await _httpClient.GetAsync($"{serviceUri}WeatherForecast");            var json = await httpResponseMessage.Content.ReadAsStringAsync();            return json;        }    }}

值得注意的是:

  1. 構造函數中注入的 IConfiguration 是 Aspnet Core 的內在機制,無需特殊注冊。

  2. _configuration.GetServiceUri("tyetest2") 是本示例的關鍵點。其通過一個服務名稱來獲取服務的具體 Uri 地址,這樣便可以屏蔽部署時,服務地址的細節。

這樣,就結束了。

接下來只要使用 tye run 便可以在本地查看已經改造好的服務。調用第一個服務的接口,并可以得到預期的從第二個服務返回的數據。

最后,發到 K8S 里面試一下

若要發布到 k8s 進行測試,只要按照前篇的內容,設置到 docker registry 和 ingress 便可以進行驗證了。

開發者可以自行配置并嘗試。

看完上述內容,你們掌握如何使用Tye輔助開發k8s 應用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

明光市| 唐海县| 颍上县| 永和县| 灵宝市| 万源市| 墨玉县| 宁晋县| 山西省| 甘洛县| 通化县| 大丰市| 霍林郭勒市| 土默特左旗| 门源| 仪征市| 阿拉善右旗| 都安| 霍山县| 久治县| 尉氏县| 手游| 井冈山市| 昌江| 安泽县| 广元市| 绩溪县| 安阳县| 天柱县| 衡南县| 泸州市| 凤山市| 巴马| 民丰县| 六枝特区| 乃东县| 石首市| 浦东新区| 龙南县| 安新县| 榆中县|