我目前正在我的 HTTP 1.1 服务器中实现 http 管道。响应顺序对应于接收请求的顺序。但是各个请求的处理是否可以/应该并行,或者也应该与接收请求的顺序相对应?我正在考虑管道内相互依赖的请求,其中执行顺序是相关的。这里最明智的方法/最佳实践是什么?从服务器的角度来看,根据请求顺序并行处理和序列化响应是性能的最佳解决方案。但是,如果客户端一个接一个地发送相互依赖的请求,这可能会导致意外的行为。
我认为顺序/一致性问题完全存在于应用程序领域,这使得它只是一个设计选择的记录。
根据我的经验,处理允许“意外竞争条件”性能的接口的最佳方法是在文档中明确说明。
让用户做正确的事情的最佳方法通常是为他们提供一种明确的方法来控制执行顺序,以防万一。
我认为遵循最小惊喜原则更简单:
这样,用户始终可以通过打开独立连接来实现并行化,不相关的会话默认已经是并行的。
如果独立用户可能会创建冲突的更新,则您需要原子事务。