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

3.1 vss-performance 多协议监听与SIP发送流水线异步化

VSS 多协议监听与 SIP 发送流水线异步化试用安装包下载 | SMS | 在线演示项目地址https://github.com/openskeye/go-vss背景VSS 同时承担GB28181 信令面SIP与媒体面回调HTTP通知、WebSocket、SSE。若信令处理与业务发送在同一线程或同步阻塞单路设备抖动会拖慢整进程吞吐。本仓库采用多监听 有界队列 分发协程将「收包」与「发信令」解耦。项目中的做法1. GBS 双栈监听TCP / UDP 并行main.go中用sync.WaitGroup启两个 goroutine分别对 GBS 注册同一套 Handler绑定TCP与UDP。国标设备侧常混用两种传输并行监听避免在单协议上排队同时充分利用多核。SIP 监听SipGbsServer TCPSipGbsServer UDP终端/平台RegisterHandlers2. 发送侧单协程select多路 channel任务再go出去SendLogicsend_sip_proc.go主循环从多个SipSend*channel 收消息每类消息再起独立 goroutine执行实际catalog/invite/bye等。这样分发协程不会被慢设备或网络 RTT 阻塞能继续消费队列不同信令类型之间互不抢锁除共享svcCtx内状态外。按任务 go funcSendLogic selectSipSend* channels缓冲 100信令生产者HTTP 内部接口WebSocketCatalog/心跳定时SipSendCatalogSipSendVideoLiveInvite...读队列catalog()VideoLiveInvite()3. 启动屏障InitFetchDataStateSIP Server 在Listen前执行svcCtx.InitFetchDataState.Wait()见sip.go保证字典、设置、流媒体列表等已从 DB RPC 拉取完毕再对外收包。避免「注册」时大量REGISTER命中未就绪配置造成重试与无效 RPC。SipGbsServerFetchDataLogicMainSipGbsServerFetchDataLogicMainInitFetchDataState 等待首轮数据DoneListen TCP/UDP要点不要把 SIP 回调里重逻辑直接阻塞应投递到 channel 或由短函数快速返回。缓冲深度100是折中过小易反压 HTTP过大掩盖积压需配合监控。per-message goroutine在极高并发下会增加调度开销若未来单机信令 QPS 再上一个量级可改为固定 worker 池 按deviceId分片串行当前以简单与隔离为主。相关代码路径core/app/sev/vss/main.go— 监听、NewSipProc().DO(...)core/app/sev/vss/internal/server/sip.go—InitFetchDataState.Wait()core/app/sev/vss/internal/logic/gbs_proc/send_sip_proc.go— 多路selectgo发送
http://www.zskr.cn/news/1335065.html

相关文章:

  • Skeyevss 视频调阅使用说明
  • 手把手教你用百度飞桨EasyDL搞定动物保护图像分类:从数据集标注到模型部署全流程
  • 【徐玉生行为数据深度分析】QiLink 项目作者自我分析1
  • 产品管理入门:掌握这10个核心概念,轻松驾驭复杂项目
  • C#学习笔记-入门篇
  • 块级作用域的应用场景有哪些?
  • 【大模型12步学习路线 · 第10步 · ①原理篇】LLM 微调全景:Full FT / LoRA / QLoRA / DoRA / DPO,从 PEFT 到偏好对齐
  • 35小时智能体自主进化!千问旗舰模型Qwen3.7-Max重磅发布
  • VCSA 8.0部署卡在初始化VCS服务、认证失败?NTP+DNS一招解决
  • Vibe Coding 灾难的爆发
  • 如何判断杉木桩品牌的选型标准?
  • 嵌入式PID温度控制:从算法原理到C语言工程实现
  • 2026青岛楼宇自控厂家/能耗监测系统厂家品牌测评 不同维度优选实力商家!最佳选型指南!
  • 高人气网页游戏排行榜单,适合长期玩的网页游戏精选
  • AI从业者的理财攻略:如何用AI技术实现被动收入
  • 基于RK3568的OpenHarmony开发板:从硬件选型到系统定制的全流程实践
  • 谷歌开发者大会2026:Gemini全面升级,重塑搜索与生活体验!
  • 保姆级教程:用G2O搞定视觉SLAM中的BA优化(附ORB-SLAM实战代码片段)
  • 嵌入式开发必备:Linux下ELF文件查看与交叉编译验证全攻略
  • 16位微控制器:电池供电与物联网节点的性能功耗平衡之道
  • CAN总线接口电路设计实战:从差分信号原理到PCB布局避坑指南
  • RTKLIB PPP中的扩展卡尔曼滤波(EKF)到底怎么跑的?filter函数逐行解析
  • 从入门到发表:用Perplexity完成一篇ApJ Letters级文献综述——12个被顶刊审稿人反复验证的搜索链路
  • 别再让用户错过消息!UniApp应用通知权限引导的最佳实践与UniPush 2.0优化
  • 从编译到部署:手把手教你为你的C++项目正确链接Boost库(附CMakeLists.txt示例)
  • 告别Navicat!用VSCode的Database Client插件搞定MySQL、Redis连接与可视化操作
  • S32K3 FlexCAN驱动避坑指南:从波特率计算到邮箱锁定的实战心得
  • Perplexity历史搜索结果漂移之谜(2022→2024训练数据衰减实测报告):如何锁定可信时间切片并锚定原始出处
  • 什么是组合模式?一文详解
  • 【限时解密】Perplexity文化新闻搜索的“暗层过滤器”:3个未文档化content-type策略如何悄悄屏蔽非西方叙事?