无状态和有状态系统之间有什么区别,它们如何影响并行性?
解释无国籍制度与有制度制度之间的差异,以及国家对并行制度的影响。
一个无国籍的系统可以被看作是一个黑盒子? ;)]其中在任何时间点,输出的值仅取决于input的值[经过一定的处理时间后]
一个有状态的系统可以被看作是一个盒子,在任何时候,输出的值取决于input的值和内部状态,所以有状态的系统就像一个状态机与“ 内存 ”作为同一组input(一个或多个)值可以产生不同的输出,取决于系统接收到的先前input。
从并行编程的angular度来看,一个无状态的系统,如果执行得当,可以同时由多个线程/任务执行,而不会有任何并发问题[例如,考虑一个可重入函数]一个有状态的系统将需要多个线程的执行访问权限,并以独占方式更新系统的内部状态,因此需要串行化[同步]点。
有状态的服务器保持连接之间的状态。 无状态服务器不。
所以,当你向有状态的服务器发送一个请求时,它可能会创build一些连接对象来跟踪你请求的信息。 当您发送另一个请求时,该请求将根据上一个请求的状态进行操作。 所以你可以发送一个请求来“打开”一些东西。 然后你可以发送一个请求来“closures”它。 在这两个请求之间,那个东西在服务器上是“开放的”。
向无状态服务器发送请求时,不会创build任何跟踪有关请求的信息的对象。 如果你在服务器上“打开”某些东西,那么服务器根本就没有保留任何你打开的东西的信息。 一个“接近”的操作是没有意义的,因为没有什么可以closures的。
HTTP和NFS是无状态协议。 每个请求都是独立的。
有时cookie会用来为无状态协议添加一些状态。 在HTTP(网页)中,服务器向你发送一个cookie,然后浏览器保存这个状态,只有在随后的请求中才把它发送回服务器。
SMB是一个有状态的协议。 客户端可以在服务器上打开文件,服务器可以拒绝其他客户端访问该文件,直到客户端closures它。