ServiceStack Web服务的存储转发故障转移解决方案

时间:2014-01-21 05:22:31

标签: rest redis servicestack rabbitmq message-queue

我正在Northwest US为一系列回收中心开发客户帐户系统。我们的主要功能之一是,我们的客户可以设置与bottle deposit refunds相同的帐户,而不是始终支付现金。客户还可以放下现场处理并记入贷款的可回收物品袋。每个中心都接近容量,可以在离线时对罐头和瓶子进行物理处理,因此我们没有太多的余地让IT基础设施在互联网熄灭时关闭所有东西。

基本上,我被要求开发一个客户帐户系统,允许零售中心的信用额度过帐到帐户,即使我们的中央服务器的电信中断了几个小时。这将允许中心在管道堵塞时继续处理和贷记客户。某些交易(如提款)不需要在这种情况下发生,因为我们无法准确地获得客户的当前余额。

我们是一家百分之百的Windows商店,IT经理和网络管理员不希望接近任何东西* nix。每个零售中心都有一个内部专用的Windows Server,因此这似乎是一个合乎逻辑的起点。

我是ServiceStack的忠实粉丝,基于REST-ful消息的范例似乎可行。我将创建一个“Credit”消息并将其发送到本地服务器。消息代理将记录请求并尝试将该消息转发到处理它的中央服务器。如果中央服务器出现故障,我会依靠MQ的可靠消息传递协议来保持它,直到电信恢复。每个中心的总体预期音量为100秒到1000小时,而现代计算术语则很低。

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

所以,最终的问题是:

  1. 可靠的消息传递系统是解决此问题的正确解决方案吗?我还应该考虑其他方法吗?
  2. Redis有替代品可以与ServiceStack配合使用吗?我可以在Windows上使用“生产质量”NoSQL服务器替代品吗?
  3. 我简要介绍了RabbitMQ。可能是一个选择吗?我的谷歌搜索没有显示它与ServiceStack之间的任何活动集成,所以我对从头开始写一些东西很谨慎。
  4. 理想情况下,我的解决方案的开销足够低,我们可以执行同步更新,并在一切运行良好的情况下向客户返回“当前余额”收据。这是现实吗?

2 个答案:

答案 0 :(得分: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适配器。

答案 1 :(得分:0)

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