1. 这是一个基本的微服务+DDD演示例子:

    基于 Spring Boot 1.5.6 , Spring Cloud Edgware.SR4 Version

    微服务 + DDD,个人觉得应该是首先是从微服务的角度(如何划分微服务)考虑去划分大的业务模块,每一个微服务都应该是一个可以单独部署,各司其职的模块;

    微服务实际开发中,也结合DDD的思想去划分所有属于自己的领域。

    微服务的划分与落地,其实也应该是以DDD的思想做去指导的,所以无论我们代码结构如何规划,也并非一成不变,应该从实际出发,去思考划分结构的意义。

    此例子是对于微服务+DDD反应到实际开发,代码的结构设计上的一种初步的思考与探索,一个样板工程,不应该成为我们对实际DDD思考与设计的限制,本例仅供参考。

    本文博客链接 : [https://www.cnblogs.com/ealenxie/p/9559781.html]

  2. DDD的结构图:

  3. 本项目是一个假设已经划分好了业务微服务,设计遵循DDD的架构与角色,代码设计上就分为Infrastructure,Domain,Application,Interfaces,项目结构图如下 :

  4. 结构说明:

    1. Infrastructure层:

      基础实施层,向其他层提供通用的技术能力(比如工具类,第三方库类支持,常用基本配置,数据访问底层实现),结构如图:


    2. Domain层:

      主要负责表达业务概念,业务状态信息和业务规则;是整个系统的核心层,几乎全部的业务逻辑会在该层实现,结构如图:


    3. Application层:

      相对于领域层,应用层是很薄的一层,应用层定义了软件要完成的任务,要尽量简单。

      注: 下图package-info里面所说的对内对外,对程序而言,事实上是从展现层调用应用层,应用层调用领域层,领域层或调用基础实施层。结构如图:


    4. Interfaces层:

      负责向用户显示信息和解释用户命令,请求应用层以获取用户所需要展现的数据(比如获取首页的商品数据)。结构如图:


  5. 本文参考内容:

    [https://www.cnblogs.com/hafiz/p/9388334.html]

    [https://blog.csdn.net/k6T9Q8XKs6iIkZPPIFq/article/details/78909897]

    [https://www.cnblogs.com/netfocus/archive/2011/10/10/2204949.html]

    [https://blog.csdn.net/bluishglc/article/details/6681253]

  6. 声明:

    本文根据自身对微服务和DDD学习和理解,做了一个用SpringCloud搭建的最基本的结构例子。

微服务+DDD代码结构例子的更多相关文章

  1. 一个微服务+DDD(领域驱动设计)的代码结构示例

    前有幸拜读过诸多大神关于DDD的实现落地等文章,学习较多,受益匪浅,在此推荐 : https://www.cnblogs.com/hafiz/p/9388334.htmlhttps://blog.cs ...

  2. 从壹开始微服务 [ DDD ] 之八 ║剪不断理还乱的 值对象和Dto

    缘起 哈喽大家周四好,时间是过的真快,这几天一直忙着在公司的项目,然后带带新人,眼看这周要过去了,还是要抽出时间学习学习,这些天看到群里的小伙伴也都在忙着新学习,还是很开心的,至少当时的初衷已经达到了 ...

  3. 微服务低代码Serverless平台(星链)的应用实践

    导读 星链是京东科技消金基础研发部研发的一款研发效能提升的工具平台,面向后端服务研发需求,尤其是集成性.场景化.定制化等难度不太高.但比较繁琐的需求,如服务前端的后端(BFF).服务流程编排.异步消息 ...

  4. 微服务从代码到k8s部署应有尽有系列(八、各种队列)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...

  5. 从壹开始微服务 [ DDD ] 之终篇 ║当事件溯源 遇上 粉丝活动

    回首 哈喽~大家好,时间过的真快,关于DDD领域驱动设计的讲解基本就差不多了,本来想着周四再开一篇,感觉没有太多的内容了,剩下的一个就是验证的问题,就和之前的JWT很类似,就不打开一个章节了,而且这个 ...

  6. 从壹开始微服务 [ DDD ] 之十二 ║ 核心篇【下】:事件驱动EDA 详解

    缘起 哈喽大家好,又是周二了,时间很快,我的第二个系列DDD领域驱动设计讲解已经接近尾声了,除了今天的时间驱动EDA(也有可能是两篇),然后就是下一篇的事件回溯,就剩下最后的权限验证了,然后就完结了, ...

  7. 服务注册中心之ZooKeeper系列(二) 实现一个简单微服务之间调用的例子

    上一篇文章简单介绍了ZooKeeper,讲了分布式中,每个微服务都会部署到多台服务器上,那服务之间的调用是怎么样的呢?如图: 1.集群A中的服务调用者如何发现集群B中的服务提供者呢? 2.集群A中的服 ...

  8. 微服务从代码到k8s部署应有尽有系列(一)

    从本篇文章开始,我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 实战项目地址:https://github.com/Mikaelemmmm/go-zer ...

  9. 微服务从代码到k8s部署应有尽有系列(五、民宿服务)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...

随机推荐

  1. Python 字典dict操作定义

    字典是用大括号{ }来表示,它是python中最灵活的内置数据类型.它是一个无序的集合,通过键来存取值,而不能用索引. 字典的创建和使用 字典的组成:字典是由大括号{  }来包含其数据的,大括号内包含 ...

  2. 使用vue技术应当使用的技术和兼容性选择

    假如你的前端框架使用了vue,那你可以大胆地使用以下技术,并忽略其他js和css的兼容性问题,因为 关于vue的兼容性 官方给出了规定 Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 ...

  3. vim输入操作

    在英文状态下按下 键盘上的 ”I“ 使用下箭标移动光标到最下面一行,然后按下END键,按下ENTER键 输入你的内容 按下ESC键,然后输入冒号,即 (:wq) 输入保存流程结束

  4. 阿里云配置通用服务的坑 ssh: connect to host 47.103.101.102 port 22: Connection refused

    1.~ wjw$ ssh root@47.103.101.102 ssh: connect to host 47.103.101.102 port 22: Connection refused ssh ...

  5. XML的基础之一(概念和语法)

    XML的基础(概念和语法) xml html 概念 异同  XML全称为extensible markup language,即可扩展标记语言,简单理解为可预定义标签的编程语言.它与HTML(超文本标 ...

  6. easyui表格适应bootstrap

    .panel1 { overflow: hidden; text-align: left; margin:; border:; -moz-border-radius: 0 0 0 0; -webkit ...

  7. sqlserver通过select查询出连续的日历临时表

    首先我们需要用到这个 select * FROM master..spt_values n WHERE n.type = 'p' AND n.number <= 7 里面分几个列,我们需要连续的 ...

  8. tensorflow和pytorch的区别

    pytorch是动态框架,tensorflow是静态框架 针对tensorflow,我们先构造了一个计算图,构建完之后,这个计算图就不能改变了,我们再开启会话,输入数据,进行计算.那么这个流程就是固定 ...

  9. vue组件通信之父子组件通信

    准备工作: 首先,新建一个项目,如果这里有不会的同学,可以参考我转载过的文章 http://www.cnblogs.com/Sky-Ice/p/8875958.html  vue 脚手架安装及新建项目 ...

  10. Vue 基础 day01

    什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于We ...