我正试图对向海王星服务器发出的数据库请求实施一些限制。问题是:
- 执行分析、日志、更新、删除的多个计划作业
- 用户活动,任何与用户相关的内容:读、写、更新、删除
所有这些请求都会影响数据库的性能和可用性,这取决于它们发生的时间,因此我们会在任何给定的时间出现突然的流量高峰。这里不支持扩展,所以我想限制对数据库服务器的请求/作业。所以我的问题是在Spring Boot和Java中实现这一点的首选方法是什么,因为到目前为止我还没有找到合适的解决方案?
Amazon Neptune为您提供了一些帮助。查询由工作线程处理。一个实例上的工作线程数量通常是该实例上vCPU数量的两倍。如果所有的工人都很忙,请求将被放置在队列中。该队列最多可以容纳8K个请求。如果队列填满,Neptune将向调用者发送一个throttling异常。您可以监控几个CloudWatch指标,包括队列的备份情况和cpu的繁忙程度。这可能有助于监视实例上的负载。
至于客户端节流,听起来你可能想在海王星前面放一个队列或流,所有请求都通过。如果希望将来自不同类别用户的请求分开并决定优先处理哪个请求,则可以使用多个队列。然后,你的应用程序可以从队列中取出,并根据需要进行节流。
如果不了解更多的精确用例,就很难给出更好的指导。