Unix哲学,Microservices和DDD (3)

接前文,在进行应用的横向扩展时,至少有三类问题是比较难以解答的数据库

如何保证拆分软件模块的正确性?
如何保证数据库的拆分不会下降性能?
如何对待分布式系统中的一致性等问题?网络

在实现中,这三个问题能够分别被具体化为:dom

  1. 怎样证实一些代码和另外一些代码有很强的相关性,以致于它们应该老是在同一台机器上执行?分布式

  2. 怎样保证一些数据和另外一些数据不可能同时被同一查询读取(避免在查询计算中引入网络因素),也不可能被同一事务修改(避免2PC)?性能

  3. 怎样证实本身的横向扩展优化带来的反作用在业务逻辑容许的范围以内?优化

接下来,咱们介绍DDD如何解决第一个问题:怎样证实一些代码和另外一些代码有很强的相关性?设计


DDD(Domain Driven Design,领域驱动设计)是一种设计软件的方法论,目前已有十多年历史。做为一种比较完善的工程方法,DDD很是复杂。其核心思路大概是:事务

  • 软件的目标是实现得到相关领域专家承认的领域模型。扩展

  • 在代码中使用领域模型中的术语描述代码行为。这些词语在其相应的上下文中没有歧义软件

  • 上下文(Bounded Context)自己也须要在代码中有所表现

  • 若是业务逻辑(Domain)能够划分为多个不相关的子域(Subdomain),那么在理想状况下,问题域与上下文之间有着一一对应的关系。

相关文章
相关标签/搜索