我正在构建一个支持网络应用程序和移动应用程序的服务器。
我应该使用无状态还是有状态服务器,以及什么是好的示例架构?
其余信息是为了让您了解我想要支持的内容:
目前我有一个 MySQL,其中某一行有 400,000 多个条目,并且还在增长。
这是我需要做的:
客户端将汽车零件的名称发送到服务器。
服务器查询 MySQL(通过使用 JOIN)以查找所有带有该汽车部件的汽车。它返回一个数组。
(这是比较棘手的部分)
服务器需要保留这些结果并等待另一个请求。根据用户的需要重复执行多次。
一旦查询了所有汽车零件,服务器就会保存许多零件数组。然后它会找到零件最多的汽车,并只将这些零件发送回客户端(使用 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 的理由有很多,而不用的理由却不多。它使负载平衡变得非常简单,并且在扩展(而不是扩展)方面为您带来相当大的好处。
您可以使用回调来获取应用程序所需的异步流。