在非k8s 环境下 的应用 使用 Dapr Sidekick for .NET
在k8s 環(huán)境下,通過Operator 可以管理Dapr sidecar, 在虛擬機(jī)環(huán)境下,我們也是非常需要這樣的一個管理組件,之前寫的一篇文章《?在 k8s 以外的分布式環(huán)境中使用 Dapr》 里面介紹了一個案例Dapr case study: Man Group:https://blog.dapr.io/posts/2021/10/05/join-us-for-daprcon-october-19th-20th-2021/?:
在這張圖片中,在上圖左面,我們看到了“dapr.exe”、我們的應(yīng)用程序和另一個進(jìn)程“daprd.exe”之間的通信,該進(jìn)程實(shí)際上是 Sidecar 進(jìn)程。這是通常的方式(“開箱即用”),例如:
dapr run --app-id?backend?--app-port 5001??-- dotnet run --urls=http://localhost:5001/ -p ./WeatherForecastService/WeatherForecastService.csproj
dapr run --app-id?proxy?--app-port 6001??-- dotnet run --urls=http://localhost:6001/ -p ./WeatherForecastProxyService/WeatherForecastProxyService.csproj
圖片右面,使用?Sidekick簡化了此過程/通信,并且我們可以更好地控制以及其他功能。Dapr Sidekick for .NET?是一個組件,它允許我們將 Dapr 添加到我們的項(xiàng)目中以避免摩擦。簡化 .NET 開發(fā)和操作。當(dāng)我們的項(xiàng)目部署在虛擬機(jī)環(huán)境時,推薦使用這個組件。通過Sidekick 我們的應(yīng)用程序/進(jìn)程負(fù)責(zé)啟動和運(yùn)行 Dapr 所需的一切。?
我的示例代碼放在這里:https://github.com/geffzhang/ServiceToService-Sideckick?,通過簡單的三步就可以完成這項(xiàng)工作。
1、添加Nuget 包?Man.Dapr.Sidekick.AspNetCore :
dotnet add package Man.Dapr.Sidekick.AspNetCore --version 1.2.1 2、修改類 Startup.cs 的 ConfigureServices 方法如下:public void ConfigureServices(IServiceCollection services){ ? ?services.AddControllers(); ? ?// Add Dapr Sidekick ? ?services.AddDaprSidekick(Configuration);}
3、接下來,當(dāng)我們的調(diào)用(或代理)應(yīng)用程序調(diào)用另一個應(yīng)用程序時,名稱/id 為“ backend ”,我們需要指定其AppId。以同樣的方式,由于我們使用“ http”,我們必須指出"AppSsl": false。所有這些規(guī)范都通過“ appsetings.json ” 文件傳遞給 Sidekick,如下所示。
項(xiàng)目backend 的配置:
"DaprSidekick": {
?? // Set the runtime location of config/components files to be the "dapr" folder under the deployed application
?? "RuntimeDirectory": "dapr",
?? "Sidecar": {
???? "AppId": "backend",
???? "AppSsl": false,
???? "AppPort": 5001,
???? "DaprHttpPort": 3501,
???? "DaprGrpcPort": 50001
?? },
?? "Placement": {},
?? "Sentry": {}
}
項(xiàng)目 proxy的配置
"DaprSidekick": {
?? // Set the runtime location of config/components files to be the "dapr" folder under the deployed application
?? "RuntimeDirectory": "dapr",
?? "Sidecar": {
???? "AppId": "proxy",
???? "AppSsl": false,
???? "AppPort": 6001,
???? "DaprHttpPort": 3601,
???? "DaprGrpcPort": 60001
?? },
?? "Placement": {},
?? "Sentry": {}
}
注意:對于上述配置文件,由于我們運(yùn)行多個項(xiàng)目,我們還必須指定“?AppPort?”、“?DaprHttpPort?”和“?DaprGrpcPort?”屬性。其余的“Placement”和“Sentry”部分,以及其他屬性,暫時可以忽略。
RuntimeDirectory ?是Dapr 運(yùn)行時配置文件位置,我們在示例里測試使用Consul 作為服務(wù)注冊和服務(wù)發(fā)現(xiàn)組件。
改造后直接運(yùn)行就可以了,這個特別適合IOT場景下使用Dapr。
dotnet WeatherForecastService.dll --urls=http://localhost:5001
dotnet WeatherForecastProxyService.dll --urls=http://localhost:6001
總結(jié)
以上是生活随笔為你收集整理的在非k8s 环境下 的应用 使用 Dapr Sidekick for .NET的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何实现一个线程安全的 Concurre
- 下一篇: .NET6之MiniAPI(三十):结束