DEV Community

loading...

架构设计摘录

fangdajiang profile image 小猫先生 ・1 min read

REST

REST 接口一般更适合用来实现查询或其他不需要事务的操作。而涉及到数据修改,往往通过事件来完成。

服务拆分与架构演进

  • 如何拆?即如何正确理解业务,将单体结构拆分为服务化架构?
  • 拆完后业务变了增加了怎么办?即在业务需求不断发展变化的前提下,如何持续快速地演进?
  • 如何安全地持续地拆?即如何在不影响当下系统运行状态的前提下,持续安全地演进?
  • 如何保证拆对了?
  • 拆完了怎么保证不被破坏?

命令查询职责分离 (CQRS) 模式

假如你对 CRUD 模式带出的问题感到疑惑与烦恼,推荐你阅读这篇文字。当然,本文讲了更多东西,不仅仅只是为了解决 CRUD 相关的问题。

  • 使用同一个对象实体来进行数据库读写可能会太粗糙,大多数情况下,比如编辑的时候可能只需要更新个别字段,但是却需要将整个对象都穿进去,有些字段其实是不需要更新的。在查询的时候在表现层可能只需要个别字段,但是需要查询和返回整个实体对象。
  • 使用同一实体对象对同一数据进行读写操作的时候,可能会遇到资源竞争的情况,经常要处理的锁的问题,在写入数据的时候,需要加锁。读取数据的时候需要判断是否允许脏读。这样使得系统的逻辑性和复杂性增加,并且会对系统吞吐量的增长会产生影响。
  • 同步的,直接与数据库进行交互在大数据量同时访问的情况下可能会影响性能和响应性,并且可能会产生性能瓶颈。
  • 由于同一实体对象都会在读写操作中用到,所以对于安全和权限的管理会变得比较复杂。

Discussion (0)

pic
Editor guide