我有一个微服务架构,现在我需要引入一个通知中心。要求是:任何服务都能够发送通知,任何服务都能够订阅任何类型的通知,UI(web)能够订阅通知(首选websockets)。当然,我可以自己编写这样的服务,但也许有现成的强大解决方案。
UPD:我不是在寻找发布/订阅消息系统,因为它对于通知中心而言太低了
您正在寻找的是发布订阅者消息。如果您使用的是AWS栈,那么我可以推荐Amazon SNS或Amazon SQS。我认为Amazon SNS更适合因为它的推送。
Amazon SNS允许应用程序通过“推送”机制向多个订户发送时间关键消息,从而无需定期检查或“轮询”更新。
Amazon SQS是分布式应用程序用于通过轮询模型交换消息的消息队列服务,可用于解除发送和接收组件 - 无需每个组件同时可用。
在亚马逊网络服务堆栈中,有一堆免费的消息传递解决方案:
RabbitMQ是AMQP协议的领先实现之一(以及Apache Qpid)。因此,它实现了代理体系结构,这意味着消息在发送到客户端之前在中心节点上排队。这种方法使RabbitMQ非常易于使用和部署,因为只需几行代码就可以支持路由,负载平衡或持久消息队列等高级方案。但是,它也使其可扩展性降低,“慢”,因为中央节点增加了延迟并且消息包络非常大。
ZeroMq是一个非常轻量级的消息系统,专为高吞吐量/低延迟场景而设计,例如您可以在金融领域找到的场景。 Zmq支持许多高级消息传递方案,但与RabbitMQ相反,您必须通过组合框架的各个部分(例如:套接字和设备)来自己实现大部分消息。
ActiveMQ处于中间地带。与Zmq一样,它可以与代理和P2P拓扑一起部署。与RabbitMQ一样,实现高级方案更容易,但通常以原始性能为代价。
现在你知道了你需要什么,我建议你仔细阅读每种技术并确定哪一项能更准确地为你的目标服务。如果这不值得我们花时间,你的要求更具体,相对较小,那么你可以自己写一些东西。