我正在寻找构建一个 Java11 Spring 引导应用程序。该应用程序将处理非常大的吞吐量(将有高峰和低流量)
应用程序的快乐路径如下所示。
从概念上讲,它相当直截了当。步骤大致是这样的
- 接受传入的 POST 请求。保存端点处的 DTO 对象。
- 然后应用程序将验证 DTO 并在它无效时返回相关的错误消息。
- 转换为数据库实体对象
- 将实体保存到 Postgres 数据库。
我们对这个应用程序的潜在问题是它会为每个请求进行数据库保存,它会保存很多单独的保存。数据库连接池可以快速用完更多的连接。
我的替代方法看起来像这样
一旦传入的 DTO 通过验证并在内存队列中排队,我希望返回状态 200。
这里没有外部阻塞,如果数据库出现故障 - 这意味着内部队列将提供一些冗余。
所以一些问题/想法
- 这看起来像一个好方法吗,有什么我应该注意的陷阱吗?
- 也许您以更好/不同的方式解决了类似的问题?
- 无论如何,反应式流会有所帮助吗?
- 我应该为此使用哪些内部 Java 库?我的想法是使用 Java 的 LinkedList
Queue<SomeDto> myQ = new LinkedList<SomeDto>(); )
进行内部排队?