StriveMcally / zywork

zywork项目是基于SSM框架的多个子系统的集合,使用分布式服务架构,为开发者提供高效快捷的开发体验。开发团队不需要再配置SSM框架便可使用众多集成的功能,甚至是可用的系统!zywork项目遵循阿里巴巴的Java开发规范,并补充自己团队内部的一些Java开发规范。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

zywork

作者:王振宇

zywork项目是基于SSM框架的多个子系统的集合,使用分布式服务架构,为开发者提供高效快捷的开发体验。开发团队不需要再配置SSM框架便可使用众多集成的功能,甚至是可用的系统!zywork项目遵循阿里巴巴的Java开发规范,并补充自己团队内部的一些Java开发规范。

zywork项目包含的功能有:

  1. 通用工具类
  2. 代码自动生成器
  3. 用户注册、登录,使用QQ,微信,微博等第三方登录的用户中心
  4. 基于Apache Shiro的权限管理
  5. 基于Activiti的业务流程管理
  6. 基于POI和JasperReport的Excel处理和PDF报表导出
  7. 基于ECharts的HTML5 WEB报表
  8. 基于Redis的数据缓存
  9. 基于Spring Session的分布式会话管理
  10. 基于Apache ZooKeeper和Dubbo的分布式服务架构
  11. 基于Logback的日志记录
  12. 基于Spring Task或QuartZ的作业调度
  13. 基于JavaMail和阿里云短信API的消息发送
  14. 基于微信支付,支付宝支付的支付中心
  15. 基于Vue.js和Element UI的前端及后台用户界面

系统基本架构

SpringMVC + Spring + MyBatis,但是同时也提供了Hibernate相关的工具类,尽管此项目并没有使用Hibernate。

此系统为分布式系统,包含有多个独立可运行的子系统,分布式协调服务基于Apache ZooKeeper,分布式服务基于阿里巴巴的Dubbo,使用Nginx提供Tomcat集群的负载均衡。

在zywork项目中,提供了一个documents目录,用于存储本项目相关的所有文档,其中zywork.sql文件是整个项目的数据库脚本文件,包含建立数据表及初始化数据的所有脚本。

项目子系统划分

名称 说明
zywork-common 通用模块,包含有常用的工具类
zywork-generator 代码自动生成器模块,可自动生成项目中所需要的实体类,DAO接口及其MyBatis映射文件,Service接口及其实现类,Controller
zywork-config 通用配置文件中心,为子系统提供通用的配置文件
zywork-ucenter 用户中心系统,包含有用户注册,登录,第三方登录
zywork-upms 权限管理系统,细粒度的权限控制。包含模块,角色,权限等管理
zywork-cms 内容管理系统,包含有文章类别,文章管理,系统通知,友情链接等
zywork-bpms 业务流程系统,包含有业务流程的上传,手动部署业务流程,业务流程的执行等
zywork-report 报表系统,包含有Excel的处理,PDF报表的导出,模板的导入与下载
zywork-message 消息通知系统,包含有邮件,短信。消息模板的添加与修改
zywork-pay 支付系统,包含有微信支付,支付宝支付。支付订单的管理
zywork-log 日志系统,操作日志的记录,查询等管理
zywork-schedule 作业调度系统,作业查询,修改,启动,停止,暂停与重启
zywork-ui 基于Vue.js和Element UI的UI系统,包含前端用户界面和后台用户界面

使用的技术

后台部分:

技术 说明
Apache Maven 项目构建管理
Shell Script Bash Shell脚本
SpringMVC WEB控制器
Spring IoC和AOP
MyBatis 数据库访问
MySQL 数据库
Druid 数据源及连接池
Apache Shiro 权限认证
Redis 分布式缓存数据库
Spring Session 分布式Session会话管理
Activiti 业务流程引擎
QuzrtZ 作业调度
Apache POI Excel处理
JasperReport PDF报表
JavaMail 邮件发送
阿里云短信API 短信接口
slf4j & Logback 日志记录
Apache ZooKeeper 分布式协调服务
Dubbo 分布式服务框架
Apache Kafka 分布式消息队列
FastDFS 分布式文件系统
阿里云OSS 阿里云对象存储

前端部分:

