gpt4 book ai didi

java - 使用外部数据库处理非常大的吞吐量

转载 作者:行者123 更新时间:2023-12-01 17:44:51 25 4
gpt4 key购买 nike

我正在寻找构建一个 Java11 Spring 启动应用程序。该应用程序要处理非常大的吞吐量(会有峰值和低流量)

应用程序的幸福路径如下所示。

happy path

从概念上讲,它相当简单。步骤大致如下

  • 接受传入的 POST 请求。保存端点处的 DTO 对象。
  • 应用程序将验证 DTO,如果无效则返回相关错误消息。
  • 转换为数据库实体对象
  • 将实体保存到 Postgres 数据库。

我们对这个应用程序的潜在问题是,它将根据每个请求进行数据库保存,并进行大量单独的保存。数据库连接池可能会很快耗尽所建立的更多连接。

我的替代方法如下所示

internal queue

一旦传入的 DTO 通过验证并在内存队列中排队,我希望返回状态 200。
这里没有外部阻塞,如果数据库出现故障,这意味着内部队列将提供一些冗余。

一些问题/想法

  • 这看起来是个好方法吗?我应该避免哪些陷阱吗?密切注意,提防,小心?
  • 也许您已经在更好的/中解决了类似的问题不同的方式?
  • 响应式(Reactive)流有什么帮助吗?
  • 为此我应该使用哪些内部 Java 库?我的想法是使用Java的LinkedList Queue<SomeDto> myQ = new
    LinkedList<SomeDto>(); )
    用于内部排队?

最佳答案

如果应用程序因内部队列中的数据而失败,会发生什么情况?或者内存中的保存操作是否溢出?

如果您想构建更强大的东西,您可以考虑使用事件日志解决方案(例如基于 Kafka),其中消费者填充数据库(Kafka 将取代您的内部队列)。

但是,在这里很难真正回答您的问题,因为必须考虑许多其他因素。

我建议你读一本类似Designing Data-Intensive Applications的书:这绝对是一个宝贵的资源,它将帮助您根据您的需求和环境设计可靠的解决方案。

关于java - 使用外部数据库处理非常大的吞吐量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56755559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com