2011-03-25 35 views
42

解释无状态和有状态系统之间的差异,以及国家对并行性的影响。无状态和有状态系统之间有什么区别,它们如何影响并行性?

+0

你可以看看这个:http://www.cs.swarthmore.edu/~newhall/cs85/s08/trilok.pdf – 2011-03-25 17:38:14

+0

[Stateless vs Stateful - 我可以使用一些具体信息](http: //www.stackoverflow.com/questions/5329618/stateless-vs-stateful-i-could-use-some-concrete-information) – 2011-03-25 17:43:58

+2

作业?请提前一点。 – David 2011-03-25 18:09:14

回答

60

A 无国界系统可以看作是一个盒子[黑色? ;)]其中在任何时间点的输出(一个或多个)的值对输入的(一个或多个)的值仅取决于[后一定的处理时间]

状态系统代替可以被看作是一个其中在任何时间点输出值取决于输入值和内部状态,所以基本上有状态的系统就像是一个“内存”的状态机一样取决于系统接收到的先前输入,输入(一个或多个)值的集合可以生成不同的输出。

并行编程的角度来看,一个无国籍系统中,如果适当地实施,可以由多个线程/任务在同一时间没有任何并发​​问题执行[例如认为重入函数的] A 有状态系统将要求多线程的执行访问并以独占方式更新系统的内部状态,因此需要串行化[同步]点。

26

有状态服务器保持连接之间的状态。无状态服务器不。

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

当您向无状态服务器发送请求时,它不会创建任何跟踪有关请求的信息的对象。如果你在服务器上“打开”某些东西,那么服务器根本就没有保留任何你打开的东西的信息。 “接近”的操作是没有意义的,因为没有什么可以结束的。

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

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

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

+2

这个答案没有解决州/ less/ful/ness对并行性的影响问题。 – 2013-07-05 12:30:12

相关问题