Redis是企业警报消息系统的合适消息系统吗?

时间:2015-04-09 14:38:26

标签: asp.net wcf redis stackexchange.redis

我被要求为我的组织创建一个简单的警报消息系统。我一直在调查Redis,我想知道我是否应该将它作为通信引擎构建应用程序。

我的要求是:

  • 提醒作曲家必须基于网络
  • 警报消息必须能够发送到网络上的所有计算机或任何计算机子集
  • 计算机客户端必须向系统确认收到消息
  • 服务器必须可以跨数据中心进行群集。
  • 必须快速将邮件发送给客户
  • 必须在Windows Stack上运行

我正在考虑为作曲家设置一个带有asp.net页面的Web场,并将SQL Server作为数据存储库。我还计划在服务器场上安装一系列WCF端点,以处理服务器间通信和服务器 - 客户端通信。

服务器间通信将用于协调和分发客户端列表以接收警报,其中服务器 - 客户端通信将用于获取客户端计算机的实际警报。

我越是想到这种方法,就越能意识到需要多少个活动部件。 (从每个客户端发送到服务器的心跳,从发送给对方的所有服务器发出的心跳......)

自从阅读Redis以来,我想知道我是否可以删除WCF端点并使用Redis的Pub-Sub功能来处理消息分发? Redis是否在群集中的所有节点上分发发布事件?我是否可以让所有客户端应用程序直接订阅Redis数据库并在群集上平衡这些连接?

1 个答案:

答案 0 :(得分:1)

Redis集群仍然年轻,而且对Redis而言并不是一个强大的力量。它主要用于在redis节点之间分片数据。 Redis sentinel主要用于管理主设备(用于写入)和许多从设备(用于读取)。平衡客户端之间的负载应该是手动AFAIK。  redis的分区容差实际上很糟糕(但对其余部分来说非常好)。

您需要可靠的送货吗?你需要重新发送消息吗? Redis不会这样做,如果您没有订阅,那么您将不会收到消息,也无法检查已发送的消息(或者您在redis上使用Entreprise Integration Patterns实现自己的系统)。此外,redis不耐用,崩溃可能导致数据丢失。

对于群集上的发布订阅,我建议你看看apache Kafka,它非常受群集技术的欢迎,特别是对于大数据。

http://kafka.apache.org