我正在研究CQRS模式,我们的团队希望在PHP中开发一个基于CQRS的系统。
我知道我们可以在PHP中模拟事件系统,但是我发现如果编程语言是基于事件的(我不确定这一点),那么CQRS实现更好/更容易。
我有两个问题:
发布于 2018-05-15 22:05:22
对于CQRS来说,您使用的语言并不那么重要。命令和查询实际上是简单的对象,因此如果需要,可以使用PHP。选择开发人员熟悉的内容。
当使用微服务时,CRQS在与事件源相结合时可能非常有用: microservice A处理命令并将事件存储在事件存储中,而microservice B处理事件、更新查询数据库和处理查询。这样,您的服务就可以独立地进行扩展,并且您的业务逻辑更易于管理。
发布于 2019-05-28 20:09:45
我不建议您使用PHP来构建CQRS。您应该问自己的第一个问题是:“您为什么需要实现像CQRS这样的事件源技术?”
如果答案是因为您需要一个允许您以更有效的方式分发所有系统的体系结构,那么您应该重新考虑使用PHP。它在单线程处理器中运行,并且有很多限制。
在几个月的时间里,我们一直在一个基于CQRS的PHP项目中工作,但最终,我们一直在努力解决许多与性能相关的问题。最后,我们发现了与Elixir的函数式编程,我们决定放弃一个机会。
在几个月的时间里,我读了很多关于CQRS的信息,我发现马丁·福勒( Martin ),他是微服务领域更有意义的贡献者之一。甚至他也强烈建议使用函数式编程语言来进行事件源。
但是,如果您已经决定使用PHP来构建一个CQRS项目,那么您可以给出一个机会并自行测试它。
相反,如果您对使用Elixir感兴趣,您可以从阅读一些实际示例https://leanpub.com/buildingconduit/read开始,这是一个基于Elixir的博客站点,使用的是带有CQRS +命令库的Elixir。
https://stackoverflow.com/questions/50324219
复制相似问题