当前位置: 首页 > news >正文

华为云网站建设怎么设置选择项上海网站建设制

华为云网站建设怎么设置选择项,上海网站建设制,wordpress怎么去掉谷歌字体,wordpress实名认证Dapr牵手.NET学习笔记#xff1a;想入非非的服务调用Dapr牵手.NET学习笔记#xff1a;跨物理机负载均衡服务调用Dapr牵手.NET学习笔记#xff1a;用docker-compose部署服务说明#xff1a;为了给出demo的全貌#xff0c;这篇有点长#xff0c;如果有上一篇的基础#xf… Dapr牵手.NET学习笔记想入非非的服务调用Dapr牵手.NET学习笔记跨物理机负载均衡服务调用Dapr牵手.NET学习笔记用docker-compose部署服务说明为了给出demo的全貌这篇有点长如果有上一篇的基础会更容易阅读一些。在分布式应用有状态服务是常态特别是多副本应用就需要共用缓存来解决数据统一的状况所以dapr也把状态管理做成一个标准组件。下面通过docker-compose来发布OrderSystem项目和PaymentSystem项目他们分别有自己的状态数据并且测试它们之间的访问性。下面是项目的目录结构components文件是dapr组件配置文件夹B2C是docker-compose的文件夹OrderSystem项目HomeController.csusing Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using System; using System.Net; using System.Net.Http; using System.Threading.Tasks;namespace OrderSystem.Controllers; [ApiController] [Route([controller])] public class HomeController : ControllerBase {private readonly ILoggerHomeController _logger;private readonly IHttpClientFactory _clientFactory;private readonly string? _payUrl;private readonly string _stateUrl;public HomeController(ILoggerHomeController logger, IHttpClientFactory clientFactory, IConfiguration configuration){_stateUrl configuration.GetSection(StateUrl).Value;_payUrl configuration.GetSection(payurl).Value;_clientFactory clientFactory;_logger logger;}[HttpGet(/order)]public async TaskIActionResult Order(){try{_logger.LogInformation($下单开始);await Task.Delay(400);_logger.LogInformation($订单完成 调用支付系统);var client _clientFactory.CreateClient();var content await client.GetStringAsync(_payUrl);return new JsonResult(new { order_result 订单成功, pay_result content });}catch (Exception exc){_logger.LogCritical(exc, exc.Message);return new JsonResult(new { order_result 订单成功支付失败, message exc.Message });}}[HttpPost(/writekeys)]public async TaskIActionResult WriteKeys([FromBody] KeyEntity[] keys){var client _clientFactory.CreateClient();var jsonContent System.Text.Json.JsonSerializer.Serialize(keys);var content new StringContent(jsonContent);var response await client.PostAsync(_stateUrl, content);return Ok(await response.Content.ReadAsStringAsync());}[HttpGet(/readekey/{key})]public async TaskIActionResult ReadKey(string key){var client _clientFactory.CreateClient();var response await client.GetAsync(${_stateUrl}/{key});return new JsonResult(new { key await response.Content.ReadAsStringAsync(), host Dns.GetHostName() });}[HttpPost(/readekeys)]public async TaskIActionResult ReadKeys([FromBody] string[] keys){var client _clientFactory.CreateClient();var jsonContent System.Text.Json.JsonSerializer.Serialize(keys);var content new StringContent(jsonContent);var response await client.PostAsync(${_stateUrl}/bulk, content);return Ok(await response.Content.ReadAsStringAsync());}[HttpDelete(/deletekey/{key})]public async TaskIActionResult DeleteData(string key){var client _clientFactory.CreateClient();var response await client.DeleteAsync(${_stateUrl}/{key});return Ok(await response.Content.ReadAsStringAsync());} } public class KeyEntity {public string Key { get; set; }public string Value { get; set; } }appsettings.json{Urls: http://*:80,Logging: {LogLevel: {Default: Information,Microsoft: Warning,Microsoft.Hosting.Lifetime: Information}},AllowedHosts: *,PayUrl: http://localhost:3500/v1.0/invoke/pay/method/pay,StateUrl: http://localhost:3500/v1.0/state/statestore }OrderSystem项目的DockerfileFROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 80FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY [/OrderSystem/OrderSystem.csproj, OrderSystem/] RUN dotnet restore OrderSystem/OrderSystem.csproj COPY . . WORKDIR /src/OrderSystem RUN dotnet build OrderSystem.csproj -c Release -o /app/buildFROM build AS publish RUN dotnet publish OrderSystem.csproj -c Release -o /app/publishFROM base AS final WORKDIR /app COPY --frompublish /app/publish . ENTRYPOINT [dotnet, OrderSystem.dll]PaymentSystem项目HomeControllers.cs与OrderSystem的状态代码是一样的这里就不占篇幅。PaymentSystem项目的appsettings.json{Urls: http://*:80,Logging: {LogLevel: {Default: Information,Microsoft: Warning,Microsoft.Hosting.Lifetime: Information}},AllowedHosts: *,StateUrl: http://localhost:3500/v1.0/state/statestore }PaymentSystem项目的DockerfileFROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 80FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY [/PaymentSystem/PaymentSystem.csproj, PaymentSystem/] RUN dotnet restore PaymentSystem/PaymentSystem.csproj COPY . . WORKDIR /src/PaymentSystem RUN dotnet build PaymentSystem.csproj -c Release -o /app/buildFROM build AS publish RUN dotnet publish PaymentSystem.csproj -c Release -o /app/publishFROM base AS final WORKDIR /app COPY --frompublish /app/publish . ENTRYPOINT [dotnet, PaymentSystem.dll]OrderSystem项目和PaymentSystem项目的Dockerfile中的路径要和docker-compose.yml中的设置有关所以分享出来以供参考。B2Cdocker-compose.yml这里定义了一个b2c-dapr作为互通网络打通应用与redis等服务的通道。其中ordersystem对宿主机的端口还是3500paymentsystem对宿主机的端口分别是36013602version: 3.4services:#┌────────────────────────────────┐#│ ordersystem app Dapr sidecar │#└────────────────────────────────┘ordersystem:image: ${DOCKER_REGISTRY-}ordersystemdepends_on:- redis- placementbuild:context: ../dockerfile: /OrderSystem/Dockerfileports:- 3500:3500volumes: - ../OrderSystem:/OrderSystem networks:- b2c-daprordersystem-dapr:image: daprio/daprd:latestcommand: [ ./daprd, -app-id, order, -app-port, 80,-placement-host-address, placement:50006,-components-path,/components]build:context: ../depends_on:- ordersystemnetwork_mode: service:ordersystemvolumes: - ../components:/components #┌───────────────────────────────────┐#│ paymentsystem1 app Dapr sidecar │#└───────────────────────────────────┘ paymentsystem1:image: ${DOCKER_REGISTRY-}paymentsystembuild:context: ../dockerfile: /PaymentSystem/Dockerfileports:- 3601:3500volumes: - ../PaymentSystem:/PaymentSystem networks:- b2c-dapr paymentsystem1-dapr:image: daprio/daprd:latestcommand: [ ./daprd, -app-id, pay, -app-port, 80,-placement-host-address, placement:50006,-components-path,/components ]build:context: ../depends_on:- paymentsystem1network_mode: service:paymentsystem1volumes: - ../components:/components #┌───────────────────────────────────┐#│ paymentsystem2 app Dapr sidecar │#└───────────────────────────────────┘ paymentsystem2:image: ${DOCKER_REGISTRY-}paymentsystembuild:context: ../dockerfile: /PaymentSystem/Dockerfilevolumes: - ../PaymentSystem:/PaymentSystem ports:- 3602:3500networks:- b2c-dapr paymentsystem2-dapr:image: daprio/daprd:latestcommand: [ ./daprd, -app-id, pay, -app-port, 80 ,-placement-host-address, placement:50006,-components-path,/components]build:context: ../depends_on:- paymentsystem2network_mode: service:paymentsystem2volumes: - ../components:/components #┌────────────────────────┐#│ Dapr placement service │#└────────────────────────┘ placement:image: daprio/daprcommand: [./placement, -port, 50006]ports:- 50006:50006networks:- b2c-dapr#┌───────────────────┐#│ Redis state store │#└───────────────────┘ redis:image: redis:latestports:- 6380:6379networks:- b2c-dapr networks:b2c-dapr:Dapr组件配置statestore.yaml其中value的值要改成redis而不是localhost这里要连接同一个网络里的redis服务apiVersion: dapr.io/v1alpha1 kind: Component metadata:name: statestore spec:type: state.redisversion: v1metadata:- name: redisHostvalue: redis:6379- name: redisPasswordvalue: - name: actorStateStorevalue: true启动docker-composedocker-compose up -d启动后各服务的状态测试对order服务进行设置状态这里调用的是dpar服务调用对外的接口3500是order服务sidecar对外端口。同理调用order服务的状态数据返回设置的值接下来测试从pay服务中调用order服务的状态返回结果为空这里的地址为localhost:3601/v1.0/invoke/pay/method/readekey/USER00001下面换成从pay1服务的3601中访问order服务的状态结果有值url为localhost:3601/v1.0/invoke/order/method/readekey/USER00001根本原因可能你想到了这本质上调的还是order服务的接口只不过是利用pay1的sidecar调用order的sidecar实现的因为服务调用是通着所以能调用到这里可以通过查看返回的host值证明。接下来测试pay服务两个副本访问状态数据的case。下面是通过3601设置状态。通过pay1的sidecar对外端口访问url是localhost:3601/v1.0/invoke/pay/method/readekey/PAY00001通过pay2的sidecar对外端口访问url是localhost:3602/v1.0/invoke/pay/method/readekey/PAY00001可见状态数据很好的被隔了如果跨服务访问状态数据可以通过服务开放api来实现。最后看一眼redis数据吧,清晰的展示了服务和数据的关系。
http://wiki.neutronadmin.com/news/432155/

