我需要每分钟插入一个5K记录,而不是'#34;不可靠" Internet连接到基于云的数据库(来自不同的10个系统,所有系统都同时运行)。互联网连接是10 MB,我的应用程序需要容忍每月停机一次,最多1天。我的应用程序在亚洲的一家工厂运行,IT基础设施/支持很差,这是不可靠和长时间停机的根源。
您能否在不丢失数据的情况下建议如何执行此操作?
我想到的解决方案:
保留插入内存(或简单文本文件)队列,每次插入失败时都将其放入队列中以便稍后再次尝试。我不喜欢这样,因为我必须重新设计我的应用程序才能有一个并行循环来处理这个问题,以免甩掉主循环的时间。
使用消息代理/队列(如RabbitMQ)。我不喜欢这样,因为虽然将SQL语句放入代理很容易,但我不必编写一个额外的服务来轮询代理,执行sql语句,处理错误等等.I&#39 ;我知道Mule ESB可以做到这一切,但设置起来很复杂。
数据库复制。我实际上需要N:1(合并)复制,我认为除了MS SQL Server之外的任何主要数据库都不支持复制,因为复杂性我不需要处理。我可能还需要在这样的中断后重新启动数据库并等待它再次执行,然后执行任何更多的写操作。
还有其他解决方案吗?感谢。
答案 0 :(得分:0)
我决定在本地实例和云实例之间使用replicated的消息代理(RabbitMQ)。然后,我将使用队列中的JSON数据并将其存储在数据库中(JSON - > Object - > ORM - > DB)。
虽然这确实增加了相当大的复杂性,但事实证明我需要与另一个应用程序进行双向通信,因此它值得。