在PHP中实现CQRS

在PHP中实现CQRS,php,microservices,cqrs,event-sourcing,Php,Microservices,Cqrs,Event Sourcing,我正在研究CQRS模式,我们的团队希望在PHP中开发一个基于CQRS的系统 我知道我们可以用PHP模拟事件系统,但我发现如果编程语言是基于事件的,CQRS实现得更好/更容易(我不确定这一点) 我有两个问题: 我想知道,如果我们用PHP中的CQRS模式开发我们的系统,那么它是否可靠,或者是否可以切换到其他(基于事件的)编程语言来提高一致性 CQRS在微服务系统中有什么好处?是否有其他可靠且易于实现的模式 您使用的语言对CQR来说并没有多大关系。命令和查询都是非常简单的对象,因此如果需要,可以使用P

我正在研究CQRS模式,我们的团队希望在PHP中开发一个基于CQRS的系统

我知道我们可以用PHP模拟事件系统,但我发现如果编程语言是基于事件的,CQRS实现得更好/更容易(我不确定这一点)

我有两个问题:

  • 我想知道,如果我们用PHP中的CQRS模式开发我们的系统,那么它是否可靠,或者是否可以切换到其他(基于事件的)编程语言来提高一致性

  • CQRS在微服务系统中有什么好处?是否有其他可靠且易于实现的模式


  • 您使用的语言对CQR来说并没有多大关系。命令和查询都是非常简单的对象,因此如果需要,可以使用PHP。选择开发人员熟悉的内容


    在使用微服务时,CRQ与事件源结合起来非常有用:微服务A处理命令并将事件存储在事件存储中,而微服务B处理事件、更新查询数据库并处理查询。这样,您的服务可以独立扩展,并且您的业务逻辑更易于管理。

    我不建议您使用PHP构建CQR。您应该问自己的第一个问题是,“您需要实施像CQRS这样的事件源技术的原因是什么?”

    如果答案是因为您需要一个架构,允许您以更有效的方式分发所有系统,那么您应该重新考虑使用PHP。它在单线程处理器中运行,有很多限制

    在几个月的时间里,我们一直在一个基于CQRS的PHP项目中工作,但最终,我们遇到了许多与性能相关的问题。最后,我们发现了Elixir的函数式编程,我们决定放弃一个机会

    在几个月的时间里,我阅读了很多关于CQR的信息,我找到了Martin Fowler,他是与微服务世界更相关的贡献者之一。甚至他也强烈建议使用函数式编程语言来进行事件源

    然而,如果您已经决定使用PHP来构建CQRS项目,您可以给自己一个机会并自己测试它

    相反,如果您对使用Elixir感兴趣,可以从阅读一些真实的示例开始,这是一个基于博客的网站,使用Elixir和CQRS+库