2022-10-22 10:51:08 +08:00
2021-06-25 21:25:29 +08:00
2021-06-25 21:09:13 +08:00
2021-07-05 15:30:56 +08:00
2021-07-05 15:30:56 +08:00
2021-06-10 16:31:30 +08:00
2021-06-07 11:34:04 +08:00
2021-06-10 16:31:30 +08:00
2022-10-22 10:51:08 +08:00

xtoon-cloud

基于领域驱动设计DDD并支持SaaS平台的微服务开发框架.

ApiAdmin ApiAdmin ApiAdmin

单体应用版https://gitee.com/xtoon/xtoon-boot

帮忙右上角点下 Star ,感谢您的支持。

为何开源

项目初期或MVP阶段就上微服务服务拆分的很细这会增加开发成本和风险。
个人认为可以选择合适的框架先开发基于DDD的单体应用后期根据领域的不同弹性需求再快速的、低成本的过渡为微服务版。
这也是我们开源基于DDD的xtoon框架的初衷目前单体应用版和微服务版都已发布正式版如想更深入的学习和交流欢迎加入微信群

为何选择xtoon-cloud

  • 解决编写过程式和事务代码,造成后期维护逻辑混乱、维护成本高的痛点;
  • 边界规范易维持,核心业务逻辑内聚在领域内,低耦合,高内聚,易于长期维护;
  • 网上基本讲的都是DDD的理论很少有讲怎么落地xtoon-cloud提供了完整落地方案和企业级微服务架构
  • 可以快速开发,框架提供了系统管理和组织架构等核心模块;
  • 支持多租户的SaaS平台

DDD落地公众号

学习DDD概念和落地经验分享欢迎关注

技术交流

欢迎入扫码加入微信群或扫码加我好友拉你进大群 来和DDD实践者们一起探讨DDD落地方案吧。

如果你解决了某些bug或者新增了一些功能欢迎 贡献代码,感激不尽~

技术选型

  • 基础框架Spring Cloud Alibaba
  • 网关Spring Cloud Gateway
  • 鉴权认证Spring Cloud Security+JWT
  • 服务监控spring-boot-admin
  • 流量控制Sentinel
  • 注册配置中心Nacos
  • RPCdubbo
  • mybatis-plus

主要模块

  1. 登录注册:账号、手机号验证登录,租户注册;
  2. 用户管理:用户新增,分配角色,禁用等;
  3. 角色管理:角色新增,查看,维护菜单等;
  4. 菜单管理:树形菜单管理,可配置菜单和按钮权限等;
  5. 租户管理:租户列表,禁用等;
  6. 日志管理:记录操作日志记录和查询;

项目结构

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     系统管理服务
│       

部署

前期准备

  • 拉取前后端项目代码;
  • 安装必要的环境jdk1.8+,mysql5.7+,redis,nodejs等
  • mysql新建两个库导入doc下面的sql文件
  • 修改成本地环境配置mysqlredis
  • 启动前后端项目,访问地址;#

本地启动顺序

  • xtoon-register-server注册配置中心
  • xtoon-sys-server用户服务
  • xtoon-auth-server认证服务
  • xtoon-gateway-server网关服务
  • xtoon-monitor-server监控服务
  • xtoon-sentinel-server流量控制服务
  • xtoon-could-element前端项目

测试/生产发布

支持jenkins pipeline + docker + harbor + k8s部署项目开源配置文件DockerfileJenkinsfilek8s-deployment.tpl具体可加群讨论QQ13095000

核心理念

六边形理论

Alistair Cockburn提出了六边形架构又被称为端口和适配器架构。观察上图我们发现对于核心的应用程序和领域模型来说其他的底层依赖或实现都可以抽象为输入和输出两类。组织关系变为了一个二维的内外关系而不是上下结构。每个io与应用程序之前均有适配器完成隔离工作每个最外围的边都是一个端口。基于六边形架构设计的系统是DDD追求的最终形态。

数据驱动和领域驱动对比

领域驱动设计与之前的系统设计开发过程有很大的不同: 1. 就在于系统的参与角色,产品、开发、测试等,需要形成一套通用语言; 2. 在于方案设计不再把db设计放在一个核心问题去解决更加专注于业务模型本身进行领域、业务聚合的设计领域层的聚合及实体才是整个系统的核心内容 3. 真正的面向对象编程,由过程式的事务脚本方式,转变为真正的面向对象。

分层架构

  • 用户界面层(或表示层)
    负责向用户显示信息和解释用户指令。这里指的用户可以是另一个计算机系统, 不一定是使用用户界面的人
  • 应用层
    定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负 责的工作对业务来说意义重大,也是与其他系统的应用层进行交互的必要渠道 应用层要尽量简单,不包含业务规则或者知识,而只为下一层中的领域对象协调 任务,分配工作,使它们互相协作。它没有反映业务情况的状态,但是却可以具有另外一种状态,为用户或程序显示某个任务的进度
  • 领域层(或模型层)
    负责表达业务概念,业务状态信息以及业务规则。尽管保存业务状态的技术细节 是由基础设施层实现的,但是反映业务情况的状态是由本层控制并且使用的。领域层是业务软件的核心
  • 基础设施层
    为上面各层提供通用的技术能力:为应用层传递消息,为领域层提供持久化机制, 为用户界面层绘制屏幕组件等等。基础设施层还能够通过架构框架来支持4个层次间的交互模式

相关文档

维护者

版权声明

Apache-2.0 license

本软件基于 Apache-2.0 协议进行分发和使用,更多信息参见 协议文件

Description
基于DDD(领域驱动设计)并支持SaaS平台的微服务框架
Readme Apache-2.0 3.9 MiB
Languages
JavaScript 87.2%
Java 10%
HTML 1.9%
CSS 0.8%