代码之家  ›  专栏  ›  技术社区  ›  Brian R. Bondy

无状态协议是否比有状态协议更适合使用?

  •  11
  • Brian R. Bondy  · 技术社区  · 15 年前

    但是,要确保您的实现是正确的并重新连接,测试变得更加困难,而且会话继续可能很难处理。

    我认为,在处理有状态协议时,身份验证变得更加容易,但是您是否还有其他理由应该使用有状态协议?

    7 回复  |  直到 15 年前
        1
  •  13
  •   Craig McQueen Dr. Watson    15 年前

    无国籍的好处:

    1. (您可以向任何节点发送请求,也可以随时添加节点)
    2. 高可用性 (如果一个节点出现故障,则不存在丢失的状态,只需将请求重新发送到另一个节点即可)
    3. 高速 (由于没有状态,结果是可缓存的)
        2
  •  9
  •   glenatron    15 年前

    状态对您的应用程序有多重要?您是否需要在不同的机器之间保持恒定的数据流,或者使用突发数据更有用?如果您正在编写一个IP电话类型的应用程序,那么您可能会想要一些相当有状态的应用程序,如果您可以摆脱无状态,那么这样做可能会更便宜、更容易。有状态地执行操作必然更加脆弱,因为如果连接的任意一端断开或连接本身断开,则数据丢失的风险更高,而对于无状态连接,则更可能需要等待一段时间然后重试。

        3
  •  9
  •   MarkusQ    15 年前

    我认为它是特定于领域的。如果您正在编写与ping的道德等价物,那么无状态协议是正确的选择。另一方面,如果您正在编写一个VNC,那么stateful肯定是一个不错的选择。

    至于什么时候选择哪一个,有两点需要记住。首先,虽然实现选择是非此即彼,但问题空间是一个连续统一体。所有现实世界中的任务都至少有一个小状态,问题是传递它的开销有多大,是否值得在两端跟踪它。第二,您通常处理的是协议栈,而不是单个协议;确保所有事物都处于正确的水平可以极大地简化事情。

        4
  •  3
  •   Allain Lalonde    15 年前

        5
  •  3
  •   Josh Kelley    15 年前

    我个人并不熟悉有状态与无状态的所有设计问题,但我确实知道,NFSv4是有状态的,在经历了15年的无状态NFS的早期版本之后,因此无状态显然成为了NFS设计者的一个重大限制。

    几分钟的谷歌搜索揭示了几篇关于NFSv4状态的文章和博客;对于涉及的一些设计问题,这应该是一本有趣的书。

        6
  •  2
  •   Brann    15 年前

    无状态协议的另一个好处是更容易处理服务器故障切换情况和/或群集/负载平衡情况。

        7
  •  1
  •   Flinkman    15 年前

    有状态更好。那你就不必一直发送状态了。然后协议变得更简单。