我一直在构建事件驱动的微服务。后来,我想知道为什么不能构建事件驱动的单体应用。
现在的缺点是可扩展性问题。我将无法为特定的高流量域创建副本。
但除此之外,我还可以得到许多其他好处,例如:
当应用程序变得受欢迎(从而产生更多流量)时,我们可以轻松地将其转换为微服务。我认为将代码从非事件驱动转换为事件驱动是最具挑战性的部分,因为它会显着改变整体架构。
我能想到的一个批评是,管理事件总线只为单体应用是否值得? 如果我使用像Apache Kafka这样的东西,这相当昂贵且难以管理,那可能不值得。
但是,如果我使用像NATS Streaming或Redis Stream这样的东西,则更或多或少执行与Apache Kafka相同的工作,但是轻便且更易于管理,那么我认为这不会成为问题。
当我在谷歌上搜索时,我找不到关于这种想法的文章,因此我想知道是否有重要的东西我忽略了。
现在的缺点是可扩展性问题。我将无法为特定的高流量域创建副本。
但除此之外,我还可以得到许多其他好处,例如:
- 最终一致性
- 有了正确的设置,我个人认为更容易进行调试,因为我可以重放事件。
- 减少复杂性。域之间解耦(我们仍然将域管理在文件夹中)
当应用程序变得受欢迎(从而产生更多流量)时,我们可以轻松地将其转换为微服务。我认为将代码从非事件驱动转换为事件驱动是最具挑战性的部分,因为它会显着改变整体架构。
我能想到的一个批评是,管理事件总线只为单体应用是否值得? 如果我使用像Apache Kafka这样的东西,这相当昂贵且难以管理,那可能不值得。
但是,如果我使用像NATS Streaming或Redis Stream这样的东西,则更或多或少执行与Apache Kafka相同的工作,但是轻便且更易于管理,那么我认为这不会成为问题。
当我在谷歌上搜索时,我找不到关于这种想法的文章,因此我想知道是否有重要的东西我忽略了。