Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure CQRS和活动采购指南_Azure_Apache Kafka_Rabbitmq_Cqrs_Event Sourcing - Fatal编程技术网

Azure CQRS和活动采购指南

Azure CQRS和活动采购指南,azure,apache-kafka,rabbitmq,cqrs,event-sourcing,Azure,Apache Kafka,Rabbitmq,Cqrs,Event Sourcing,我想创建一个非常便宜、非常灵活、非常简单的CQRS和事件源架构 我想确保事件至少永远不会无法到达发布者/事件商店,永远,永远,因为这是业务所在 现在,我有几个选择: Azure 有了azure,我似乎不知道该用什么 Azure服务总线 Azure函数 Azure webjob(我想可以用Azure函数替换) ???(还有什么我忘了或不知道的?) 这些azure无服务器解决方案的可靠性如何?? 定制 为此,我考虑使用RabbitMQ,问题是运行它的虚拟机的成本 总而言之,我想: 在出现故障时能够

我想创建一个非常便宜、非常灵活、非常简单的CQRS和事件源架构

我想确保事件至少永远不会无法到达发布者/事件商店,永远,永远,因为这是业务所在

现在,我有几个选择:

Azure

有了azure,我似乎不知道该用什么

  • Azure服务总线
  • Azure函数
  • Azure webjob(我想可以用Azure函数替换)
  • ???(还有什么我忘了或不知道的?)
  • 这些azure无服务器解决方案的可靠性如何??

    定制

    为此,我考虑使用RabbitMQ,问题是运行它的虚拟机的成本


    总而言之,我想:
  • 在出现故障时能够重播消息/事件
  • 能够轻松添加订户
  • 能够选择要重播消息的订阅服务器
  • 事件存储应该能够存储非常大的事件消息(或者如何将图像或文件排队??)
  • 事件存储绝不能被阻塞或睡眠
  • 实施/原型化的速度将是一个额外的问题 优势

  • 你的经验告诉我们什么


    其他的选择呢?(例如:
    apachekafka
    )?

    为什么不运行事件存储?由格雷格·杨自己创作。在你需要的地方主持

    我是一个java用户,我使用hornetq(我不使用的又称artemis)作为rabbitmq的替代品已经有很长时间了;唯一的问题是它不支持复制,但在eventsourcing方面可以完成任务。对于您的自定义场景,rabbitmq是一个不错的选择,但请尝试在digital ocean实例上运行它,以降低成本。如果你在寻找简单性和灵活性,你只有两个选择,要么构建自己的简单性,要么放弃简单性,选择ApacheKafka及其所有复杂性,但这会给你灵活性。同样,您也可以使用mongodb构建eventstore

    您的需求太模糊,无法做出最佳选择。你需要考虑很多事情,例如,每一个聚合事件的数量,聚集的数量(注意这必须是统计的)。这些都很重要,主要是因为如果您允许每个聚合有上万个事件,那么您将需要快照,这会增加您可能不需要的复杂性


    但对于常规用例,您可以使用关系数据库(如Postgres)作为(可线性化的)事件存储。它还具有侦听/通知功能,您也不需要任何消息总线,您的应用程序可以以反应式方式编写。

    关于构建自己的事件存储:这是一个非常糟糕的建议。事件存储有足够复杂的要求,使构建自己的事件存储成为一项相当困难的任务,许多人在第一次接触事件源时似乎没有意识到这一点,而且(考虑到这一get的定期建议),以防万一,不要使用kafka作为事件存储,因为它缺乏写入时的并发检查,这可能会导致您最终得到错误的数据。我听说这实际上取决于用例。你不需要仅仅为了做一些小的事件来源而选择一个完整的框架。如果你是大规模的,我会真正理解朝这个方向发展的必要性,但对于次要事件源,请创建简单的事件源应用程序,并在过渡期间使用它。@SavvasKleanthous还有一件事,请看Greg Young的“8行代码”和。你可以建立你自己的,没有标准的方法,只是一些你需要理解的原则。我非常了解格雷格和马特的谈话,我个人也知道他们。编写代码从事件中重新水化状态与构建事件存储是一种截然不同的问题。请看这里: