【发布时间】:2020-05-09 11:08:42
【问题描述】:
这个问题与 Axon 服务器/框架的关系非常松散,因为我在学习并尝试学习如何构建微服务时专门学习它。由于没有实际动手经验很难了解所有架构模式(并且如果没有大型应用程序来实际测试/构建也很难获得动手经验),我在这里进行了很多理论化(我的问题可能只是傻傻的,对不起,我还在学习)。
我下载了 Axon Server,并在三个独立的微服务中成功构建并运行了包含的礼品卡演示。它工作得很好,我在 Axon Dashboard 上看到了事件和所有内容,但我不禁想到如果我真的构建了一个非常大的企业应用程序的“假设”。
考虑一下:
我正在构建一个像 Twitch 这样的流媒体平台。有基本的、显而易见的服务,例如带有个人资料数据的客户服务、订单服务(用于订阅、捐赠)等。
但还有其他服务,例如聊天系统。假设,我觉得事件采购聊天系统会非常有益,因为如果观众正在观看 VOD,您将拥有内置的时间戳来重播聊天。但是,我也觉得我不应该将聊天系统的事件与处理事务的事件存储混合在一起。这两个是完全独立的系统,只是将每个服务的每个事件存储在一个事件存储中感觉......单片?
我仍然不清楚最佳做法是什么。谈话中的所有示例和示例总是显示非常简单的系统,其中包含典型的 Customer、Order、Item 聚合,并且没有详细说明这个简单的应用程序如何发展为像 Twitch 这样的大型服务。
所以我的问题是,
1) 您应该事件源整个应用程序,还是可以选择哪些事件源而不是事件源?
2) Axon Server 是否支持两种不同的事件存储,例如一种用于聊天系统,一种用于其他服务?在这种情况下,我会只运行两个不同的 Axon Server 实例吗?一个应用程序是否应该有两个不同的事件存储,或者我是否将每个事件都转储到一个事件存储中,而不管像聊天系统这样的东西是否发送的事件比其他任何东西都多(事件源是一个聊天系统甚至是一个好主意,考虑到我指定的用户可能想要“重播”聊天日志的用例?)?
3) 单一事件存储作为单一事实来源的整个想法让人感觉很单一。我这样想是不是错了,如果不是,如果我有一个非常大的应用程序,有什么方法可以规避这个问题?
【问题讨论】:
标签: design-patterns architecture microservices axon