技术 说明
Node.js Node.js
npm npm
Webpack Webpack
Promise Promise
HTML5 HTML5
CSS3 CSS3
JavaScript JavaScript
Vue.js 用户界面构建
Vue Router Vue路由
Element UI UI框架
axios Vue AJAX请求
ECharts HTML5 WEB报表

第三方登录:

QQ登录,微信登录,微博登录

在线支付:

微信支付,支付宝支付

后台服务:

Ngnix, Tomcat, ZooKeeper, Redis, MySQL

开发及测试环境:

MacOS, IntellijIDEA, Google Chrome, Postman, JDK1.8, JavaEE7.0, Nginx, Tomcat8.5, ZooKeeper, Redis, MySQL5.7

Spring与Dubbo整合注意事项:

Dubbo提供了Java Configuration API,Properties,XML和注解的配置形式。此项目中推荐使用XML配置文件的形式,可支持事务管理的服务。如果使用注解的形式,则不支持事务管理的服务,并会出现Dubbo注解@Reference引用为null的问题。

Dubbo的服务超时时间设置在Provider中,不需要在Consumer中设置超时时间,根据服务性能确定超时时间。

Provider中定义服务实现类时,使用@Service(value = "userService")的注解,不需要在spring-dubbo-provider.xml文件中定义bean组件。

在Consumer中使用Provider服务时,使用@Resource注解或@Autowired(required = false)注解引用服务。

Dubbo服务打包成JAR包

此项目中,Dubbo服务通过Maven打包成JAR包,使用Dubbo框架提供的com.alibaba.dubbo.container.Main类来运行,以支持Dubbo的优雅停机(kill PID)。运行JAR包,需要把JAR文件和相关的依赖库的lib目录放在同一个目录,Dubbo默认从classes目录下的META-INF/spring目录去读取Spring配置文件,而此项目是把配置文件放在classes目录下的config目录中,所以运行时需要重新指定Spring的配置文件。运行命令如下:

java -Ddubbo.spring.config=classpath*:/config/*.xml -jar zywork-ucenter-service.jar

如果不想使用java命令来启动服务,每个子系统都提供了独立的Shell脚本来启动,停止和重启服务。如zywork-ucenter-service-impl中提供了zywork-ucenter-service.sh脚本,在把Dubbo服务打包成JAR包时,会把Shell脚本自动打包到与JAR文件同级的目录中。在使用脚本前,需要设置JAVA_HOME环境变量,并给脚本加上可执行权限。脚本使用方法如下:

启动服务:./zywork-ucenter-service.sh start

停止服务:./zywork-ucenter-service.sh stop

重启服务:./zywork-ucenter-service.sh restart

按顺序启动的服务(详细安装及使用方法可参考documents目录下的技术文档)

  1. MySQL
  2. Redis
  3. ZooKeeper
  4. Tomcat
  5. Nginx
  6. Node(部署前端)

所有模块的JAR和WAR都直接使用Maven构建,服务打包成JAR(参考Dubbo服务打包成JAR包)。

Web模块打包成WAR包,此系统中有多个WAR包,所有WAR包都部署到同一个Tomcat的Webapps目录中,由多个这样的Tomcat组成Tomcat集群。每个WEB模块都通过应用上下文路径来访问。

前端UI使用npm构建,详细请参考zywork-ui模块,构建好后部署到Nginx服务器中,Nginx服务器提供对Tomcat的负载均衡和动静分离。

运行步骤推荐为:

  1. 启动相关服务
  2. 构建JAR包和WAR包
  3. 启动JAR服务
  4. 部署WAR包并启动Tomcat
  5. 构建前端模块并部署到Nginx
  6. 启动Nginx
  7. 浏览器测试

LICENSE许可协议

MIT

Copyright © 王振宇 http://zywork.top

About

zywork项目是基于SSM框架的多个子系统的集合,使用分布式服务架构,为开发者提供高效快捷的开发体验。开发团队不需要再配置SSM框架便可使用众多集成的功能,甚至是可用的系统!zywork项目遵循阿里巴巴的Java开发规范,并补充自己团队内部的一些Java开发规范。

License:MIT License


Languages

Language:Java 61.7%Language:CSS 16.9%Language:JavaScript 16.0%Language:Smarty 2.4%Language:Vue 2.2%Language:Shell 0.7%Language:HTML 0.0%