我想创建一个 CQRS和事件源架构,该架构非常便宜,非常灵活并且非常简单。
我想确保事件永远不会至少到达发布者/事件存储,因为那是业务所在。
现在,我想到了几个选择:
天蓝色
天蓝色,我似乎不知道该用什么。
这些无服务器蓝色解决方案的可靠性如何?
自定义
为此,我正在考虑使用RabbitMQ,问题在于运行虚拟机的成本。
您的经验表明什么?
其他选择呢? (例如:apache-kafka
)?
答案 0 :(得分:1)
为什么不运行事件存储?由格雷格·杨本人创建。在您需要的地方托管。
答案 1 :(得分:1)
我是Java用户,我一直在使用hornetq(我不使用的artemis)来代替Rabbitmq的时间最长;唯一的问题是它不支持复制,但在事件外包方面却能完成工作。对于您的自定义场景,rabbitmq是一个不错的选择,但请尝试以低成本在数字海洋实例上运行它。如果您正在寻找简单性和灵活性,则只有两种选择,可以建立自己的或放弃简单性,并选择具有所有复杂性的apache kafka,但会给您带来灵活性。同样,您也可以使用mongodb构建事件存储。 https://www.mongodb.com/blog/post/event-sourcing-with-mongodb
答案 2 :(得分:0)
您的要求太含糊,无法做出最佳选择。您需要考虑很多事情,其中之一是,例如,每个聚合的事件数,聚合的数目(请注意,这必须是统计的)。这些非常重要,主要是因为如果每个聚合允许成千上万个事件,那么您将需要进行快照,这会增加您可能不需要的复杂性。
但是对于常规用例,您可以仅使用Postgres之类的关系数据库作为(线性化)事件存储。它还具有监听/通知功能,您实际上也不需要任何消息总线,并且您的应用程序可以以响应方式编写。