摆脱复杂的代码 - DDD 和 CQRS 是黄金组合

在日常工作中,您是否遇到过以下情况:

  • 使用现有接口进行业务开发,上线后出现严重的性能问题。老板当众质问:“你为什么不使用缓存接口?这个接口都用数据库,你怎么能抗拒!”

  • 开发后台管理功能。业务反馈称,数据总是错误的。经过比对发现缓存与数据库不一致。为什么要使用缓存接口?你是否陷入了沉思?

  • 该产品需要向xxx添加新功能。编码、测试、上线一气呵成。最后发现另一个进程被阻塞,出现异常,不得不回滚!

  • 并发高并发场景下,DB成为系统的瓶颈。它无法处理没有索引的查询,也无法处理带有索引的更新。那么我们应该如何处理呢?

  • 随着数据量的增加,系统变得越来越慢,尤其是在有后端管理的复杂查询场景下。复杂的Join让DB不堪重负

为什么会出现这种情况?本质还是代码组织结构不合理。我们把不同的复杂性混合在一起,从而创造出更大的复杂性,然后重复这个过程,不知不觉地陷入了复杂性的巨大漩涡中而无法自拔。

1。什么是 CQRS?

CQRS 是命令查询责任分离的缩写。简单的理解就是将“写”(Command)和“读”(Query)操作分开。反应快的同学会说:“这不是有什么先进的技术吗?不就是数据库读写分离吗?”

是的,数据库的读写分离也可以看作是CQRS的一种,但是CQRS的含义比这复杂得多。

相关文章