如何在这个复杂的数据传输场景中最大限度提高效率

我不确定这个问题是否属于这个问题,因为它完全是基于理论的,但是我认为这个问题和其他问题相比,这个问题最适合。

我有500,000出租车与Android 4电脑里面。 每天,在一个人或一个派对旅行之后,计算机将关于旅程的信息发送到Node.js服务器。 每天大概有35次出行,这意味着每天有50万出租车* 35次出行= 1750万次的报告发送到Node.js服务器。 另外,每个报告大约有4000个字符,大小约为5KB。

出租车计算机发送到node.js服务器的报告只是一个http文章。 Node.js然后会发送确认信息给出租车。 如果出租车在分配的时间内没有收到报告A的确认,则重新发送报告A.

node.js服务器只是接收报告。 将确认信息发送回出租车。 然后将完整的报告发送到MongoDB。

一个潜在的问题:出租车1向node.js发送报告A. Node.js在分配的时间内没有响应,因此出租车1将报告A重新发送到node.js. Node.js最终处理所有内容并将报告A两次发送到MongoDB。

因此,MongoDB负责检查是否收到多个相同的报告。 然后MongoDB插入数据。

其实我有几个问题。 这对于NodeJS来说太多了(我不这么认为,但是可能是一个问题)? 这对于MongoDB来说太多了吗? 我觉得检查重复报告可能会严重阻碍业绩。

我怎样才能使整个系统更有效率? 我应该改变或添加什么?

第一个潜在的问题很容易克服。 计算行程的散列并将它们存储在mongo中。 把密钥放在该字段上,然后比较每个下一个文档,如果相同的散列存在。 这种方式检查重复将是非常容易,真的很快。 请记住,这个文件不应该像发送时间那样。

第二个问题:一千七百五十万/天是一百九十六分之一秒的惊人的声音,但实际上并不是那么好的服务器,对于Mongodb来说肯定不是问题。

很难说如何提高效率,我非常怀疑你现在应该考虑一下。 试一试,做一些事情,检查一下哪些工作没有效率,然后再回答具体的问题。

PS不要在评论中回答所有这些问题。 你必须明白,这个问题是非常模糊的。 没有人知道你的旅行文件是什么意思,它有多大。 它可以是1kb,可以是10Mb,可以是100Mb(即16Mb以上的MongoDB限制)。 没人知道。 当我说196个文件/秒不是问题时,我没有说这个文件的数量是最大上限,所以即使是2个,3个也是可行的。

你必须自己尝试一下 。 采取亚马逊amazon实例,看看有多less文件(创build接近你的大小和结构的文件),它可以节省每秒。 如果它不能处理它,试着看看它可以多less,或者可以亚马逊大实例处理它。

我粗略地估计过这是可能的,我不知道你想要“包括使用MongoDB的pipe理员,更新,select”。 你有问题吗?