在我的公司,我们使用MS Dynamics AX 2009.我们有大约100个用户。 MS Dynamics AX的服务器位于总部公司。
我们正在使用Play Framework和Scala语言开发新网站。但是,网站服务器不在总部公司,专用服务器托管在欧洲ISP的OVH中。
网站实时需要ERP数据,但MS Dynamics AX数据库位于总部公司,互联网连接非常不稳定。
这就是问题所在!我们需要网站和ERP之间的双向通信,但ERP服务器的互联网连接非常不稳定。 我们考虑过两个解决方案:
在总部和网站上使用RabbitMQ。当ERP中发生事件时,ERP会在RabbitMQ中发送消息,当互联网连接正常时,网站会收到此消息。当网站发生事件时,网站会在RabbitMQ中发送消息,当互联网连接正常时,ERP会收到此消息。所以,我们有2个RabbitMQ,一个在总部,另一个在网站服务器中。
使用MS SQL Server Replication将数据库从总部复制到ISP,我们需要ISP中的两台服务器:网站(Linux,Apache,MySQL,Play Framework)和SQL副本(Windows,SQL Server) )。当ERP中发生事件时,SQL Server复制会将这些更改传播到ISP中的SQL Replication服务器,并且网站始终读取SQL Replication Server中的数据。当网站中发生事件时,我们还需要像以前一样的RabbitMQ队列。
您如何看待这种架构?什么是最好的解决方案? MS SQL Server可以复制一个不稳定的互联网锥形吗?
提前谢谢。
答案 0 :(得分:1)
我曾在墨西哥的一家公司工作,该公司的互联网连接不稳定,必须开发一个带有第三方产品的定制解决方案。
有一条评论/想法是,您真的需要所有您的ERP数据还是只需要更小的子集?
我不完全确定RabbitMQ是什么,但如果它像MSMQ那样听起来不是一个坏主意。
我建议使用AIF和MSMQ(实际使用WCF& NetMsmq 绑定)或获取Scribe / CastIron / Biztalk等第三方产品来提供帮助。第三方产品很可能是您最好的选择。
MSMQ我认为它会起作用,因为它将所有内容发送到消息队列以进行发送/接收,并且异步工作。数据库镜像很痛苦,尤其是网络连接不稳定。您可能最终会在晚上发生大部分镜像,并丢失实时数据。