架构模式演进
微服务架构的优缺点
todo...
ddd设计理论
我们可以用三步来划定领域模型和微服务的边界。
在领域驱动设计的战略设计中,我们采用事件风暴方法梳理业务过程中的用户操作、事件以及外部依赖关系等,从而梳理出领域实体等领域对象。
然后,我们根据领域实体之间的业务关联性,形成聚合,并确定聚合中的聚合根、值对象和实体。
接着,根据业务及语义边界等因素,将一个或多个聚合划定在一个限界上下文内,形成领域模型。这个过程中,我们建立了领域模型,划定了业务领域的边界,建立了通用语言和限界上下文,确定了领域模型中各个领域对象的关系。这些限界上下文可以作为微服务设计的参考边界,从而确定了应用端的微服务边界。
在从业务模型向微服务落地的过程中,即从战略设计向战术设计的实施过程中,我们会将领域模型中的领域对象与代码模型中的代码对象建立映射关系,将业务架构和系统架构进行绑定。当调整业务架构和领域模型以响应业务变化时,系统架构也会同时发生调整,并同步建立新的映射关系。这种方式可以帮助我们实现高效的软件开发和落地,从而更好地应对业务需求变化。
因此,通过领域驱动设计的战略设计和战术设计,我们可以清晰地划定领域边界,建立领域模型,帮助我们实现微服务的设计和拆分,同时也能够有效地响应业务变化,提高软件开发和落地的效率。
3.3 微服务与DDD的异同
DDD 是一种面向复杂业务领域的设计方法论,而微服务是一种面向分布式系统的架构风格。它们的共同目标都是通过将系统分解为更小,更易于管理的组件来提高系统的可维护性和可扩展性。
在 DDD 中,我们关注的是业务领域的划分和领域模型的设计,以便更好地理解业务需求,并将其转化为可执行的代码。
在微服务中,我们主要关注的是运行时的通信,容错和故障隔离,以及服务治理等问题,以确保各个微服务可以独立开发、测试、构建和部署。
通过结合 DDD 和微服务,我们可以更好地实现高效的业务逻辑,同时也可以充分利用微服务的优点,提高应用程序的可扩展性和可维护性。因此,DDD 和微服务是互补的,可以共同用于构建可靠且高效的应用程序。
微服务与DDD的异同
DDD 是一种面向复杂业务领域的设计方法论,而微服务是一种面向分布式系统的架构风格。它们的共同目标都是通过将系统分解为更小,更易于管理的组件来提高系统的可维护性和可扩展性。
- 在 DDD 中,我们关注的是业务领域的划分和领域模型的设计,以便更好地理解业务需求,并将其转化为可执行的代码。
- 在微服务中,我们主要关注的是运行时的通信,容错和故障隔离,以及服务治理等问题,以确保各个微服务可以独立开发、测试、构建和部署。
- 通过结合 DDD 和微服务,我们可以更好地实现高效的业务逻辑,同时也可以充分利用微服务的优点,提高应用程序的可扩展性和可维护性。因此,DDD 和微服务是互补的,可以共同用于构建可靠且高效的应用程序。
参考
1.01 架构、复杂度与三原则:https://promacanthus.netlify.app/computer-science/architecture/01-%E6%9E%B6%E6%9E%84%E5%A4%8D%E6%9D%82%E5%BA%A6%E4%B8%8E%E4%B8%89%E5%8E%9F%E5%88%99/#011-%E7%B3%BB%E7%BB%9F%E4%B8%8E%E5%AD%90%E7%B3%BB%E7%BB%9F
2.https://zhuanlan.zhihu.com/p/372225207
3.https://www.itcast.cn/news/20220329/17575248138.shtml
4.https://zq99299.github.io/note-book2/ddd/01/01.html#%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84%E6%A8%A1%E5%BC%8F%E7%9A%84%E6%BC%94%E8%BF%9B
5.https://time.geekbang.org/column/article/6990