相关文章:

  • 怎样提升网站权重网站关键词指数查询工具
  • 北京网站建设新鸿广告公司宣传册设计
  • 廊坊网站建设佛山厂商百度手机
  • 用织梦系统做的2个网站要把它都上传到服务器上吗千锋教育学费
  • 做结婚视频储存网站制作网页比较方便的软件
  • 网上交易平台网站建设公司企业管理培训课程ppt
  • 学校网站平台建设下载中心官方网站建设银行
  • 网站建设的 几点不良网站浏览窗口
  • h5做网站什么软件百度云虚拟主机上传wordpress
  • 商城网站后续费用做企业网站 签合同要注意什么
  • 门户网站建设工作总结重庆企业网站营销设计
  • 怎么验证网站收录优美图片
  • 长沙 直播网站建设循化县wap网站建设公司
  • 湖州 外贸网站建设oa管理系统报价
  • 各类手机网站建设安丘网站开发
  • 丽江网站建设 莱芜天心区网站建设
  • hs网站推广常德网站建设培训机构
  • 濮阳网站建设 公司名字wordpress文章模板编辑
  • 琼海网站制作北京建网站公司飞沐
  • 湛江优化网站排名跨专业的简历怎么制作
  • 网上商城建网站微信小商店和小程序商城的区别
  • 陇西哪里能学做网站wordpress删除修订版
  • 晋州外贸网站建设浙江做网站
  • 西安网站优化体验驱动开发
  • 服务器iis添加网站污水管网建设
  • seo顾问合同免费seo技术教程视频
  • 外贸自己做网站好不好兖矿东华建设有限公司网站
  • 电子商务网站建设考纲苏州网站建设万户
  • 网站开发产品设计书wordpress 显示微信二维码
  • 用网站做的人工智能七星彩网站开发公司