我被要求为我的组织创建一个简单的警报消息系统。我一直在调查Redis,我想知道我是否应该将它作为通信引擎构建应用程序。
我的要求是:
我正在考虑为作曲家设置一个带有asp.net页面的Web场,并将SQL Server作为数据存储库。我还计划在服务器场上安装一系列WCF端点,以处理服务器间通信和服务器 - 客户端通信。
服务器间通信将用于协调和分发客户端列表以接收警报,其中服务器 - 客户端通信将用于获取客户端计算机的实际警报。
我越是想到这种方法,就越能意识到需要多少个活动部件。 (从每个客户端发送到服务器的心跳,从发送给对方的所有服务器发出的心跳......)
自从阅读Redis以来,我想知道我是否可以删除WCF端点并使用Redis的Pub-Sub功能来处理消息分发? Redis是否在群集中的所有节点上分发发布事件?我是否可以让所有客户端应用程序直接订阅Redis数据库并在群集上平衡这些连接?
答案 0 :(得分:1)
Redis集群仍然年轻,而且对Redis而言并不是一个强大的力量。它主要用于在redis节点之间分片数据。 Redis sentinel主要用于管理主设备(用于写入)和许多从设备(用于读取)。平衡客户端之间的负载应该是手动AFAIK。 redis的分区容差实际上很糟糕(但对其余部分来说非常好)。
您需要可靠的送货吗?你需要重新发送消息吗? Redis不会这样做,如果您没有订阅,那么您将不会收到消息,也无法检查已发送的消息(或者您在redis上使用Entreprise Integration Patterns实现自己的系统)。此外,redis不耐用,崩溃可能导致数据丢失。
对于群集上的发布订阅,我建议你看看apache Kafka,它非常受群集技术的欢迎,特别是对于大数据。