快速开发平台使用说明
单体项目创建流程
-
创建项目
添加项目的基础配置信息。
-
上传脚本
将项目设计的数据库业务表上传到项目中,创建项目所有的物业表。
-
运行项目
生成单体服务
注意:
单体项目会将所有的业务表接口生成到一个单一的api接口服务中,适合于业务不复杂,功能不多的小型项目创建和使用。
微服务框架创建流程
-
创建项目
添加项目的基础配置信息。
-
上传脚本
将项目设计的数据库业务表上传到项目中,创建项目所有的物业表。
-
添加服务
添加微服务。微服务作为后台接口实体存在,通过服务注册和发现提供服务。
-
分配接口
将业务表分配给对应的微服务,该微服务就具备了提供这些业务表接口的能力。
-
生成框架
运行生成框架,系统自动生成所有的微服务和接口,包括springcloud基础框架(如配置中心、注册中心、授权中心、文件存储、消息推送等)
注意:
微服务框架在单体项目的基础上(使用的数据库设计总表),将大而全的业务表分配到多个新建的微服务中去,微服务只及负责被分配的业务逻辑表相关接口处理,各个服务通过服务注册和发现组装共同完成庞大复杂的业务系统功能。目前微服务支持基于springcloud alibaba框架生成(前面版本基于社区版本的springcloud框架生成)
创建项目
(1)进入快速开发平台
以实际安装部署地址为例,打开开发平台首页:https://developer.dondown.com/admin,输入用户名和密码登录到平台
注意:没有账号的,可以通过‘注册账号’按钮进入账号注册流程,注册需跟管理员赋予对应角色后即可通过账号密码登录到平台中。
进入平台后首页显示的就是平台的使用概况信息
(2)创建项目
选择我的项目,点击中间项目列表下的‘新建项目’按钮
在弹出的项目信息框中填写项目基本信息
项目基本信息参数如下
-
项目中文名称
项目的中文名称,最终会显示在生成的web管理后台的左上角的平台名称中,如下所示
-
项目英文名称
项目英文名称的简写,如zhny(智慧农业)、device(设备中台)、middle(中间件)等,该名称会作为单体项目的服务请求上下文(servlet context path)以及项目名、默认数据库名、nacos配置分组名等等。
-
项目使用端口
项目使用端口会作为单体项目的后台应用端口和web管理前端的请求端口。
-
项目使用包名称
所有的java后台源码包以此包为基础包名。建议以java规范命名如公司test,则命名为com.test
-
win文件存储路径
后台生成的文件上传接口存储文件上传的路径,windows下运行存储位置
-
linux文件存储路径
后台生成的文件上传接口存储文件上传的路径,linux下运行存储位置
-
数据库名称
连接的数据库名,执行项目代码服务连接的数据库地址,用于将上传的sql脚本运行到对应的数据库,然后从数据库中分析项目表结构和关联关系。
-
数据库地址
连接的数据库地址,执行项目代码服务连接的数据库地址,用于将上传的sql脚本运行到对应的数据库,然后从数据库中分析项目表结构和关联关系。
-
数据库用户
连接的数据库用户名。
-
数据库密码
连接的数据库密码。
-
数据库分库数量
如果后台需要进行数据库分库,则需要分成几个库,如果部分库则填写为1即可。
-
自定义分库类型
按照shardingsphere的分库类型,目前支持行表达式、哈希模余和时间范围分库,后台生成的配置文件中将生成默认的自定义分库算法,后续的针对表的分库算法可以引用之。
-
自定义分库算法
按照shardingsphere的分库算法类型。
-
是否启用授权
启用授权后,系统将生成系统自带的授权系统,目前支持的授权方式支持用户密码模式、授权码模式、简化模式、客户端模式、手机+验证码、手机+密码、邮件、微信登录、扫码登录等等。
-
授权地址
启用授权后,需要填写授权服务器的默认地址,生成后资源服务默认向该地址请求鉴权。
-
授权端口
授权服务的端口,默认6000。
-
APPID
授权服务请求单点登录时候使用的APPID,这个可以在授权服务申请发放一个APPID和秘钥
-
APP秘钥
授权服务请求单点登录时候使用的APPID,这个可以在授权服务申请发放一个APPID和秘钥
-
生成业务表
系统除了生成共性的功能之外,也叠加了一些偏向业务的功能代码如设备管理(视频播放)、广告栏目(移动端)、商城(商品管理和支付等)
-
启用用户日志
启用日志后,系统资源服务(接口服务)都会集成日志模块,在所有接口上生成日志拦截器,保存操作日志到数据库。
-
安装util工具库
安装工具库之后,所有接口服务都集成了工具库,工具库集成了类似ftp、文本、日期、算法、加密、文件等几十类工具处理类
-
生成文件上传接口
是否生成文件上传接口,如果后台api接口需要在windows或linux的接口系统中直接存储文件到对应硬盘(小项目)可以启用该项目,启用后api接口就生成了文件上传下载接口供web端使用(大系统可不用生成,直接使用生成的jar中的file服务,该服务集成fastdfs分布式文件存储和本地文件存储功能更强大)
-
mybatis二级缓存
是否使用mybatis二级缓存,如果启用,所有的mapper中将使用mybatis二级缓存,降低系统访问数据库压力,但是同时由于各个表之间的逻辑关系,配置是没有自动生成,需要自己配置二级缓存的关联关系,否则可能导致部分数据不能刷新,出现脏数据。
-
使用resis工具
启用后自动生成redis操作工具类。
-
redis作为二级缓存
如果启用redis并且使用redis作为mybatis的二级缓存,生成二级缓存配置的时候会使用redis自定义二级缓存实现类,而不使用mybatis内部二级缓存实现。
-
生成关联表接口
如user_role表既关联user表又关联role表,生成user_role表的底层接口是否同时生成通过user外键id查询user_role和通过role表的外键id查询User_role数据,如果选择是则会生成外键关联表查询接口。
-
mybatis属性映射列
是否明确生成mybatis的orm列与对象属性的显示定义。选择是会生成数据库列和属性的映射,选择否mybatis也会自动识别。
-
启用websocket
后台接口生成是否同时生成websocket相关接口,部分api接口有web端连接后台websocket,通过websocket推送消息的需求,此时可以选择系统自动生成后台接口。
-
开启数据库事务
生成的service层接口是否都开启全局事务,如果后台service接口需要做复杂的操作,就需要开启,建议不开启,因为开关针对于全局的,如果特定接口需要开启则可以手动添加。
-
开启全局事务
如果是微服务框架项目,系统会生成基于seata的undo_log的二阶段提交分布式事务,该开关控制service接口是否启用seata的全局事务注解。
-
使用工作流引擎
系统是否涉及到工作流功能使用,如果涉及到就可以启用工作流引擎,系统自动引入activiti6和封装好的sdk接口供业务系统开发时候使用。
(3)上传设计脚本
项目新建之后在项目列表中就能看到该项目信息了,如下所示
项目创建之后,我们需要设计数据库,将系统设计到的所有库添加到项目中,这里提供了两种方式
-
直接上传设计好的数据库脚本
这种方法简单、直接、快速,用户只需要私下创建.sql的脚本,按照sql规范写好数据库脚本(所有表、索引、外键等),上后选择对应项目后面的三个点号’…',在弹出菜单中选择‘上传设计脚本’即可,开发平台的‘状态:…’显示块会显示提交sql的分析进度,我们显示分析完成即可。
分析完成后,我们在项目数列表点击,在右侧的表中就能显示创建的所有业务表,选中某个表,在表下方即可看到表的所有列,切换到索引栏目,就能看到表的索引列表。
-
在开发平台手动添加表、字段和索引
当然,我们可不写sql脚本上传,直接一个一个的在开发平台添加表、添加表字段、索引等完成系统业务表的设计。
建议:
实际生产中建议线下写好sql脚本(速度块),然后上传到开发平台进行分析自动生成。以手动创建、修改为辅助手段,对增加或修改的特别字段进行调整完成业务表的数据库设计。
运行项目
设计好项目业务表之后,下来我们就可以按需生成单体项目、微服务项目了,单体项目适合于小项目使用,微服务项目适合于复杂场景中使用。
(1)单体项目创建
我们选择项目,然后点击后面的三个按钮,弹出菜单中选择《生成单体项目》按钮
在状态块中就能看到项目的创建进度了,待创建完成浏览器自动弹出下载窗口进行下载
(2)微服务框架创建
微服务创建是基于单体项目的项目基础信息的,包括业务数据表,在创建项目基础上划分成多个微服务,然后为微服务分配对应业务表(接口),具体操作如下
进入菜单《项目管理》-> 《我的框架》
-
添加微服务
在右上角选择《新增微服务》按钮,在弹出的微服务编辑框中,输入微服务名称和端口(同一个项目中微服务名和端口不要相同导致冲突)
编辑微服务:包括服务名称(英文)、服务端口(提供服务的端口)以及服务描述(在pom.xml以及服务健康中会显示出来)
选择左侧项目,点击查询即可看到创建的所有微服务列表
-
为微服务分配接口
选择上方的微服务(刚创建的),在下方即可看到该服务可提供的接口表列表(接口表会生成的所有curd、导入导出等接口)
在弹出的系统表中,选择哪些表的接口分配给该微服务,然后点击确定即可
点击确定,即可看到分配的业务表列表
-
生成微服务框架
创建好所有微服务并分配好各个微服务接口表之后,我们就可以生成微服务框架了,点击项目三个操作点=》生成框架,然后等待运行状态运行完成,自动弹出下载项目接口
部署项目
- 项目部署支持,windows部署、linux部署;
- 支持普通批处理简单部署和kubernates指令编排部署;
- 支持基于nginx负载部署和支持springcloud网关部署;
首先运行系统必须安装如下服务
- redis
- mysql
(1)单体项目部署
-
简单部署
项目生成后,导入项目编译所有项目自动生成jar包到项目根目录下的jar目录,然后可以直接在windows上或linux上jar包下的start.bat或start.sh启动整个项目。
-
nginx部署
编译scripts/生成项目目录.bat,所有服务jar生成到jar目录下,nginx配置系统也自动为你生成了,直接启动项目下的nginx即可
start nginx
启动nginx后,直接使用简单部署启动所有服务即可
(2)微服务项目部署
当前springcloud是基于alibaba的微服务框架的(老的是基于社区版本的springcloud的,会自动生成注册中心、配置中心),所以首先安装依赖的外围服务,具体部署步骤如下
-
安装nacos(必须)
nacos作为注册中心和配置中心,是其他服务启动的前置条件,这里不在说明,自行解码。
-
安装sentinel(可选)
如果服务需要限流则必须安装sentinel,包括网关或者资源服务都可以与sentinel通过nio实现通信,进而实现限流功能。这里不在说明,自行解码。
-
安装rocketmq(可选)
如果系统需要通过消息中间件实现异步解耦、流量削峰功能,需要借助中间件,新版本已经从kafka移植到了rocketmq中,这时需要安装rocketmq中间件,这里不在说明,自行解码。
-
导入配置
项目生成后,会在项目的源码目录下生成一个config文件夹,config文件夹下会有一个项目名相同的子文件夹和一个说明,按照说明将子文件夹压缩成zip文件,然后再nacos中做如下两步骤
- 在nacos中新建id为dev的开发环境名字空间
- 在nacos配置中选择dev的名字空间,然后选择导入配置按钮,在弹出的文件选择框中选择刚压缩的zip,将项目所有配置导入到nacos中
-
启动服务
这里以简单启动服务进行说明,编译项目,在打包目录jar中,启动start.bat启动所有外围服务即可。
联系作者
由于时间有限,操作说明写的比较简陋,有时间在项目说明,有疑问的请联系
email:lixx2048@163.com
wechat:lixiang6153
name:李祥祥