无状态系统和有状态系统之间有什么区别,它们如何影响并行性?

时间:2011-03-25 17:36:13

标签: parallel-processing

解释无状态系统和有状态系统之间的差异,以及状态对并行性的影响。

2 个答案:

答案 0 :(得分:72)

无状态系统可以看作是一个盒子[黑色? ;)]在任何时间点,输出的值仅取决于输入的值[在某个处理时间之后]

有状态系统可以被视为一个框,在任何时间点,输出的值取决于输入和内部状态的值,所以基本上,有状态系统就像是具有“内存”的状态机,因为同一组输入值可以根据系统接收的先前输入生成不同的输出(s) 。

并行编程的角度来看,无状态系统如果正确实现,可以同时由多个线程/任务执行,而不会出现任何并发问题[想一个可重入函数的例子] 有状态系统将要求多个执行线程以独占方式访问并更新系统的内部状态,因此需要序列化[同步]点。

答案 1 :(得分:42)

有状态服务器在连接之间保持状态。无状态服务器没有。

因此,当您向有状态服务器发送请求时,它可能会创建某种连接对象来跟踪您请求的信息。当您发送另一个请求时,该请求将对上一个请求的状态进行操作。所以你可以发送一个“打开”的东西。然后您可以发送请求以便稍后“关闭”它。在这两个请求之间,该东西在服务器上是“开放的”。

当您向无状态服务器发送请求时,它不会创建任何跟踪有关您的请求的信息的对象。如果您在服务器上“打开”某些内容,则服务器根本不会保留您打开的信息。 “关闭”操作毫无意义,因为没有什么可以关闭的。

HTTP和NFS是无状态协议。每个请求都是独立的。

有时cookie用于向无状态协议添加某些状态。在HTTP(网页)中,服务器向您发送cookie,然后浏览器保持状态,仅在后续请求中将其发送回服务器。

SMB是一种有状态协议。客户端可以在服务器上打开文件,服务器可能会拒绝其他客户端访问该文件,直到客户端关闭它为止。