API 通常设计为无状态,这意味着它们不会在会话之间存储请求数据或保留信息。在考虑扩展方法时,这种无状态性质至关重要。无状态 API 不需要跨实例复制数据,因而使横向扩展更高效且更易于实施。系统管理员可以根据需要添加或移除虚拟机,同时不会影响 API 运行,因为 API 客户端的运行不依赖于特定的服务器实例。
有状态本身并无不妥。实际上,它对于应用程序的预期运行可能至关重要。但是,对有状态应用程序执行横向扩展要复杂得多。进行横向扩展需要将所存储的数据从应用程序的原始版本复制到新的实例中。
相比之下,无状态应用程序或 API 不会存储请求数据。它不会在内存中保留会话数据。每次会话开始时,就好像是该应用程序第一次与客户端见面。该会话结束后就是“再见”,而不会保留任何关于该会话的记忆。
可以对无状态应用程序进行横向扩展,因为由哪个虚拟机对 API 调用作出响应并不重要。API 客户端可以调用无限数量的托管该 API 的虚拟机,这完全不是问题。系统管理员可以根据自己的需要添加或移除任意数量的虚拟机,同时不会影响 API 的运行。