【问题标题】:What are the differences between stateless and stateful systems, and how do they impact parallelism?无状态系统和有状态系统之间有什么区别,它们如何影响并行性?
【发布时间】:2011-07-23 02:32:40
【问题描述】:

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

【问题讨论】:

标签: parallel-processing


【解决方案1】:

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

有状态系统可以被视为一个盒子,在任何时间点,输出的值都取决于输入的值和内部状态的值,所以基本上一个有状态的系统就像一个带有“memory”的状态机,因为相同的一组输入值可以根据系统接收到的先前输入产生不同的输出.

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

【讨论】:

  • 假设我有一个应用程序存储有关用户交易的数据,可能像余额信用、提款等等。那么这个应用程序是无状态/有状态的吗?因为这个应用程序会获取最近可能插入的用户数据。
【解决方案2】:

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

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

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

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

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

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

【讨论】:

  • 这个答案没有解决 state/less/ful/ness 对并行性的影响的问题。
猜你喜欢
  • 2018-08-11
  • 2011-04-13
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
  • 2018-02-06
  • 2019-08-29
  • 1970-01-01
相关资源
最近更新 更多