- 博客(145)
- 资源 (1)
- 收藏
- 关注
原创 一行代码不写搞定开发|Cursor, The AI Code Editor
Cursor 是一个集成了 GPT-4 的国内直接可以访问的,优秀而强大的免费代码生成器,可以帮助你快速编写、编辑和讨论代码。它支持多种编程语言,如 Python, Java, C#, JavaScript 等,并且可以根据你的输入和需求自动生成代码片段。Cursor.so 还可以帮助你重构、理解和优化代码,提高开发效率。本文只是一个使用 Cursor 的简单示例,帮助大家如何安装和使用。大家可以根据自己的业务,让它帮你写一些基础的代码,利用好 Cursor 可以大大提高工作效率。
2024-12-06 15:41:40
1236
原创 【Spring】接口版本控制最佳实现
如上述代码。这三种方式中, 但是上述三种方法中只有URL Path方式最简单也不容易出错,但是因为需要因人而异,需要统一的方式来实现。相比于在每一个接口的 URL Path 中设置版本号,更理想的方式是在框架层面实现统一。如果你使用 Spring 框架的话,可以按照下面的方式自定义 RequestMappingHandlerMapping 来实现。 首先,创建一个注解来定义接口的版本。@APIVersion 自定义注解可以应用于方法或 Controller 上: 然后,定义一个 APIVersionH
2024-12-02 16:45:13
646
1
原创 19 | 总结:分布式架构关键设计
企业级分布式架构的实施是一个非常复杂的系统工程,涉及到非常多的技术体系和方法。今天我罗列了 10 个关键的设计领域,每个领域其实都非常复杂,需要很多的投入和研究。在实施的时候,你自身和自己公司要结合自身情况来选择合适的技术组件和实施方案。
2023-08-12 14:57:13
552
原创 18 | 基于DDD的微服务设计实例
定义聚合前,先找出聚合根。从上面的实体中,我们可以找出“请假单”和“人员”两个聚合根。然后找出与聚合根紧密依赖的实体和值对象。我们发现审批意见、审批规则和请假单紧密关联,组织关系和人员紧密关联。找出这些实体的关系后,我们发现还有刷卡明细、考勤明细和考勤统计,这几个实体没有聚合根。这种情形在领域建模时你会经常遇到,对于这类场景我们需要分情况特殊处理。刷卡明细、考勤明细和考勤统计这几个实体,它们之间相互独立,找不出聚合根,不是富领域模型,但它们一起完成考勤业务逻辑,具有很高的业务内聚性。
2023-08-06 13:49:35
2527
1
原创 17 | 从后端到前端:微服务后,前端如何设计?
今天我们主要探讨了微前端的设计方法。虽然微前端和微服务也采用前后端分离的设计方式,但在业务单元内,它们是在同一个领域模型下,分别实现前端和后端的业务逻辑,对外提供组件化的服务。微前端和业务单元化的设计模式可以减轻企业级中台,前后端应用开发和集成的复杂度,真正实现前端融合和中台解耦。前端项目只需关注前端集成主页面与微前端的集成,实现模块化集成和拼图式的开发,降低前端集成的复杂度和成本。中台项目从数据库、中台微服务到微前端界面,端到端地完成领域逻辑功能开发,以业务组件的方式整体提供服务。
2023-07-16 15:15:39
2577
原创 16 | 视图:如何实现服务和数据在微服务各层的协作?
今天我们分析了 DDD 分层架构下微服务的服务和数据的协作关系。为了实现聚合之间以及微服务各层之间的解耦,我们在每层定义了不同职责的服务和数据对象。在软件开发过程中,我们需要严格遵守各层服务和数据的职责要求,各据其位,各司其职。这样才能保证核心领域模型的稳定,同时也可以灵活应对外部需求的快速变化。
2023-07-15 17:16:13
2073
1
原创 15 | 边界:微服务的各种边界在架构演进中的作用?
今天我们主要讨论了微服务架构设计中的各种边界在架构演进中的作用。逻辑边界:微服务内聚合之间的边界是逻辑边界。它是一个虚拟的边界,强调业务的内聚,可根据需要变成物理边界,也就是说聚合也可以独立为微服务。物理边界:微服务之间的边界是物理边界。它强调微服务部署和运行的隔离,关注微服务的服务调用、容错和运行等。代码边界:不同层或者聚合之间代码目录的边界是代码边界。它强调的是代码之间的隔离,方便架构演进时代码的重组。
2023-07-07 18:18:21
550
原创 14 | 代码模型(下):如何保证领域模型与代码模型的一致性?
这篇文章讲了从领域模型到微服务的设计过程,这个过程在微服务设计过程中非常的关键。你需要从微服务系统的角度,对领域模型做深入、细致的分析,为领域对象分层,找出各个领域对象的依赖关系,建立领域对象与微服务代码对象的映射关系,从而保证领域模型与代码模型的一致性,最终完成微服务的设计。在建立这种业务模型与微服务系统架构的关系后,整个项目团队就可以在统一的通用语言下工作,即使不熟悉业务的开发人员,或者不熟悉代码的业务人员,也可以很快就定位到代码位置。
2023-07-05 10:50:10
263
原创 13 | 代码模型(上):如何使用DDD设计微服务代码模型?
今天我们根据 DDD 分层架构模型建立了标准的微服务代码模型,在代码模型里面,各代码对象各据其位、各司其职,共同协作完成微服务的业务逻辑。那关于代码模型我还需要强调两点内容。聚合之间的代码边界一定要清晰。聚合之间的服务调用和数据关联应该是尽可能的松耦合和低关联,聚合之间的服务调用应该通过上层的应用层组合实现调用,原则上不允许聚合之间直接调用领域服务。这种松耦合的代码关联,在以后业务发展和需求变更时,可以很方便地实现业务功能和聚合代码的重组,在微服务架构演进中将会起到非常重要的作用。
2023-07-01 13:02:30
891
原创 12 | 领域建模:如何用事件风暴构建领域模型?
今天我们讲了事件风暴的设计方法以及如何用事件风暴来构建领域模型。事件风暴是一种不同于传统需求分析和系统设计的方法,最好的学习方法就是找几个业务场景多做几次。综合我的经验,一般来说一个中型规模的项目,领域建模的时间大概在两周左右,这与我们传统的需求分析和系统设计的时间基本差不多。但是如果在领域建模的过程中,团队成员全员参与,在项目开发之前就建立了共同语言,这对于后续的微服务设计与开发是很有帮助的,时间成本也可以视情况降低。
2023-06-30 15:53:22
653
转载 11 | DDD实践:如何用DDD重构中台业务模型?
今天我们一起讨论了传统企业中台数字化转型,在面对多个不同渠道应用重复建设时,如何用 DDD 领域建模的思想来构建中台业务模型。中台业务建模有自顶向下和自底向上两种策略,这两种策略有自己的适用场景,你需要结合自己公司的情况选择合适的策略。其实呢,中台业务模型的重构过程,也是微服务架构演进的过程。业务边界即微服务边界,业务边界做好了,微服务的边界自然就会很好。
2023-06-23 13:30:47
417
转载 10 | DDD、中台和微服务:它们是如何协作的?
今天我们主要讨论了传统企业中台建设的一些思路,梳理了 DDD、中台和微服务的关系。DDD 的战略设计可用于中台业务建模,战术设计可指导中台微服务设计。相信 DDD 与中台的完美结合,可以让你的中台建设如虎添翼!
2023-06-10 13:07:51
802
转载 09 | 中台:数字转型后到底应该共享什么?
这篇文章主要讨论了中台建设的一些思路。企业的中台转型不只是中台的工作,我们需要整体考虑前台、中台和后台的协同、共享、联通和融合。前台通过页面和流程共享实现不同渠道应用之间的前台融合,中台通过 API 实现服务共享。而前台、业务中台和数据中台的融合可以实现传统应用与互联网应用的融合,从而解决“后端双核心、前端两张皮”的问题。能力复用了,前台流程和数据融合了,才能更好地支持业务的融合和商业模式的创新。
2023-05-27 13:16:52
305
转载 08 | 微服务架构模型:几种常见模型的对比和分析
今天我们详细讲解了整洁架构和六边形架构,并对包括 DDD 分层架构在内的三种微服务架构模进行对比分析,总结出了它们的共同特征,并从共性出发,梳理出了中台建模和微服务架构设计的几个要点,我们后面还会有更加详细的有关设计落地的讲述。DDD 分层架构、整洁架构、六边形架构都是以领域模型为核心,实行分层架构,内部核心业务逻辑与外部应用、资源隔离并解耦。请务必记好这个设计思想,今后会有大用处。
2023-05-21 12:14:06
1208
转载 07 | DDD分层架构:有效降低层与层之间的依赖
DDD 的分层架构在不断发展。最早是传统的四层架构;后来四层架构有了进一步的优化,实现了各层对基础层的解耦;再后来领域层和应用层之间增加了上下文环境(Context)层,五层架构(DCI)就此形成了。我们看一下上面这张图,在最早的传统四层架构中,基础层是被其它层依赖的,它位于最核心的位置,那按照分层架构的思想,它应该就是核心,但实际上领域层才是软件的核心,所以这种依赖是有问题的。
2023-05-18 15:48:30
847
转载 06 | 领域事件:解耦微服务的关键
这篇文章主要讲了领域事件以及领域事件的处理机制。领域事件驱动是很成熟的技术,在很多分布式架构中得到了大量的使用。领域事件是 DDD 的一个重要概念,在设计时我们要重点关注领域事件,用领域事件来驱动业务的流转,尽量采用基于事件的最终一致,降低微服务之间直接访问的压力,实现微服务之间的解耦,维护领域模型的独立性和数据一致性。除此之外,领域事件驱动机制可以实现一个发布方 N 个订阅方的模式,这在传统的直接服务调用设计中基本是不可能做到的。
2023-05-16 14:39:45
346
转载 05 | 聚合和聚合根:怎样设计聚合?
上一篇文章]和 这篇文章 的内容,其实是有强关联的。我们不妨在这里总结下聚合、聚合根、实体和值对象它们之间的联系和区别。高内聚、低耦合,它是领域模型中最底层的边界,可以作为拆分微服务的最小单位,但我不建议你对微服务过度拆分。但在对性能有极致要求的场景中,聚合可以独立作为一个微服务,以满足版本的高频发布和极致的弹性伸缩能力。一个微服务可以包含多个聚合,聚合之间的边界是微服务内天然的逻辑边界。有了这个逻辑边界,在微服务架构演进时就可以以聚合为单位进行拆分和组合了,微服务的架构演进也就不再是一件难事了。
2023-05-14 12:29:46
613
转载 04 | 实体和值对象:从领域模型的基础单元看系统设计
今天我们主要学习了实体和值对象在 DDD 不同设计阶段的形态,以及它们从战略设计向战术设计演进过程中的设计方法。这个过程是从业务模型向系统模型落地的过程,比较复杂,很考验你的设计能力,很多时候我们都要结合自己的业务场景,选择合适的方法来进行微服务设计。强调一点,我们不避讳传统的设计方法,毕竟适合自己的才是最好的。希望你能充分理解实体和值对象的概念和应用,将学到的知识复用,最终将适合自己业务的 DDD 设计方法纳入到架构体系,实现落地。
2023-05-13 12:00:37
562
转载 01 | 领域驱动设计:微服务设计为什么要选择DDD?
总体来说,DDD 可以给你带来以下收获:1.DDD 是一套完整而系统的设计方法,它能带给你从战略设计到战术设计的标准设计过程,使得你的设计思路能够更加清晰,设计过程更加规范。2.DDD 善于处理与领域相关的拥有高复杂度业务的产品开发,通过它可以建立一个核心而稳定的领域模型,有利于领域知识的传递与传承。3.DDD 强调团队与领域专家的合作,能够帮助你的团队建立一个沟通良好的氛围,构建一致的架构体系。4.DDD 的设计思想、原则与模式有助于提高你的架构设计能力。
2023-05-04 18:35:29
395
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人