java - 如果超过 AWS Neptune Server 的容量,是否限制请求数量(读取、更新、删除)?
问题描述
我正在尝试对向 Neptune 服务器发出的数据库请求实施一些限制。问题是:
- 执行分析、日志、更新、删除的多个计划作业
- 用户活动,与用户相关的任何内容:读取、写入、更新、删除
所有这些请求取决于它们何时发生可能会影响数据库的性能和可用性,因此我们会在任何给定时间发生突然的流量峰值。缩放在这里不是一个选项,所以我想限制对数据库服务器的请求/作业。所以我的问题是在 Spring Boot 和 Java 中实现这一点的首选方法是什么,因为到目前为止我还没有找到合适的解决方案?
解决方案
Amazon Neptune 在这里为您提供了一些帮助。查询由工作线程处理。实例上的工作线程数通常是该实例上 vCPU 数的两倍。如果所有工作人员都忙,请求将被放入队列中。该队列最多可容纳 8K 个请求。如果队列已满,Neptune 将向调用者发送一个限制异常。您可以监控多个 CloudWatch 指标,包括队列的备份情况以及 CPU 的繁忙程度。这可能有助于监控实例上的负载。
至于客户端节流,听起来您可能想在 Neptune 前面放置一个队列或流,所有请求都会通过。如果您想将来自不同类别用户的请求分开并决定优先处理哪个,您可以有多个队列。然后,您的应用程序可以从队列中拉出并根据需要进行节流。
如果不了解更多关于您的精确用例的信息,就很难提供更好的指导。
推荐阅读
- elasticsearch - 使用文档类型调用时,Elasticsearch 搜索 API 不返回结果
- api - 使用个人访问令牌访问第 3 方 API 的开源应用程序。如何安全地使用它?
- unreal-engine4 - 使用触摸的虚幻引擎移动旋转
- javascript - 在 React 中将 Json 数据放入页面
- python - Python类型检查numpy数组包括它们的dtype
- node.js - axios post返回404
- html - 按钮的用户样式表声明覆盖自定义 CSS
- javascript - 无法在.jsp 中获取表单的值?
- c# - Visual Studio 2017 中有时缺少项目模板
- python - Pytorch:如何从扁平化网络中解压/取回网络?