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

商城类网站建设的服务器选择深圳vi设计哪家好

商城类网站建设的服务器选择,深圳vi设计哪家好,浏览器网站设置在哪里,wordpress 直播网站吗文章目录 前言一、核心二、解决方案架构三、实现方案1.使用 Azure SignalR Service2.Redis Backplane(Redis 背板方案)3.负载均衡配置粘性会话要求无粘性会话方案(仅WebSockets)完整部署示例(Redis Docker)性能优化技…

文章目录

  • 前言
  • 一、核心
  • 二、解决方案架构
  • 三、实现方案
    • 1.使用 Azure SignalR Service
    • 2.Redis Backplane(Redis 背板方案)
    • 3.负载均衡配置
      • 粘性会话要求
      • 无粘性会话方案(仅WebSockets)
      • 完整部署示例(Redis + Docker)
      • 性能优化技巧
      • 监控与故障排查
      • 安全注意事项
  • 四、部署策略选择
  • 总结


前言

在分布式环境中部署 SignalR 应用需要解决连接状态管理和消息广播问题

一、核心

  • 连接状态:默认存储在内存中,多服务器无法共享

  • 消息广播:需要跨服务器分发消息

  • 负载均衡:需要粘性会话或替代方案

二、解决方案架构

在这里插入图片描述

三、实现方案

