无状态协议是否被认为更适合使用有状态协议?

时间:2009-03-09 16:09:31

标签: protocols network-protocols

我可以看到有状态协议可以减少像曲奇一样的“模拟状态”。

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

始终使用无状态协议是否被认为是更好的做法,还是真的特定于域?

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

7 个答案:

答案 0 :(得分:13)

无国籍的好处:

  1. 高可扩展性 (您可以向任何节点发送请求,您可以随时添加节点)
  2. 高可用性 (如果一个节点发生故障,则没有丢失的状态,只需将请求重新发送到另一个节点)
  3. 高速 (因为没有状态,结果可以缓存)

答案 1 :(得分:9)

状态对您的申请有多重要?您是否需要在不同机器之间保持恒定的数据流量,或者突发更有用?如果你正在编写一个IP电话类型的应用程序,那么你可能会想要一些相当有状态的东西,如果你可以逃脱无状态,它可能会更便宜,更容易这样做。有条不紊地做事情一定比较脆弱,因为如果连接的任何一端被丢弃或者连接本身出现故障,则会导致更高的数据丢失风险,而对于无状态连接,您更可能只需要等待一段时间并尝试试。

它们对于不同的工作来说确实是不同的工具,但鉴于在线无状态技术的易用性和普遍性,当您有选择时,向这个方向看是合乎逻辑的。

答案 2 :(得分:9)

我认为它是针对特定领域的。如果您正在编写ping的道德等价物,那么无状态协议是正确的选择。另一方面,如果你正在写一个VNC,那么有状态肯定是要走的路。

至于何时选择哪一个,要记住两点。首先,虽然实现选择是/或,但问题空间是连续的。所有现实世界的任务至少都有一个小状态,问题是传递它的开销有多少和开销是值得在两端跟踪它的麻烦。其次,您通常处理协议栈,而不是单个协议;确保一切都处于正确的水平可以极大地简化事情。

答案 3 :(得分:3)

无状态协议更容易集群,因为在后续请求中,状态永远不需要从1个服务器转移到另一个服务器。

答案 4 :(得分:3)

我并不熟悉有状态与无状态的所有设计问题,但我确实知道NFSv4在15年前的NFS版本之前是无状态的,因此显然无状态成为了一个重要的限制因素。 NFS设计师。

几分钟'谷歌搜索显示几篇文章和博客谈论NFSv4的状态;对于涉及的一些设计问题,这应该是有趣的阅读。

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

相关问题