我希望在短时间内(例如半毫秒内)向Couchbase存储触发一些Get请求。
我不能使用multiGet,因为我没有同时拥有所有键。
但是,如果我很快又触发了几个单独的get请求,我相信它们会一次处理一个请求,如此处http://docs.couchbase.com/couchbase-devguide-2.5/index.html#retrieving-多键。
我可能可以做的一件事是使用在启动时为每个Get请求创建的单独的Connection对象,但是我没有在任何地方看到推荐的最佳实践。
这项工作是否可以使我快速并行执行Get,这是推荐做的事情吗?
我不建议不要建立单独的连接。它只会增加数据库的额外负载。您可以为其他数据库添加连接,但不能为同一数据库添加连接。
您有两种选择:
只要您知道许多按键,就可以发出多个请求。如您所说,这可能无法很好地扩展。我建议您尝试一下并对其进行测试,以查看其进展,因为它最容易实现。如果符合要求,则使用它。幸运的是,Node.js中的请求实际上是异步的,因此它们实际上是并行执行的,并且文档重点是非异步编程语言,因此可能还不错。但是数据库将不得不做额外的工作。使用此解决方案,您可能具有最短的延迟来获取单个键值。
如果所有键的到达时间都短于半毫秒(这确实是很短的时间!),只需等待它们全部发出并发出批量请求即可。确保您的半毫秒在重负载下不会变成200毫秒!如果总是那么短,那么这将是一个更好的解决方案。
排队并使用混合方法。如果以上建议在所有情况下均不能很好地起作用,则可以尝试以下操作:每当需要钥匙时,请按入队列。按时间间隔检查队列,并同时获取队列中的键并清除队列。时间间隔可以是5毫秒或10毫秒甚至更长。取决于按键来的速度以及您需要它们的速度。您已经在不同的设置下以高负载测试了该解决方案,以使其很好地调整。这样,您可以获得单个键值的结果的等待时间会很短,并且不会对数据库造成额外的负担。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句