为啥没有额外的错误或状态通道?

Posted

技术标签:

【中文标题】为啥没有额外的错误或状态通道?【英文标题】:Why is there no extra channel for error or status?为什么没有额外的错误或状态通道? 【发布时间】:2022-01-03 04:19:02 【问题描述】:

我有一个关于客户端-服务器-计算的问题。

为什么从服务器到客户端只有一个连接?在 UNIX 中通常有 stdout 和 stderr。

背景: 数据库查询可能需要比您预期的更长的时间。 然后你想知道是不是有什么问题。也许服务器陷入了无限循环。这很容易发生,因为现在的服务器可以通过过程、触发器等进行扩展。

如果有一个额外的端口用于从服务器向客户端发送状态消息,用户可以获得“一切正常”的信息,例如通过“执行查询执行计划的7号节点”。

这些只会对此类信息感到困惑的用户可以关闭消息窗口。

是否存在真正的技术问题或需要负责 TCP 标准化的人员提供提示?

【问题讨论】:

【参考方案1】:

TCP 是一种通用传输协议,不区分不同的语义,如状态、错误、数据……这些语义是应用协议在 TCP 之上添加的。

为了提供不同的语义,不必有不同的 TCP 连接。可以很容易地定义一种应用程序协议,该协议允许具有不同语义的消息通过同一 TCP 连接传输。并且存在这样的协议,例如 TLS(握手消息、应用程序数据、警报......)。但也可以进行多个 TCP 连接,例如在 FTP 中使用不同的 TCP 连接进行控制和数据。

所以问题应该是为什么特定的服务器应用程序不具备与查询并行进行状态更新的能力。这绝对不是因为使用 TCP 作为传输层的限制,而是因为应用程序本身的限制。

【讨论】:

感谢您的回答。所以这绝对是可能的,因为不同的 RDBMS 有不同的 TCP 端口,这不是一般问题(关于 SQL),但这是每个 RDBMS 的程序员自己的决定。

以上是关于为啥没有额外的错误或状态通道?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 ConfigurationManager.OpenMappedExeConfiguration 文件中没有额外的连接字符串?

为啥在初始化列表中没有创建额外副本的情况下分配数据?

如何显式清空频道?

为啥当我没有为我的 openGLWidget 创建额外的类时 glRotate 只工作一次?

为啥应用链接会给华为带来额外的对话

为啥 GridControl 在执行后会创建一个额外的列/空间?