2014-01-21 31 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