热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从节点请求Couchbase的并行DB请求。jsSDK-parallelDBrequeststoCouchbasefromNode.jsSDK

IamhopingtofireoffseveralGetrequeststoCouchbasestoreinashorttimespan,sayinahalf

I am hoping to fire off several Get requests to Couchbase store in a short time span, say in a half a millisecond.

我希望在很短的时间内(比如半毫秒)发送几个Get请求到Couchbase商店。

I can't use a multiGet because I don't have all the keys at the same time.

我不能使用multiGet,因为我没有同时拥有所有的键。

However, if I fire off several separate get requests shortly after one another, I believe they will processed one at a time as indicated in here http://docs.couchbase.com/couchbase-devguide-2.5/index.html#retrieving-multiple-keys.

但是,如果我在一个接一个地触发几个单独的get请求,我相信它们将在一个时间内处理一个,如http://docs.couchbase.com/couchbase-devguide-2.5/index.html#retrieving- multikeys。

One thing I could perhaps do is use a separate Connection object created at startup time for each Get request, but I haven't seen this recommended anywhere as a best practice.

我可以做的一件事是为每个Get请求在启动时创建一个单独的连接对象,但是我还没有见过任何地方推荐的最佳实践。

Would that work i.e. allow me to quickly do Get's in parallel and is that the recommended thing to do?

这能行吗,让我快速地同时做Get,这是推荐的做法吗?

1 个解决方案

#1


3  

Don't make separate connections, that I don't suggest. It only adds extra load on the database. You can add connections for other databases, but not the for the same database.

不要建立单独的联系,我不建议这样做。它只会增加数据库的额外负载。您可以为其他数据库添加连接,但不能为相同的数据库添加连接。

You have a couple of choices:

你有几个选择:

  1. Make multiple requests anytime you get to know a number of keys. As you said this might not scale well. I suggest you try this and test it to see how it goes, since it's easiest to implement. If it matches the requirements then use this. Luckily in Node.js requests are actually asynchronous, so they are done in parallel actually, and the docs focus is non-asynchronous programming languages, so it might not be that bad. But the database will have to do to extra work. With this solution, you might have shortest latency to obtain a single key value.

    无论何时,只要知道了几个键,就可以发出多个请求。就像你说的,这可能不太好。我建议您尝试一下并测试它,看看它是如何运行的,因为它是最容易实现的。如果它匹配需求,那么使用这个。幸运的是在节点。js请求实际上是异步的,所以它们实际上是并行执行的,而文档关注的是非异步编程语言,所以可能没有那么糟糕。但是数据库需要做额外的工作。使用这个解决方案,您可能有最短的延迟来获得一个键值。

  2. If the timespan that all the keys come is short as half milisecond(it's really a short time!), just wait for them to all come and make a bulk request. Make sure your half milisecond will not become 200 millisecond on heavy load! If it's always that short, then this will be a better solution.

    如果所有键的时间间隔都短到半毫秒(真的是很短的时间!),那就等它们都来了,然后大量请求。确保你的半毫秒在负重时不会变成200毫秒!如果它总是那么短,那么这将是一个更好的解决方案。

  3. Make a queue and use a hybrid approach. If the above suggestions don't work well on all situations, you may try this: Whenever you need a key, push to the queue. Check the queue on a time interval and get the keys in the queue together and clear the queue. The time interval can be something like 5ms or 10ms or even more. Depending on how fast the keys come and how fast you need them. You have test this solution with heavy load on different settings to tune it well. With this you might get low latency for getting the result of a single key value, and also not putting extra load on database.

    创建一个队列并使用混合方法。如果上面的建议在所有情况下都不能很好地工作,您可以尝试这样做:当您需要密钥时,按下队列。检查队列的时间间隔,将队列中的键放在一起,清除队列。时间间隔可以是5ms或10ms甚至更多。取决于键的速度和你需要它们的速度。您已经对这个解决方案进行了测试,并在不同的设置上使用了大量的负载,以便对其进行优化。使用这种方法,您可能会获得一个键值的结果的低延迟,并且不会给数据库增加额外的负载。


推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
author-avatar
伸手以后
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有