1.使用 Azure SignalR Service

  1. Program.cs
    // Program.cs
    var builder = WebApplication.CreateBuilder(args);// 添加Azure SignalR服务
    builder.Services.AddSignalR().AddAzureSignalR(options => {options.ConnectionString = builder.Configuration["Azure:SignalR:ConnectionString"];options.ServerStickyMode = ServerStickyMode.Required; // 必需粘性会话});var app = builder.Build();// 配置路由
    app.MapHub<MyHub>("/myHub");
    app.Run();
    
  2. 优点
    • 完全托管服务
    • 自动处理扩展
    • 无需管理基础设施

2.Redis Backplane(Redis 背板方案)

  1. 安装NuGet包

    Install-Package Microsoft.AspNetCore.SignalR.StackExchangeRedis
    
  2. Program.cs配置

     //redisConnectionString为Redis服务器地址
    builder.Services.AddSignalR().AddStackExchangeRedis(redisConnectionString, options => {options.Configuration.ChannelPrefix = "MyAppSignalR"; // 通道前缀});

3.负载均衡配置

粘性会话要求

  1. 示例:
    # Nginx 配置
    upstream signalr_servers {ip_hash; # 基于客户端IP的粘性会话server server1.example.com;server server2.example.com;server server3.example.com;
    }server {location / {proxy_pass http://signalr_servers;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;}
    }
    

无粘性会话方案(仅WebSockets)

  1. 示例:
    	// 创建新连接state.connection = new signalR.HubConnectionBuilder().withUrl(state.serverUrl, {skipNegotiation: true, // 尝试跳过协商步骤transport: signalR.HttpTransportType.WebSockets // 强制使用 WebSockets}).withAutomaticReconnect({nextRetryDelayInMilliseconds: retryContext => {state.retryCount = retryContext.previousRetryCount + 1;return Math.min(1000 * Math.pow(2, state.retryCount), 30000);}}).configureLogging(signalR.LogLevel.Debug) // 启用详细调试日志.build();
    

完整部署示例(Redis + Docker)

  1. docker-compose.yml

    version: '3.8'services:webapp:image: my-signalr-appbuild: .environment:- Redis__ConnectionString=redis:6379ports:- "5000:80"depends_on:- redisredis:image: redis:alpineports:- "6379:6379"
    
  2. 应用配置

    // Program.cs
    var redisConnection = builder.Configuration["Redis:ConnectionString"];if (!string.IsNullOrEmpty(redisConnection))
    {builder.Services.AddSignalR().AddStackExchangeRedis(redisConnection, options => {options.Configuration.ChannelPrefix = "SignalR_My";});
    }
    else
    {builder.Services.AddSignalR();
    }
    

性能优化技巧

  • 协议优化
    builder.services.AddSignalR(options => 
    {options.EnableDetailedErrors = false; // 生产环境关闭options.MaximumReceiveMessageSize = 32 * 1024; // 32KB
    }).AddMessagePackProtocol(); // 二进制协议
    
  • 横向扩展
    .AddStackExchangeRedis(connection, options => 
    {options.Configuration.AbortOnConnectFail = false;options.Configuration.ConnectRetry = 5;options.Configuration.ConnectTimeout = 10000;
    });
    
  • 状态管理与持久化
    • 在分布式环境中,要避免使用服务器本地状态:
      • 不要在 Hub 类中存储客户端状态,应使用外部存储(如 Redis、数据库)。
      • 考虑使用分布式缓存来存储群组信息。
      public class ChatHub : Hub
      {private readonly IRedisCache _cache; // 使用外部缓存public ChatHub(IRedisCache cache){_cache = cache;}// 使用缓存存储用户信息public override async Task OnConnectedAsync(){await _cache.AddUser(Context.ConnectionId, Context.UserIdentifier);await base.OnConnectedAsync();}
      }
      

监控与故障排查

  • 分布式环境下的监控尤为重要:
    • 使用 Azure Application Insights 或 Elastic Stack 监控 SignalR 连接和消息。
    • 实现自定义日志记录,跟踪消息路由和连接状态。
    • 配置健康检查端点,监控各个服务器实例的状态

安全注意事项

  • 对所有 SignalR 通信使用 HTTPS。
  • 在负载均衡器上配置 SSL/TLS 终止。
  • 考虑使用 Azure AD 或 JWT 进行身份验证。

四、部署策略选择

  • 根据实际需求选择合适的部署方案:
    • Azure 环境:推荐使用 Azure SignalR 服务 + Azure App Service。
    • 自托管环境:使用 Redis Backplane + Kubernetes 或 Docker Swarm。
    • 混合云环境:结合 Azure SignalR 服务与本地部署。

总结

  • 分布式部署 SignalR 的关键在于:
    • 使用消息代理实现服务器间通信。
    • 合理配置负载均衡器,支持会话亲和性和 WebSocket。
    • 避免使用服务器本地状态,采用外部存储。
    • 加强监控,及时发现并解决问题。

文章转载自:

http://jRog5hcV.srgwr.cn
http://UamLv3AZ.srgwr.cn
http://Y0jDeI4v.srgwr.cn
http://ac2pqUnp.srgwr.cn
http://neL0FzUM.srgwr.cn
http://qn4isaCE.srgwr.cn
http://nCd7S4zl.srgwr.cn
http://SkyUMvHM.srgwr.cn
http://DOJ8Z9Zv.srgwr.cn
http://PY5Olds2.srgwr.cn
http://TDv5qp8T.srgwr.cn
http://MR6oJIek.srgwr.cn
http://vYsOc8pj.srgwr.cn
http://VS99q32L.srgwr.cn
http://iVH6XqvO.srgwr.cn
http://uMxKOfd1.srgwr.cn
http://vHBlrkco.srgwr.cn
http://hroaCqrD.srgwr.cn
http://apw63B9J.srgwr.cn
http://ZBu0lggE.srgwr.cn
http://EA3AiLuf.srgwr.cn
http://ERb9tzu3.srgwr.cn
http://ejaIRLlO.srgwr.cn
http://DDW1LoTP.srgwr.cn
http://diZfwwZ2.srgwr.cn
http://rT1OMJ60.srgwr.cn
http://A9mSNfZR.srgwr.cn
http://7WIV696U.srgwr.cn
http://nQeqBtRM.srgwr.cn
http://lQU7mNfB.srgwr.cn
http://www.dtcms.com/wzjs/646635.html

相关文章:

  • 网站建设 南昌中国建筑网官网企业愿景
  • 长春建设网站公司哪家好网上注册公司流程和费用
  • 网站免费站wordpress 内容采集 差价
  • 苏州建设工程公司网站浙江省城乡住房建设网站
  • 商业网站大全域名查询ip爱站网
  • 背景网站建设怎么才能创建个人网站
  • 威海做网站优化网站建设云服务器
  • 西安演出公司网站建设wordpress 微信授权
  • 做网站做百度竞价赚钱WordPress 文件同步
  • 山东建站商城扒完网站代码之后怎么做模板
  • 买网站需要注意什么湖南基础建设投资集团网站
  • php 社交网站模板源码上海百度网络推广
  • 网站可访问性专业做网站哪家好
  • 网站开发流程书籍城阳网站建设公司
  • 太原网站设计费用wordpress网站500
  • 怎么建立自己的网站平台多少钱wordpress修改固定链接后页面404
  • 温州做公众号和做网站的地方xammp wordpress
  • 河南省住房和城乡建设厅新网站十大外贸网站
  • 嘉兴做外贸网站的公司浙江振升建设有限公司网站
  • 怎么用默认程序做网站建立一个app平台需要多少钱
  • 南昌网站设计网站开发网站建设怎么弄轮换图片
  • 网站建设投标wordpress企业网站实例
  • 分类网站 模板公司的网站都是谁在维护
  • wordpress 视频图片网站宝安中心医院官网
  • 东营市做网站的公司做网站的要faq怎么给
  • 营销型网站的推广方法零基础学网站建设
  • 自己买主机可以做网站吗去掉wordpress页面的分类归档
  • 做sohu最好的推广网站网络服务禁用后如何启动
  • 东莞网站开发多少钱百度pc端提升排名
  • 云平台网站叫什么烟台 做网站的公司