2021-06-07 11:31:04 +08:00
|
|
|
|
<p align="center">
|
|
|
|
|
|
<a href="http://xtoon-boot.xiangtoon.com/">
|
|
|
|
|
|
<img width="250" src="http://xtoon.gitee.io/xtoon-boot-site/logo.png">
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
2021-06-25 21:34:36 +08:00
|
|
|
|
<h1 align="center">xtoon-cloud</h1>
|
2021-06-07 11:31:04 +08:00
|
|
|
|
|
|
|
|
|
|
<div align="center">
|
|
|
|
|
|
|
2021-06-25 21:34:36 +08:00
|
|
|
|
基于领域驱动设计(DDD)并支持SaaS平台的微服务开发框架.
|
2021-06-07 11:31:04 +08:00
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div align="center">
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
[](http://xtoon-boot.xiangtoon.com/)
|
|
|
|
|
|
[](http://xtoon-boot.xiangtoon.com/)
|
|
|
|
|
|
[](http://xtoon-boot.xiangtoon.com/)
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2021-06-25 21:41:53 +08:00
|
|
|
|
<div align="center">
|
|
|
|
|
|
|
|
|
|
|
|
[官网](http://xtoon-boot.xiangtoon.com/) |
|
|
|
|
|
|
[在线体验](http://xtoon-boot.demo.xiangtoon.com/) |
|
|
|
|
|
|
[前端开源框架](https://gitee.com/xtoon/xtoon-cloud-element) |
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
#### [单体应用版:https://gitee.com/xtoon/xtoon-boot](https://gitee.com/xtoon/xtoon-boot)
|
|
|
|
|
|
|
2021-08-17 10:56:00 +08:00
|
|
|
|
#### 帮忙右上角点下 ⭐Star ,感谢您的支持。
|
|
|
|
|
|
|
2021-07-10 10:18:20 +08:00
|
|
|
|
## 为何开源
|
2021-10-24 11:14:31 +08:00
|
|
|
|
项目初期或MVP阶段就上微服务,服务拆分的很细,这会增加开发成本和风险。<br >
|
2021-09-22 11:02:05 +08:00
|
|
|
|
个人认为可以选择合适的框架先开发基于DDD的单体应用,后期根据领域的不同弹性需求再快速的、低成本的过渡为微服务版。<br >
|
|
|
|
|
|
这也是我们开源基于DDD的xtoon框架的初衷,目前单体应用版和微服务版都已发布正式版,如想更深入的学习和交流欢迎加入微信群!
|
2021-07-10 10:11:05 +08:00
|
|
|
|
|
2021-06-07 11:31:04 +08:00
|
|
|
|
## 为何选择xtoon-cloud
|
|
|
|
|
|
- 解决编写过程式和事务代码,造成后期维护逻辑混乱、维护成本高的痛点;
|
|
|
|
|
|
- 边界规范易维持,核心业务逻辑内聚在领域内,低耦合,高内聚,易于长期维护;
|
|
|
|
|
|
- 网上基本讲的都是DDD的理论很少有讲怎么落地,xtoon-cloud提供了完整落地方案和企业级微服务架构;
|
|
|
|
|
|
- 可以快速开发,框架提供了系统管理和组织架构等核心模块;
|
|
|
|
|
|
- 支持多租户的SaaS平台;
|
|
|
|
|
|
|
2022-10-22 10:51:08 +08:00
|
|
|
|
## DDD落地公众号
|
|
|
|
|
|
<p>
|
|
|
|
|
|
<img width="150" src="https://xtoon.gitee.io/xtoon-boot-site/qrcode_ddd.jpg">
|
|
|
|
|
|
</p>
|
|
|
|
|
|
学习DDD概念和落地经验分享,欢迎关注
|
|
|
|
|
|
|
2021-06-07 11:31:04 +08:00
|
|
|
|
## 技术交流
|
2021-08-17 10:56:00 +08:00
|
|
|
|
<p>
|
2022-05-18 10:40:27 +08:00
|
|
|
|
<img width="150" src="https://xtoon.gitee.io/xtoon-boot-site/weixin2.JPG">
|
2021-08-17 10:56:00 +08:00
|
|
|
|
<img width="150" src="https://xtoon.gitee.io/xtoon-boot-site/weixin.png">
|
|
|
|
|
|
</p>
|
2022-05-18 10:40:27 +08:00
|
|
|
|
欢迎入扫码加入微信群或扫码加我好友拉你进大群 ,来和DDD实践者们一起探讨DDD落地方案吧。 <br >
|
2021-08-17 10:56:00 +08:00
|
|
|
|
|
2021-06-25 21:34:36 +08:00
|
|
|
|
如果你解决了某些bug,或者新增了一些功能,欢迎 [贡献代码](https://gitee.com/xtoon/xtoon-cloud/pulls),感激不尽~ <br >
|
2021-06-07 11:31:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 技术选型
|
|
|
|
|
|
- 基础框架:Spring Cloud Alibaba
|
|
|
|
|
|
- 网关:Spring Cloud Gateway
|
|
|
|
|
|
- 鉴权认证:Spring Cloud Security+JWT
|
2021-06-25 21:34:36 +08:00
|
|
|
|
- 服务监控:spring-boot-admin
|
2021-06-07 11:31:04 +08:00
|
|
|
|
- 流量控制:Sentinel
|
|
|
|
|
|
- 注册配置中心:Nacos
|
|
|
|
|
|
- RPC:dubbo
|
2021-06-25 21:34:36 +08:00
|
|
|
|
- mybatis-plus
|
2021-06-07 11:31:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 主要模块
|
|
|
|
|
|
1. 登录注册:账号、手机号验证登录,租户注册;
|
|
|
|
|
|
2. 用户管理:用户新增,分配角色,禁用等;
|
|
|
|
|
|
3. 角色管理:角色新增,查看,维护菜单等;
|
|
|
|
|
|
4. 菜单管理:树形菜单管理,可配置菜单和按钮权限等;
|
|
|
|
|
|
5. 租户管理:租户列表,禁用等;
|
|
|
|
|
|
6. 日志管理:记录操作日志记录和查询;
|
|
|
|
|
|
|
2021-06-26 17:05:29 +08:00
|
|
|
|
## 项目结构
|
|
|
|
|
|
```
|
|
|
|
|
|
xtoon-could
|
|
|
|
|
|
├──doc 文档
|
|
|
|
|
|
│ ├─db sql
|
|
|
|
|
|
│ └─yaml 配置文件
|
|
|
|
|
|
│
|
|
|
|
|
|
├─xtoon-common 公共模块
|
|
|
|
|
|
│ ├─xtoon-common-core 核心公共模块
|
|
|
|
|
|
│ ├─xtoon-common-log 日志公共模块
|
|
|
|
|
|
│ ├─xtoon-common-mybatis mybatis公共模块
|
|
|
|
|
|
│ ├─xtoon-common-redis redis公共模块
|
|
|
|
|
|
│ ├─xtoon-common-swagger swagger公共模块
|
|
|
|
|
|
│ ├─xtoon-common-tenant 多租户公共模块
|
|
|
|
|
|
│ └─xtoon-common-web web公共模块
|
|
|
|
|
|
│
|
|
|
|
|
|
├─xtoon-ops 运维服务
|
|
|
|
|
|
│ ├─xtoon-auth-server 认证服务
|
|
|
|
|
|
│ ├─xtoon-gateway-server 网关
|
|
|
|
|
|
│ ├─xtoon-monitor-server 健康监控服务
|
|
|
|
|
|
│ ├─xtoon-register-server 注册配置中心
|
|
|
|
|
|
│ └─xtoon-sentinel-server 流量控制
|
|
|
|
|
|
│
|
|
|
|
|
|
├─xtoon-service 业务服务
|
|
|
|
|
|
│ └─xtoon-sys 系统管理领域
|
|
|
|
|
|
│ ├─xtoon-sys-interface 系统管理接口
|
|
|
|
|
|
│ └─xtoon-sys-server 系统管理服务
|
|
|
|
|
|
│
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 部署
|
|
|
|
|
|
|
2021-07-05 15:30:56 +08:00
|
|
|
|
### 前期准备
|
2021-06-26 17:05:29 +08:00
|
|
|
|
- 拉取前后端项目代码;
|
|
|
|
|
|
- 安装必要的环境:jdk1.8+,mysql5.7+,redis,nodejs等;
|
|
|
|
|
|
- mysql新建两个库,导入doc下面的sql文件;
|
|
|
|
|
|
- 修改成本地环境配置:mysql,redis;
|
2021-07-05 15:30:56 +08:00
|
|
|
|
- 启动前后端项目,访问地址;#
|
2021-06-26 17:05:29 +08:00
|
|
|
|
|
2021-07-05 15:30:56 +08:00
|
|
|
|
### 本地启动顺序
|
2021-06-26 17:05:29 +08:00
|
|
|
|
- xtoon-register-server(注册配置中心)
|
|
|
|
|
|
- xtoon-sys-server(用户服务)
|
|
|
|
|
|
- xtoon-auth-server(认证服务)
|
|
|
|
|
|
- xtoon-gateway-server(网关服务)
|
|
|
|
|
|
- xtoon-monitor-server(监控服务)
|
|
|
|
|
|
- xtoon-sentinel-server(流量控制服务)
|
|
|
|
|
|
- xtoon-could-element(前端项目)
|
|
|
|
|
|
|
2021-07-05 15:30:56 +08:00
|
|
|
|
### 测试/生产发布
|
|
|
|
|
|
支持jenkins pipeline + docker + harbor + k8s部署,项目开源配置文件:Dockerfile,Jenkinsfile,k8s-deployment.tpl,具体可加群讨论(QQ:13095000)
|
|
|
|
|
|
|
2021-06-07 11:31:04 +08:00
|
|
|
|
|
|
|
|
|
|
## 核心理念
|
|
|
|
|
|
### 六边形理论
|
|
|
|
|
|
<p align="center">
|
|
|
|
|
|
<img width="650" src="http://xtoon.gitee.io/xtoon-boot-site/640.png">
|
|
|
|
|
|
</p>
|
|
|
|
|
|
Alistair Cockburn提出了六边形架构,又被称为端口和适配器架构。观察上图我们发现,对于核心的应用程序和领域模型来说,其他的底层依赖或实现都可以抽象为输入和输出两类。组织关系变为了一个二维的内外关系,而不是上下结构。每个io与应用程序之前均有适配器完成隔离工作,每个最外围的边都是一个端口。基于六边形架构设计的系统是DDD追求的最终形态。
|
|
|
|
|
|
|
|
|
|
|
|
### 数据驱动和领域驱动对比
|
|
|
|
|
|
<p align="center">
|
|
|
|
|
|
<img width="650" src="http://xtoon.gitee.io/xtoon-boot-site/650.webp">
|
|
|
|
|
|
</p>
|
|
|
|
|
|
领域驱动设计与之前的系统设计开发过程有很大的不同:
|
|
|
|
|
|
1. 就在于系统的参与角色,产品、开发、测试等,需要形成一套通用语言;
|
|
|
|
|
|
2. 在于方案设计不再把db设计放在一个核心问题去解决,更加专注于业务模型本身,进行领域、业务聚合的设计,领域层的聚合及实体才是整个系统的核心内容;
|
|
|
|
|
|
3. 真正的面向对象编程,由过程式的事务脚本方式,转变为真正的面向对象。
|
|
|
|
|
|
|
|
|
|
|
|
### 分层架构
|
|
|
|
|
|
<p align="center">
|
|
|
|
|
|
<img width="650" src="http://xtoon.gitee.io/xtoon-boot-site/660.png">
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
- 用户界面层(或表示层)
|
|
|
|
|
|
负责向用户显示信息和解释用户指令。这里指的用户可以是另一个计算机系统, 不一定是使用用户界面的人
|
|
|
|
|
|
- 应用层
|
|
|
|
|
|
定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负 责的工作对业务来说意义重大,也是与其他系统的应用层进行交互的必要渠道
|
2021-10-24 11:14:31 +08:00
|
|
|
|
应用层要尽量简单,不包含业务规则或者知识,而只为下一层中的领域对象协调 任务,分配工作,使它们互相协作。它没有反映业务情况的状态,但是却可以具有另外一种状态,为用户或程序显示某个任务的进度
|
2021-06-07 11:31:04 +08:00
|
|
|
|
- 领域层(或模型层)
|
2021-10-24 11:14:31 +08:00
|
|
|
|
负责表达业务概念,业务状态信息以及业务规则。尽管保存业务状态的技术细节 是由基础设施层实现的,但是反映业务情况的状态是由本层控制并且使用的。领域层是业务软件的核心
|
2021-06-07 11:31:04 +08:00
|
|
|
|
- 基础设施层
|
2021-10-24 11:14:31 +08:00
|
|
|
|
为上面各层提供通用的技术能力:为应用层传递消息,为领域层提供持久化机制, 为用户界面层绘制屏幕组件,等等。基础设施层还能够通过架构框架来支持4个层次间的交互模式
|
2021-06-07 11:31:04 +08:00
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
2021-10-24 11:14:31 +08:00
|
|
|
|
- [DDD概念](https://domain-driven-design.org)
|
2021-06-07 11:31:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 维护者
|
|
|
|
|
|
|
2021-10-24 11:14:31 +08:00
|
|
|
|
- [享同科技](https://gitee.com/xtoon)
|
2021-06-07 11:31:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 版权声明
|
|
|
|
|
|
|
|
|
|
|
|
<img alt="Apache-2.0 license" src="https://www.apache.org/img/ASF20thAnniversary.jpg" width="128">
|
|
|
|
|
|
|
|
|
|
|
|
本软件基于 Apache-2.0 协议进行分发和使用,更多信息参见 [协议文件](LICENSE)。
|