DailyMart01:一点小想法,一个新的开始!

简介: DailyMart01:一点小想法,一个新的开始!

大家好呀,我是飘渺!

截至目前,我已在公众号和知识星球上发布了多个系列文章,涵盖了SpringBoot老鸟系列、SpringCloud微服务系列、运维监控系列、分库分表系列和Kubernetes云原生系列。尽管每个系列的重点各有不同,它们都关注微服务架构的各个方面和技术要点。然而,随着时间的推移和技术版本的更新,一些曾推荐的技术组件和观点已经不再适用。 例如,Swagger接口管理工具已久未更新,Spring Security OAuth已被废弃,参数分组校验导致了代码混乱,推荐的实体转换组件也不一定是最佳选择。

因此,我一直在思考如何整合这些系列文章的核心内容,创建一个新系列,同时与最新技术发展趋势和实践经验相结合。经过与群友讨论,我决定启动名为 “DDD微服务商城实战” 的新专栏,通过领域驱动设计DDD整合前述系列文章的知识点。


何为DDD


随着微服务架构的普及和广泛应用,领域驱动设计(Domain-Driven Design,简称DDD)逐渐成为业界的热门话题。作为一种建模方式,DDD旨在深入挖掘业务领域的核心需求和概念,将其转化为可执行的代码模型,实现灵活、稳定的系统架构。然而,对于初学者来说,DDD中充满了晦涩难懂的概念,令人不知从何入手。

看到这些概念你会不会头皮发麻?

在我看来,学习DDD就像是学习游泳一样。你可以通过观看教学视频、阅读书籍来掌握游泳的原理,但若不实际跳入水中练习,你将永远无法真正掌握游泳的技巧和窍门。

因此,我们需要通过实际操作来深入理解DDD的设计原则和实践方法。只有在实践过程中不断摸爬滚打,才能够真正掌握DDD的精髓。

  • 首先,让我们站在全局的角度来了解一下DDD。

要掌握DDD,关键是要把握两个设计过程:战略设计 和 战术设计

战略设计主要从业务角度出发,划分业务的领域边界,建立基于通用语言和业务上下文语义边界的限界上下文,实现业务领域模型的构建。

限界上下文可以作为微服务拆分和设计的边界,领域建模可以作为战术设计的输入。

战术设计是从技术视角出发,侧重于对领域模型的技术实现。它主要涉及到微服务的设计和实现,以及领域模型和代码的映射关系。

战略设计和战术设计两者协同完成领域建模以及微服务设计和实现。

  • 接下来看看领域模型、微服务和DDD之间的关系

领域模型是抽象且标准化的可复用模型,其设计遵循单一职责原则。微服务则是领域模型的技术实现。DDD是一种指导领域建模和微服务设计的方法论,遵循高内聚低耦合原则,完成业务端领域拆分、建模到应用端微服务实现的无缝落地。


结语


在本专栏中,我会从零开始构建一个完整的SpringCloud微服务商城系统,并详细讲解如何进行系统设计,一起探讨DDD的设计原则和实践方法,并分享实际项目中的经验教训和一些最佳实践。

本专栏使用的技术栈均为当前主流最新版本,如JDK 17和Spring Boot 3.0。鉴于个人能力所限,文章中难免会出现错误,因此非常欢迎读者提出宝贵的意见和建议,帮助我不断改进本专栏,同时也希望你能一起参与进来。

目录
相关文章
|
领域建模 数据库 数据安全/隐私保护
DailyMart03:如何基于DDD设计商城的领域模型?
DailyMart03:如何基于DDD设计商城的领域模型?
1025 0
|
8月前
|
运维 监控 数据可视化
日志服务 HarmonyOS NEXT 日志采集最佳实践
鸿蒙操作系统(HarmonyOS)上的日志服务(SLS)SDK 提供了针对 IoT、移动端到服务端的全场景日志采集、处理和分析能力,旨在满足万物互联时代下应用的多元化设备接入、高效协同和安全可靠运行的需求。
117428 33
|
负载均衡 Java API
深入了解Feign——优雅的HTTP客户端
在现代的软件开发中,服务间的通信变得越来越重要。微服务架构的兴起使得应用程序的各个组件可以独立开发、部署和维护,从而提高了灵活性和可伸缩性。然而,微服务之间的通信也带来了一些挑战,例如如何管理不同服务之间的调用和数据传输。在这个领域,Feign作为一种优雅的HTTP客户端框架,为我们解决了许多通信相关的问题。
365 0
|
8月前
|
安全 Windows
win10修改本地host文件,用以增加自定义本地访问域名127.0.0.1
win10修改本地host文件,用以增加自定义本地访问域名127.0.0.1
464 0
|
存储 供应链 Java
DailyMart02:DDD领域分解与微服务划分
DailyMart02:DDD领域分解与微服务划分
367 0
|
8月前
|
存储 SQL 缓存
实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot2
实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot2
|
Java 测试技术 数据库
【java】获取当前函数的函数名
【java】获取当前函数的函数名
291 0
|
JavaScript 前端开发 UED
Vue中的动态DOM加载:实现更灵活的前端界面
Vue.js是一个流行的JavaScript框架,提供了强大的工具来构建交互式和动态的前端界面。在本博客中,我们将深入探讨Vue中动态加载DOM的方法和实例,以帮助您创建更灵活、响应式的用户界面。
458 0
|
消息中间件 缓存 前端开发
新项目,不妨采用这种架构分层,很优雅!
新项目,不妨采用这种架构分层,很优雅!
250 0
|
设计模式 前端开发 数据库
微服务架构谈(4) plus:DDD 分层架构如何推动架构演进
微服务架构谈(4) plus:DDD 分层架构如何推动架构演进
973 0
微服务架构谈(4) plus:DDD 分层架构如何推动架构演进