用于实现异步Web API的高效架构/工具

时间:2018-12-25 07:52:28

标签: rest asynchronous database-design architecture microservices

请考虑一个基于事件驱动的微服务的Web应用程序,该应用程序应具有一些异步Web API。 AFAIK建议的实现异步http请求/响应的方法是用一个202 Accepted状态代码和一个位置标头来响应每个API调用,以使调用方以后可以检索结果。

通过这种方式,我们必须为每个请求生成一个唯一的ID(例如uuidguid),并将该ID及其以后的所有相关事件存储在持久存储中,因此API呼叫者可以跟踪其请求的进度。

我的问题是,考虑到我们每秒可能有成千上万的请求和响应,应该如何实现此API层。用这种负载制作这样的API的最有效的架构和工具是什么?

一种方法是将所有请求和所有相关事件存储在数据库和Redis之类的缓存中(仅在一定的有限时间内(如30分钟))。 有没有更好的模式/架构/工具?大公司和网站如何解决此问题? 在这种情况下,哪个数据库可能更好? (MongoDB,MySQL等)

如果您有一定的生产经验,特别感谢任何有用的答案。

1 个答案:

答案 0 :(得分:1)

非常有效的问题!在架构或工具方面,您应该查看zipkin,这是Twitter尝试并测试的开放式分布式跟踪系统,特别是如果您具有微服务架构,那么对所有请求进行跟踪非常有用。 /响应。它还包括存储选项,包括内存,JDBC(mysql),Cassandra和Elasticsearch。

如果您对微服务使用spring-boot,那么它很容易插入。
即使您不完全相信Zipkin,也值得研究一下体系结构。从生产经验来看,我已经使用过它,它真的很有用。