欢迎浏览sook云!

网站地图

当前位置:主页 > 云主机 > 主机租用 >

云服务器那个好_海外_移动物联网解决方案

时间:2021-02-23 19:00

人气:

作者:sook云

导读:对讲机允许我们的客户存储客户的自定义数据。这些数据是难以置信的自由格式,范围从整数值到大量文本。一开始,有MongoDBMongoDB是我们的第一个解决方案。它工作得很好,但随着对...

云服务器那个好_海外_移动物联网解决方案

对讲机允许我们的客户存储客户的自定义数据。这些数据是难以置信的自由格式,范围从整数值到大量文本。一开始,有MongoDBMongoDB是我们的第一个解决方案。它工作得很好,但随着对讲机的扩展,它给一些客户带来了用户列表的问题。我们决定保留MongoDB作为真相的来源,并使用Elasticsearch作为我们访问数据的方式。以下是我们开始大量使用Elasticsearch时学到的。

第一步2014年底,我们开始在Elasticsearch中实现UserList,到2015年初,它已经投入生产。这对我们的大客户来说是一个巨大的改进,对我们的小客户来说是一个轻微的改进。其中一个主要功能是或过滤,我们最需要的功能之一。把数据输入到Elasticsearch中是我们遇到的第一个大问题。此时我们为MongoDB使用的提供程序没有提供访问Oplog的方法,因此我们无法以这种方式接收。最后我们得到了以下结果:当为save、create等触发Rails回调时,它将从MongoDB获取文档,将其转换为JSON,并将其发送到SQS。在另一端,Logstash将从SQS读取,批处理更新并将它们发送到Elasticsearch。我们直到最近才把这个装置保留下来。初始发行如果我们向客户提供了错误的数据,那么迁移到新服务是没有意义的。其中一个主要问题是试图获得一个能够正常工作的Elasticsearch映射。经过大量的跨团队工作,爱回扣返现网,我们得到了一个有效的映射。创建了一个worker,它将检查Elasticsearch和MongoDB的计数,如果不匹配,则重新导入,同时每周对MongoDB到Elasticsearch的所有用户数据进行全面重新插入。我们相信这是一个很好的方法来缓解我们的问题。当我们试图在Elasticsearch映射中为MongoDB数据建模时,我们犯了一个错误。我们决定为每个自定义数据以及它可能是的每种类型创建一个新字段。每次添加新的自定义数据时,映射都会增长。几个月后,我们注意到我们的Elasticsearch集群出现了长时间的阻塞性GC暂停。这导致了Elasticsearch暂停,一度集群每天有1小时以上的时间不可用,暂停时间为1分钟。这给我们的客户带来了问题,什么是大数据技术,因为用户列表需要很长时间才能加载,或者在坏的情况下超时而根本不加载!就在这个时候,我们使用弹性支承。我们发送了诊断报告,他们告诉我们这个问题是由无限的映射增长引起的。我们的地图已经达到了150MB,而且还在增长。每次更新它都需要发送到集群中的每个节点。我们有10个节点,所以每次传输的数据是1.5GB。我们的解决方案是创建一个可以重用现有字段的映射。MySQL中的一个表,用于将客户应用程序中的自定义数据映射到Elasticsearch中的字段。现在,我们的映射只有在拥有最多定制数据的客户添加新数据时才会增长。更多问题在使用了将近一年的摄取之后,我们开始担心我们的数据一致性问题比我们最初预期的要多。我们正在处理来自客户的关于他们的数据在用户列表中不匹配的缓慢但稳定的报告。由于我们现在已经将MongoDB内部移动并可以访问MongoDB Oplog,所以我们决定使用MongoDB Oplog作为真相的来源来开发一个新的摄取管道。这导致我们创造了阿古斯。Argus是一个Go服务,它跟踪MongoDB Oplog,批处理更新并将它们发送到两个SQS队列。一个队列由一组工人提供服务,他们将数据摄取到Elasticsearch中,另一个队列只对MongoDB和Elasticsearch中的文档进行比较。最近我们遭受了与碎片大小相关的主要集群不稳定性。我们最初的Elasticsearch基础设施是一个包含24个碎片的索引,每个客户的应用程序有一个别名,以及基于客户ID的路由。但是,这确实意味着我们最终得到了热定位。Elastic建议碎片不超过30-50GB;我们有超过300GB的碎片。我们的解决方案是将索引分成10个索引,每个索引有24个碎片。我们创建了一个迁移工作程序,什么是大数据,特价云服务器,可以为客户的应用程序启用双重写入。所有新的更新都会被摄取到旧索引和新索引中,免费云服务器试用,当这发生时,工作人员会获取客户应用程序的所有用户,并将他们重新索引到新索引中。它将确定哪个碎片将落在每个索引上,然后找到最小的碎片来更好地平衡索引中的数据。除了一些早期的问题,这是完美的工作,没有我们的客户注意到。未来我们有几个计划在将来进一步改进和扩展Elasticsearch。既然我们有能力支持多个集群,我们现在正在考虑将客户分成不同的集群。这使我们能够:在出现问题时减小爆炸半径,尝试不同的硬件配置,测试不同版本的Elasticsearch及其插件。与路由及其后续的热定位不同,我们的设置现在意味着我们可以很容易地尝试删除客户应用程序的某个部分的路由,看看是否可以从中获益。如果我们要为一个大客户建立一个单独的索引,这将变得特别有用,因为我们希望他们的数据分布在索引中的碎片中。目前,我们通过Rails应用程序中的gem使用Elasticsearch做了很多工作。随着我们转向一个更加面向服务的架构,我们越来越有必要将与Elasticsearch的大量对话转移到一个独立的服务上,这个服务对我们的客户来说是不受语言限制的。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

关于我们 | 版权声明 | 广告服务 | 友情链接 | 联系我们 | 网站地图

Copyright © 2002-2020 sook云 版权所有 备案号:豫ICP备xxxxxxxx号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。