【阅读笔记】 转载:架构师日记-到底该如何搭建一个新系统 | 京东云技术团队
转载ddd模型详解
总结:
技术架构
架构模式约束了各个模块之间的职责、关系、和交互,为软件设计提供了规范和约束,从而提高生产效率。 价值: 软件设计roi导向。扩展性、高性能、可维护、可靠性、安全性等是产品的特性。
1.分层架构
MVC架构是对整个业务实现进行了关注点分离,最常见的拆分模式是多层架构模式,如下图:
1.数据访问层:将业务逻辑层和数据存储层进行解耦,属于模型层的范畴。它与底层数据源(MySQL、Hbase,EleasicSearch)进行数据交互;
2.远程调用层:即RPC层,与DAO层平行的数据访问层,区别是它是通过第三方接口或平台服务提供访问能力。
3.事务管理层:也叫通用业务处理层,它有如下特征:
◦对上层业务,进行业务和技术共用能力下沉,比如:多个业态的统一订单生产能力,通用的分布式事务一致性的解决方案等;
◦对下层依赖,组合DAO层和RPC层的能力,实现单一业务的事务管理;
◦对于简单的业务系统,Manager层的职责可以由Service层替代;
4.业务逻辑层:相对具体的业务逻辑服务层,主要负责业务流程的组装和编排,真正的灵活性和扩展性主要体现在这里;
5.请求处理层:主要是对访问控制进行转发,入参整形,出参定制等,其职责是直接面向的是各个终端或第三方服务方;
6.开放服务层:定义对外提供的RPC服务,功能职责和Web层类似,同样需要考虑网关安全控制、流量控制等因素;
7.终端显示层: 各个端的模板渲染并执行显示,velocity ,React,IOS移动端等;
传统的软件设计往往会导致各个组件之间紧密耦合,从而导致代码难以维护和扩展。六边形架构模式是分层模式的一种变体,通过将业务逻辑与框架、库等技术细节分离,从而实现了松耦合的设计,使得代码更易于维护和扩展。 同时,六边形架构模式还可以帮助开发人员更好地实现单元测试和集成测试,从而提高软件质量。这在各种技术中台性质的业务场景下,非常有用,如下图:
2.DDD架构
领域驱动设计(DDD)是一种软件开发方法,它以业务领域为中心,通过深入理解业务领域的知识,将业务逻辑封装在领域模型中,以此来实现更好的代码可维护性、可扩展性和可重用性。
1.用户接口层:web请求,rpc请求,mq消息等外部输入请求;
2.应用层:负责编排、转发、校验等,这与MVC中的service层中存储着大量业务逻辑有所不同;
3.领域层:也就是模型层,负责表达业务概念,业务状态以及业务规则。包含了该领域所有复杂的业务知识抽象和规则定义,包含实体,值对象,聚合(聚合根),领域服务,领域事件,仓储,工厂等;
4.基础设施层:为领域模型提供持久化机制及其它通用技术支持能力,如消息通信,通用工具,配置等实现;
为了评估业务的复杂程度,我们需要从多个方面进行考虑,业务流程、产品规则、数据结构以及需求变化频率等。一般情况下,采用这种架构模式需要慎重的评估,因为实施这种开发模式会面临以下几个挑战:
1.需要深入理解业务领域:DDD是一种以业务领域为中心的设计方法,因此需要深入理解业务领域的知识,才能设计出符合业务需求的领域模型;
2.需要跨部门协作:实施DDD需要跨部门协作,包括业务人员、开发人员、测试人员等,需要大家共同合作才能达成共识;
3.技术难度较高:DDD需要理解很多复杂的概念,如领域事件、聚合根、领域服务等,需要开发人员具备一定的技术水平;