RESTful API必须是无状态的,但并发性呢?
我很好奇如何解决RESTful API的并发性问题。更具体地说,我有一个需要手动检查和更新的对象集合,例如,需要手动更新列的许多行;但是,如果我向多个客户端打开API,它们都会从上到下抓取这些项,因此许多用户将同时填充同一行的列。我更喜欢没有冲突,简单、有状态的方法是将项目转储到服务的队列中,并在人们请求时将其弹出 这个的无状态版本是什么?按IP地址散列,还是根据id随机抓取行 ::更新::RESTful API必须是无状态的,但并发性呢?,api,rest,concurrency,stateless,Api,Rest,Concurrency,Stateless,我很好奇如何解决RESTful API的并发性问题。更具体地说,我有一个需要手动检查和更新的对象集合,例如,需要手动更新列的许多行;但是,如果我向多个客户端打开API,它们都会从上到下抓取这些项,因此许多用户将同时填充同一行的列。我更喜欢没有冲突,简单、有状态的方法是将项目转储到服务的队列中,并在人们请求时将其弹出 这个的无状态版本是什么?按IP地址散列,还是根据id随机抓取行 ::更新:: “人力资源管理,所以从客户的角度来看,它必须是无状态的 这当然很有意义。我刚刚读了一篇关于restful
“人力资源管理,所以从客户的角度来看,它必须是无状态的 这当然很有意义。我刚刚读了一篇关于restful API的文章(ibm.com/developerworks/webservices/library/ws-restful),在遇到分页的问题后,我担心我的有状态队列类似于按页递增,但实际上它们与“下一页”完全不同在客户端,“pop”是相对的,而对于客户端,“pop”总是无状态的:以前弹出什么并不重要
谢谢你让我清醒过来!“-Me您可以采取两种基本方法:
start=10
、第3页使用start=20
等查询中分页的
您可能会发现,当您在页面之间来回导航时,页面内的内容会发生变化,但那又怎样呢?你总是能得到最新的信息,谷歌可以在他们的任何一台服务器上处理你的请求,而无需找到你的会话信息来确定你上次的查询上下文是什么
这种方法的最大优点是服务器实现的简单性。每个请求都可以直接传递到后端的数据层,在HTTP级别(通过E-Tags或Last Modified Header)和服务器端(例如,使用memcache)进行缓存是完全成熟的我可以继续,但希望你能理解我的观点。选择选项1,然后变为无状态。否则,您将试图在服务器端跟踪客户端状态唯一应该跟踪客户机状态的是客户机本身。维护资源状态是可以的。“无状态禁止”只是指会话状态 以下是一段摘录: 接下来,我们将向客户机-服务器交互添加一个约束: 通信在本质上必须是无状态的,如 第3.4.3节(图5-3)中的客户端无状态服务器(CSS)样式, 这样,从客户端到服务器的每个请求都必须包含 了解请求所需的信息,并且不能 服务器上任何存储上下文的优势。会话状态为 因此完全由客户负责
遇到这个问题,寻找处理并发性的最佳实践,
从答案中,没有任何关于“”的参考。我看不出这里有什么问题。RESTful API可以——而且IME几乎总是——由有状态服务器支持。你能澄清一下你试图解决的问题吗?电子标签可以用来提供并发性,所以从客户端的角度来看,它必须是无状态的?这当然很有道理。我刚刚读了一篇关于RESTful API的文章(),在遇到分页的问题后,我担心我的有状态队列类似于按页递增,但实际上它们是完全不同的,因为“下一页”在客户端是相对的,而“pop”在客户端总是无状态的。以前爆出什么并不重要。谢谢你让我清醒过来!我不认为在浏览结果集页面时接受内容更改是唯一的思考方式。您可能会看到两个条目——好的(客户机可以处理),但您也可能会完全由于删除了过去/以前页面的范围而错过条目——这不好。对于谷歌搜索结果,这可能无关紧要,但在其他情况下可能无关紧要。作为替代方案,可以在客户端获取“所有ID”(好的,对于大多数情况下都不可行的谷歌搜索结果),并逐页浏览此列表,在到达带有该ID子集的结果集页面时加载更多内容。坏消息是,问题马上又来了:可能有问题