# web_socket **Repository Path**: zeng-fuan_admin_admin/web_socket ## Basic Information - **Project Name**: web_socket - **Description**: 基于web_socket的实时双向感知系统 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-04-27 - **Last Updated**: 2025-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实时双向感知系统 #### 介绍 基于grpc(原web_socket)的实时双向感知系统 #### 现状分析 受制于公司网络管理要求,当前广交云与省中心收费网的网络链路只允许单向访问,导致公有云上现有的数据服务不能够被部署在广乐私有云上的应用系统访问,为进一步提升公司跨云跨平台的数据服务能力,本项目将解决现有问题,将现有公有云中的数据服务复刻至广乐私有云。 #### 项目必要性与意义 当前高速公路管理部门、运营单位、业主等部门之间还存在一定的数据壁垒,数据资源无法及时有效共享,发挥我省路网整体效益,是当前公路管理水平改进提升的重要着力点,本项目的实施将借助大数据技术、数据即时交互等技术实现混合云之间的数据共享,进一步提升公司跨云跨平台的数据服务能力。 #### 软件架构 软件架构说明 ![输入图片说明](https://foruda.gitee.com/images/1756136586083796755/bab10e19_13692304.png "wechat_2025-08-25_234249_894.png") #### 系统整体流程方案 1.在华为云端部署客户端系统。 2.在广交云端部署服务端系统。 3.通过华为云客户端的通道构建模块向广交云端系统发送构建长链接请求。 4.目前采用单链双工方式,在华为云端构建长连接到广交云,计划建立5条双工通道去做动态切换。为了保证双工通道传输的稳定性,通过通道维护模块,,使用退避指数算法尝试5次重连,熔断30秒后尝试探测恢复,建立了一种兜底措施全量重建,当活跃连接≤2时触发全双工通道重连,确保一定会有双工通道存在。本方案在在压测阶段,使用10个用户,每个人每秒发送10个请求,总共发送400个请求连续发送时达到99.2%的成功率,平均请求处理时间稳定在1050±150ms范围内,有效保障了传输系统的可靠性。 5.广交云用户封装对应接口参数,例:如需调用外部华为云API接口,需按照华为云API接口文档要求,需把url,key等参数按华为云API接口文档要求进行转换后进行封装。请求通过串行化的方式传输,每秒最多传输20个请求,若超时10秒则当前请求失败,并且尝试连接切换以确保后续请求稳定。 6.广交云系统提供外部接口,通过数据解析模块解析参数,其中包含:url,head,body等。 7.广交云用户通过接口模块调用广交云系统提供的外部接口,把封装好的数据扔进对应参数中。 8.广交云系统通过通道构建模块构建的长链接,把广交云用户请求发送到华为云系统。 9.广交云系统通过日志监控模块监控接口日志,并按照等保要求,保留3个月日志到服务器中。 10.华为云系统接收到广交云系统的请求,通过数据解析模块解析url,判断广交云用户对应调用的外部接口。 11.华为云系统按外部接口请求体要求,把广交云用户封装的请求参数放入请求体对应参数位置调用。 12.华为云系统在处理完广交云用户的API请求后,会通过标准化响应管道将调用结果按原路径返回。 13.华为云系统在运行期间通过内置的日志记录模块对各类接口调用进行全生命周期监控,该模块采用异步写入机制,系统会结构化记录以下关键信息。 14.管理员用户可通过结算管理平台的混合云日志功能查看相关日志记录。 #### 系统功能设计 | 序号 | 服务 | 配置/规格 | 数量 | 系统名称 | |----|-----|----------------------------------|----|-------| | 1 | 虚拟机 | ecs.c6e.xlarge 8C 16G 300G SSD云盘 | 1 | 华为云系统 | | 2 | 虚拟机 | ecs.c6e.xlarge 8C 16G 300G SSD云盘 | 1 | 广交云系统 | #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request