2014-01-21 24 views
1

我正在为Northwest US中的一个回收中心链开发客户账户系统。我们的主要特点之一是,我们的客户可以设立账户,并记入bottle deposit refunds,而不是总是支付现金。客户还可以放弃现场处理和记入的可回收物品袋。每个中心运行在接近容量的状态下,并且可以在离线状态下物理处理罐和瓶子,所以我们没有太多的IT基础设施在互联网熄灭时关闭所有设备。ServiceStack Web服务的存储转发故障转移解决方案

基本上,我被要求开发一个客户账户系统,即使与我们中央服务器的通信在数小时内发生故障,也能将零售中心的信用过账到账户。这将使中心能够在管道堵塞时继续处理和记入客户。某些交易,如退出,并不需要在这种情况下发生,因为我们无法准确获得客户目前的余额。

我们是100%的Windows商店,IT经理和网络管理员不希望接近任何* nix。每个零售中心都有一个内部专用的Windows Server,所以这似乎是一个合理的开始。

我是ServiceStack的巨大粉丝,而基于REST-ful的基于消息的范例似乎可能工作。我会创建一个“信用”消息并将其发送到本地服务器。那里的消息代理会记录请求并尝试将该消息转发到处理它的中央服务器。如果中央服务器发生故障,我将依靠MQ的可靠消息协议来保持它,直到电信恢复。总体预期量是每个中心100到1000个信息,按照现代计算术语来说是很低的。

ServiceStack的Redis MQ Client/Server看起来很有趣,但由于Windows Redis服务器明确标记为“原型”和“不生产质量”,因此有0%的机会可以利用它。

因此,最终的问题是:

  1. 是一个可靠的消息传递系统的正确类型的针对此问题的解决方案?我应该考虑其他方法吗?
  2. Redis可以替代ServiceStack吗?是否有可以在Windows上使用的“生产质量”NoSQL服务器替代品?
  3. 我简单看了一下RabbitMQ。这可能是一个选择吗?我的谷歌搜索没有显示它与ServiceStack之间的任何积极的整合,所以我不知道从头开始写点东西。
  4. 理想情况下,我的解决方案的开销足够低,如果一切正常,我们可以执行同步更新并向客户返回“当前余额”收据。这是现实的吗?

回答

2

用于在Windows上运行Redis的生产解决方案是run redis-server inside a Linux VM on windows with Vagrant

ServiceStack当前有一个feature request to add more MQ Options。预计Rabbit MQ将成为将来支持的下一个MQ适配器。

+0

我会研究流浪 - 可能是一种可以接受的方法。关于RabbitMQ的真棒新闻 - 我期待在未来的版本中看到它。你有机会找人写x.x.#发行说明吗?弄清楚4.0.3和4.0之间的变化。5,等等是非常困难的:( – jklemmack

+0

@jklemmack Vagrant简化了配置,配置和启动虚拟机。如果管理更容易,您可以跳过Vagrant并在您首选的虚拟机环境中运行redis-server。 – mythz

+0

看起来像RabbitMQ将要符合该法案,而ServiceStack中的伟人们刚刚发布了初始集成!w00t – jklemmack

0

作为后续行动,MS Open Tech发布了Redis 2.8.9的“生产就绪”原生实现。 GitHub link