会话与订阅的关系
安全通道负责加密与完整性,会话负责应用层身份与状态:创建会话后激活会话完成用户验证,客户端才被授权调用读写、浏览、方法调用等服务。订阅建立在会话之上,是实时数据的推荐获取方式:客户端声明发布间隔,为每个监控项声明采样间隔、队列大小与死区,服务器在后台采样并只在确实需要时推送通知,客户端用发布请求接收通知并同时完成保活。
基本信息
| 核心服务 | 创建会话、激活会话、关闭会话、取消请求 |
|---|---|
| 会话保活 | 客户端按保活计数持续发送发布请求 |
| 订阅参数 | 发布间隔、生命周期计数、最大保活计数、优先级、每次发布最大通知数 |
| 监控项参数 | 采样间隔、队列大小、是否丢弃最旧、死区 |
| 服务端修正 | 服务器可调整请求值并返回修正后的实际值 |
| 订阅转移 | 断线重连后可接管原订阅,减少数据缺口 |
典型使用场景
- 过程量实时刷新:用订阅替代高频轮询,降低网络与设备负载
- 慢变量批量监控:把同一采样节奏的变量放进一个订阅,减少连接开销
- 模拟量降噪:用死区过滤无意义的小幅波动,减少无效推送
- 断网续传:重连后接管原订阅,避免重建期间的数据空洞
- 容量评估:按监控项数量与发布间隔估算服务器负载上限
- 协议调试:观察修正后的参数,判断服务器实际能力
参数与判读
| 参数 | 含义 | 判读要点 |
|---|---|---|
| 发布间隔 | 服务器向客户端推送的节奏 | 修正值才是实际节奏,务必读回 |
| 采样间隔 | 服务器读源数据的频率 | 小于发布间隔时多次采样只推最后一次 |
| 队列大小 | 两次发布之间可缓冲的数值个数 | 取 1 只保留最新值,适合状态量 |
| 死区 | 波动小于阈值不推送 | 绝对值或百分比,按工程量纲选择 |
| 通知溢出 | 队列被填满后的状态码 | 出现溢出说明采样过密或客户端取数太慢 |
典型调用顺序
典型调用顺序
# 1 打开安全通道
# 2 创建会话(携带客户端证书与描述)
# 3 激活会话(匿名 / 用户名 / 证书身份)
# 4 创建订阅:发布间隔、生命周期、保活计数
# 5 创建监控项:采样间隔、队列大小、死区
# 6 循环发送发布请求,接收通知并保活
# 断线重连后优先用订阅转移接管,而不是重建全部监控项服务器几乎总会修正发布间隔与采样间隔:它有自己的最小周期与资源上限。任何性能估算如果不使用修正后的值,结论都会偏乐观。
会话超时配置过长,客户端异常退出后会长期占用连接名额与许可资源;调试结束后应关闭会话,不要靠超时被动回收。