【发布时间】:2019-05-24 00:41:59
【问题描述】:
考虑一个基于事件驱动的微服务的 Web 应用程序,它应该具有一些异步 Web API。 AFAIK 实现异步 http 请求/响应的建议方法是使用202 Accepted 状态代码和位置标头响应每个 API 调用,以便调用者稍后检索结果。
这样,我们必须为每个请求生成一个唯一的 ID(如 uuid 或 guid),并将该 ID 和所有相关事件存储在一个持久存储中,以便 API 调用者可以跟踪其请求的进度。
我的问题是考虑到我们每秒可能有数万或数十万个请求和响应,应该如何实现这个 API 层。在这种负载下制作此类 API 的最有效架构和工具是什么?
一种方法可能是将所有请求和所有相关事件存储在数据库和像 redis 这样的缓存中(仅限于某个有限的时间,比如 30 分钟)。 有没有更好的模式/架构/工具?大公司和网站如何解决这个问题? 哪种数据库更适合这种情况? (MongoDB、MySQL、……)
如果您有一些生产经验,我真的很感激任何有用的答案。
【问题讨论】:
标签: rest asynchronous database-design architecture microservices