Web 服务器的有状态架构与无状态架构

Web 服务器的有状态架构与无状态架构

我正在构建一个支持网络应用程序和移动应用程序的服务器。

我应该使用无状态还是有状态服务器,以及什么是好的示例架构?

其余信息是为了让您了解我想要支持的内容:

目前我有一个 MySQL,其中某一行有 400,000 多个条目,并且还在增长。

这是我需要做的:

  1. 客户端将汽车零件的名称发送到服务器。

  2. 服务器查询 MySQL(通过使用 JOIN)以查找所有带有该汽车部件的汽车。它返回一个数组。

(这是比较棘手的部分)

  1. 服务器需要保留这些结果并等待另一个请求。根据用户的需要重复执行多次。

  2. 一旦查询了所有汽车零件,服务器就会保存许多零件数组。然后它会找到零件最多的汽车,并只将这些零件发送回客户端(使用 JSON)

示例:查询 1:品牌 ace 方向盘 --> 结果(1000 辆汽车的数组)

查询 2:品牌赛车桶形座椅 --> 结果(2000 辆车的数组)

查询 3:品牌 Bose 扬声器 --> 结果(400 辆汽车的数组)

现在我们计算匹配项:汽车 1 有 2/3 的零件被查询,汽车 2 有 1/3,汽车 3 有 3/3,等等,共有 3400 个结果。

用户指定了 60% 以上的匹配度,因此只发回汽车 1 和 3。

此外,我认为我可以创建一个哈希图,它可以在恒定的时间内执行此操作并将其保存在内存中,以便每个请求都被路由到该地图。

示例哈希图:键 || Bose 扬声器 --> 值 || (带有 Bose 的汽车数组)

基于此,我应该使用哪种状态,以及什么样的架构?

答案1

如果可能的话,请始终使用无状态应用程序设计。

阅读Roy Fielding 的论文关于 RESTful 应用程序。

使用 REST 的理由有很多,而不用的理由却不多。它使负载平衡变得非常简单,并且在扩展(而不是扩展)方面为您带来相当大的好处。

您可以使用回调来获取应用程序所需的异步流。

相关内容