无状态服务器如何在服务器端保持会话状态?
How stateless server can keep session state on server side?
我正在阅读 Marting Fowler 的名著企业应用程序架构模式来系统化我的知识。
我读过第 Session and States
章,但有点困惑。在本章的第一部分,作者建议使用无状态服务器来避免某些问题。然后作者说有时我们需要在服务器端保存一些数据——例如网店中的用户购物车。 但是要实现带状态的会话,我们可以使用无状态服务器。然后作者描述了保存会话状态(客户端、服务器、数据库)的方法
但是看完这一章我不明白什么是无状态服务器。如果保持会话状态,服务器如何成为无状态的?
Quora 有一个很好的定义:
无状态服务是一种不在应用服务器上存储任何数据的服务。它读取或写入数据到数据库,returns一个值(或没有),之后,任务本身的任何信息都被遗忘。
意思:不是服务器本身保存状态数据。它可以将其放入某个数据库中。然后,它可能会向客户端提供某种 令牌 ,客户端可以在以后的调用中包含这些令牌。并且 token 使其他服务器能够从数据库中检索相应的数据。
关键是:当然,信息需要存储在某处。但是那个地方不是服务器,而是所有无状态服务器都可以访问的一些基础设施。
我正在阅读 Marting Fowler 的名著企业应用程序架构模式来系统化我的知识。
我读过第 Session and States
章,但有点困惑。在本章的第一部分,作者建议使用无状态服务器来避免某些问题。然后作者说有时我们需要在服务器端保存一些数据——例如网店中的用户购物车。 但是要实现带状态的会话,我们可以使用无状态服务器。然后作者描述了保存会话状态(客户端、服务器、数据库)的方法
但是看完这一章我不明白什么是无状态服务器。如果保持会话状态,服务器如何成为无状态的?
Quora 有一个很好的定义:
无状态服务是一种不在应用服务器上存储任何数据的服务。它读取或写入数据到数据库,returns一个值(或没有),之后,任务本身的任何信息都被遗忘。
意思:不是服务器本身保存状态数据。它可以将其放入某个数据库中。然后,它可能会向客户端提供某种 令牌 ,客户端可以在以后的调用中包含这些令牌。并且 token 使其他服务器能够从数据库中检索相应的数据。
关键是:当然,信息需要存储在某处。但是那个地方不是服务器,而是所有无状态服务器都可以访问的一些基础设施。