码云zheng项目介绍
zheng
交流QQ群:133107819��、284280411��、305155242��、528049386��、157869467��、570766789��、601147566��、309985359��、336380857��、522723488��、556447629��、654558397��、392564561(群內(nèi)含各種工具、文檔、視頻教程下載)
前言
zheng項目創(chuàng)建于2016年10月4日,正在慢慢成長中,目的不僅僅是一個開發(fā)架構,而是努力打造一套從 前端模板 - 基礎框架 - 分布式架構 - 開源項目 - 持續(xù)集成 - 自動化部署 - 系統(tǒng)監(jiān)測 - 無縫升級 的全方位J2EE企業(yè)級開發(fā)解決方案。
項目介紹
基于Spring+SpringMVC+Mybatis分布式敏捷開發(fā)系統(tǒng)架構,提供整套公共微服務服務模塊:內(nèi)容管理、支付中心、用戶管理(包括第三方)、微信平臺、存儲系統(tǒng)、配置中心、日志分析、任務和通知等,支持服務治理、監(jiān)控和追蹤,努力為中小型企業(yè)打造全方位J2EE企業(yè)級開發(fā)解決方案。
組織結構
zheng ├── zheng-common -- SSM框架公共模塊 ├── zheng-admin -- 后臺管理模板 ├── zheng-ui -- 前臺thymeleaf模板[端口:1000] ├── zheng-config -- 配置中心[端口:1001] ├── zheng-upms -- 用戶權限管理系統(tǒng) | ├── zheng-upms-common -- upms系統(tǒng)公共模塊 | ├── zheng-upms-dao -- 代碼生成模塊,無需開發(fā) | ├── zheng-upms-client -- 集成upms依賴包,提供單點認證、授權、統(tǒng)一會話管理 | ├── zheng-upms-rpc-api -- rpc接口包 | ├── zheng-upms-rpc-service -- rpc服務提供者 | └── zheng-upms-server -- 用戶權限系統(tǒng)及SSO服務端[端口:1111] ├── zheng-cms -- 內(nèi)容管理系統(tǒng) | ├── zheng-cms-common -- cms系統(tǒng)公共模塊 | ├── zheng-cms-dao -- 代碼生成模塊,無需開發(fā) | ├── zheng-cms-rpc-api -- rpc接口包 | ├── zheng-cms-rpc-service -- rpc服務提供者 | ├── zheng-cms-search -- 搜索服務[端口:2221] | ├── zheng-cms-admin -- 后臺管理[端口:2222] | ├── zheng-cms-job -- 消息隊列、任務調(diào)度等[端口:2223] | └── zheng-cms-web -- 網(wǎng)站前臺[端口:2224] ├── zheng-pay -- 支付系統(tǒng) | ├── zheng-pay-common -- pay系統(tǒng)公共模塊 | ├── zheng-pay-dao -- 代碼生成模塊,無需開發(fā) | ├── zheng-pay-rpc-api -- rpc接口包 | ├── zheng-pay-rpc-service -- rpc服務提供者 | ├── zheng-pay-sdk -- 開發(fā)工具包 | ├── zheng-pay-admin -- 后臺管理[端口:3331] | └── zheng-pay-web -- 演示示例[端口:3332] ├── zheng-ucenter -- 用戶系統(tǒng)(包括第三方登錄) | ├── zheng-ucenter-common -- ucenter系統(tǒng)公共模塊 | ├── zheng-ucenter-dao -- 代碼生成模塊,無需開發(fā) | ├── zheng-ucenter-rpc-api -- rpc接口包 | ├── zheng-ucenter-rpc-service -- rpc服務提供者 | └── zheng-ucenter-web -- 網(wǎng)站前臺[端口:4441] ├── zheng-wechat -- 微信系統(tǒng) | ├── zheng-wechat-mp -- 微信公眾號管理系統(tǒng) | | ├── zheng-wechat-mp-dao -- 代碼生成模塊,無需開發(fā) | | ├── zheng-wechat-mp-service -- 業(yè)務邏輯 | | └── zheng-wechat-mp-admin -- 后臺管理[端口:5551] | └── zheng-ucenter-app -- 微信小程序后臺 ├── zheng-api -- API接口總線系統(tǒng) | ├── zheng-api-common -- api系統(tǒng)公共模塊 | ├── zheng-api-rpc-api -- rpc接口包 | ├── zheng-api-rpc-service -- rpc服務提供者 | └── zheng-api-server -- api系統(tǒng)服務端[端口:6666] ├── zheng-oss -- 對象存儲系統(tǒng) | ├── zheng-oss-sdk -- 開發(fā)工具包 | ├── zheng-oss-web -- 前臺接口[端口:7771] | └── zheng-oss-admin -- 后臺管理[端口:7772] ├── zheng-shop -- 電子商務系統(tǒng) ├── zheng-im -- 即時通訊系統(tǒng) ├── zheng-oa -- 辦公自動化系統(tǒng) ├── zheng-eoms -- 運維系統(tǒng) └── zheng-demo -- 示例模塊(包含一些示例代碼等)├── zheng-demo-rpc-api -- rpc接口包├── zheng-demo-rpc-service -- rpc服務提供者└── zheng-demo-web -- 演示示例[端口:8888]技術選型
后端技術:
| Spring Framework | 容器 | http://projects.spring.io/spring-framework/ |
| SpringMVC | MVC框架 | http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc |
| Apache Shiro | 安全框架 | http://shiro.apache.org/ |
| Spring session | 分布式Session管理 | http://projects.spring.io/spring-session/ |
| MyBatis | ORM框架 | http://www.mybatis.org/mybatis-3/zh/index.html |
| MyBatis Generator | 代碼生成 | http://www.mybatis.org/generator/index.html |
| PageHelper | MyBatis物理分頁插件 | http://git.oschina.net/free/Mybatis_PageHelper |
| Druid | 數(shù)據(jù)庫連接池 | https://github.com/alibaba/druid |
| FluentValidator | 校驗框架 | https://github.com/neoremind/fluent-validator |
| Thymeleaf | 模板引擎 | http://www.thymeleaf.org/ |
| Velocity | 模板引擎 | http://velocity.apache.org/ |
| ZooKeeper | 分布式協(xié)調(diào)服務 | http://zookeeper.apache.org/ |
| Dubbo | 分布式服務框架 | http://dubbo.io/ |
| TBSchedule & elastic-job | 分布式調(diào)度框架 | https://github.com/dangdangdotcom/elastic-job |
| Redis | 分布式緩存數(shù)據(jù)庫 | https://redis.io/ |
| Solr & Elasticsearch | 分布式全文搜索引擎 | http://lucene.apache.org/solr/ https://www.elastic.co/ |
| Quartz | 作業(yè)調(diào)度框架 | http://www.quartz-scheduler.org/ |
| Ehcache | 進程內(nèi)緩存框架 | http://www.ehcache.org/ |
| ActiveMQ | 消息隊列 | http://activemq.apache.org/ |
| JStorm | 實時流式計算框架 | http://jstorm.io/ |
| FastDFS | 分布式文件系統(tǒng) | https://github.com/happyfish100/fastdfs |
| Log4J | 日志組件 | http://logging.apache.org/log4j/1.2/ |
| Swagger2 | 接口測試框架 | http://swagger.io/ |
| sequence | 分布式高效ID生產(chǎn) | http://git.oschina.net/yu120/sequence |
| AliOSS & Qiniu & QcloudCOS | 云存儲 | https://www.aliyun.com/product/oss/ http://www.qiniu.com/ https://www.qcloud.com/product/cos |
| Protobuf & json | 數(shù)據(jù)序列化 | https://github.com/google/protobuf |
| Jenkins | 持續(xù)集成工具 | https://jenkins.io/index.html |
| Maven | 項目構建管理 | http://maven.apache.org/ |
前端技術:
| jQuery | 函式庫 | http://jquery.com/ |
| Bootstrap | 前端框架 | http://getbootstrap.com/ |
| Bootstrap-table | Bootstrap數(shù)據(jù)表格 | http://bootstrap-table.wenzhixin.net.cn/ |
| Font-awesome | 字體圖標 | http://fontawesome.io/ |
| material-design-iconic-font | 字體圖標 | https://github.com/zavoloklom/material-design-iconic-font |
| Waves | 點擊效果插件 | https://github.com/fians/Waves |
| zTree | 樹插件 | http://www.treejs.cn/v3/ |
| Select2 | 選擇框插件 | https://github.com/select2/select2 |
| jquery-confirm | 彈出窗口插件 | https://github.com/craftpip/jquery-confirm |
| jQuery EasyUI | 基于jQuery的UI插件集合體 | http://www.jeasyui.com |
| React | 界面構建框架 | https://github.com/facebook/react |
| Editor.md | Markdown編輯器 | https://github.com/pandao/editor.md |
| zhengAdmin | 后臺管理系統(tǒng)模板 | https://github.com/shuzheng/zhengAdmin |
| autoMail | 郵箱地址自動補全插件 | https://github.com/shuzheng/autoMail |
| zheng.jprogress.js | 加載進度條插件 | https://github.com/shuzheng/zheng.jprogress.js |
| zheng.jtotop.js | 返回頂部插件 | https://github.com/shuzheng/zheng.jtotop.js |
架構圖
模塊依賴
模塊介紹
zheng-common
Spring+SpringMVC+Mybatis框架集成公共模塊,包括公共配置、MybatisGenerator擴展插件、通用BaseService、工具類等。
zheng-admin
基于bootstrap實現(xiàn)的響應式Material Design風格的通用后臺管理系統(tǒng),zheng項目所有后臺系統(tǒng)都是使用該模塊界面作為前端展示。
zheng-ui
各個子系統(tǒng)前臺thymeleaf模板,前端資源模塊,使用nginx代理,實現(xiàn)動靜分離。
zheng-upms
本系統(tǒng)是基于RBAC授權和基于用戶授權的細粒度權限控制通用平臺,并提供單點登錄、會話管理和日志管理。接入的系統(tǒng)可自由定義組織、角色、權限、資源等。用戶權限=所擁有角色權限合集+用戶加權限-用戶減權限,優(yōu)先級:用戶減權限>用戶加權限>角色權限
zheng-oss
文件存儲系統(tǒng),提供四種方案:
- 阿里云 OSS
- 騰訊云 COS
- 七牛云
- 本地分布式存儲
zheng-api
服務網(wǎng)關,對外暴露統(tǒng)一規(guī)范的接口和包裝響應結果,包括各個子系統(tǒng)的交互接口、對外開放接口、開發(fā)加密接口、接口文檔等服務,可在該模塊支持驗簽、鑒權、路由、限流、監(jiān)控、容錯、日志等功能。示例圖:
zheng-cms
內(nèi)容管理系統(tǒng):支持多標簽、多類目、強大評論的內(nèi)容管理,有基本單頁展示,菜單管理,系統(tǒng)設置等功能。
zheng-pay
-
一站式支付解決方案,統(tǒng)一下單接口,支持支付寶、微信、網(wǎng)銀等多種支付方式。不涉及業(yè)務的純粹的支付平臺。
-
統(tǒng)一下單(統(tǒng)一下單接口、統(tǒng)一掃碼)、訂單管理、數(shù)據(jù)分析、財務報表、商戶管理、渠道管理、對賬系統(tǒng)、系統(tǒng)監(jiān)控。
zheng-ucenter
通用用戶管理系統(tǒng), 實現(xiàn)最常用的用戶注冊、登錄、資料管理、個人中心、第三方登錄等基本需求,支持擴展二次開發(fā)。
zheng-wechat-mp
微信公眾號管理平臺,除實現(xiàn)官網(wǎng)后臺自動回復、菜單管理、素材管理、用戶管理、消息群發(fā)等基礎功能外,還有二維碼推廣、營銷活動、微網(wǎng)站、會員卡、優(yōu)惠券等。
zheng-wechat-app
微信小程序后臺
環(huán)境搭建(QQ群內(nèi)有“zheng環(huán)境搭建和系統(tǒng)部署文檔.doc”)
開發(fā)工具:
- MySql: 數(shù)據(jù)庫
- jetty: 開發(fā)服務器
- Tomcat: 應用服務器
- SVN|Git: 版本管理
- Nginx: 反向代理服務器
- Varnish: HTTP加速器
- IntelliJ IDEA: 開發(fā)IDE
- PowerDesigner: 建模工具
- Navicat for MySQL: 數(shù)據(jù)庫客戶端
開發(fā)環(huán)境:
- Jdk7+
- Mysql5.5+
- Redis
- Zookeeper
- ActiveMQ
- Dubbo-admin
- Dubbo-monitor
工具安裝
環(huán)境搭建和系統(tǒng)部署文檔(作者:小兵,QQ群共享提供下載)
資源下載
- JDK7 http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
- Maven http://maven.apache.org/download.cgi
- Redis https://redis.io/download
- ActiveMQ http://activemq.apache.org/download-archives.html
- ZooKeeper http://www.apache.org/dyn/closer.cgi/zookeeper/
- Dubbo http://dubbo.io/Download-zh.htm
- Elastic Stack https://www.elastic.co/downloads
- Nginx http://nginx.org/en/download.html
- Jenkins http://updates.jenkins-ci.org/download/war/
- dubbo-admin-2.5.3 http://download.csdn.net/detail/shuzheng5201314/9733652
- dubbo-admin-2.5.4-SNAPSHOT-jdk8 http://download.csdn.net/detail/shuzheng5201314/9733657
- 更多資源請加QQ群
開發(fā)指南:
- 1、本機安裝Jdk7、Mysql、Redis、Zookeeper、ActiveMQ并啟動相關服務,使用默認配置默認端口即可
- 2、克隆源代碼到本地并打開,推薦使用IntelliJ IDEA,本地編譯并安裝到本地maven倉庫
修改本地Host
-
127.0.0.1 ui.zhangshuzheng.cn
-
127.0.0.1 upms.zhangshuzheng.cn
-
127.0.0.1 cms.zhangshuzheng.cn
-
127.0.0.1 pay.zhangshuzheng.cn
-
127.0.0.1 ucenter.zhangshuzheng.cn
-
127.0.0.1 wechat.zhangshuzheng.cn
-
127.0.0.1 api.zhangshuzheng.cn
-
127.0.0.1 oss.zhangshuzheng.cn
-
127.0.0.1 config.zhangshuzheng.cn
-
127.0.0.1 zkserver
-
127.0.0.1 rdserver
-
127.0.0.1 dbserver
-
127.0.0.1 mqserver
編譯流程
maven編譯安裝zheng/pom.xml文件即可
啟動順序(后臺)
準備工作
-
新建zheng數(shù)據(jù)庫,導入project-datamodel文件夾下的zheng.sql
-
修改各dao模塊和rpc-service模塊的redis.properties、jdbc.properties、generator.properties數(shù)據(jù)庫連接等配置信息,其中master.redis.password、master.jdbc.password、slave.jdbc.password、generator.jdbc.password密碼值使用了AES加密,請使用com.zheng.common.util.AESUtil工具類修改這些值
-
啟動Zookeeper、Redis、ActiveMQ、Nginx(配置文件參考project-tools/nginx下的*.conf文件)
zheng-upms
- 首先啟動 zheng-upms-rpc-service(直接運行src目錄下的ZhengUpmsRpcServiceApplication#main方法啟動) => zheng-upms-server(jetty),然后按需啟動對應子系統(tǒng)xxx的zheng-xxx-rpc-service(main方法) => zheng-xxx-webapp(jetty)
-
訪問 http://upms.zhangshuzheng.cn:1111/,子系統(tǒng)菜單已經(jīng)配置到zheng-upms權限中,不用直接訪問子系統(tǒng),默認帳號密碼:admin/123456
-
登錄成功后,可在右上角切換已注冊系統(tǒng)訪問
zheng-cms
-
zheng-cms-admin:啟動ActiveMQ-啟動 => 啟動zheng-rpc-service => 啟動zheng-cms-admin
-
zheng-cms-web:啟動nginx代理zheng-ui靜態(tài)資源,配置文件可參考 nginx.conf
zheng-oss
-
首先啟動zheng-oss-web服務
-
開發(fā)階段,如果zheng-oss-web沒有公網(wǎng)域名,推薦使用ngrok內(nèi)網(wǎng)穿透工具,為開發(fā)環(huán)境提供公網(wǎng)域名,實現(xiàn)上傳回調(diào)
-
啟動nginx代理zheng-ui靜態(tài)資源
開發(fā)演示(QQ群內(nèi)有“zheng十分鐘視頻:從檢出到啟動.wmv”)
-
創(chuàng)建數(shù)據(jù)表(建議使用PowerDesigner)
-
直接運行對應項目dao模塊中的generator.main(),可自動生成單表的CRUD功能和對應的model、example、mapper、service代碼
-
生成的model和example均已實現(xiàn)Serializable接口,支持分布式
-
已包含抽象類BaseServiceImpl,只需要繼承抽象類并傳入泛型參數(shù),即可默認實現(xiàn)mapper接口所有方法,特殊需求直接擴展即可
-
BaseServiceImpl默認已實現(xiàn)四種根據(jù)條件分頁接口
-
selectByExampleWithBLOBsForStartPage()
-
selectByExampleForStartPage()
-
selectByExampleWithBLOBsForOffsetPage()
-
selectByExampleForOffsetPage()
-
-
BaseServiceImpl方法根據(jù)讀寫操作自動切換主從數(shù)據(jù)源,繼承的擴展接口,可手動通過DynamicDataSource.setDataSource(DataSourceEnum.XXX.getName())指定數(shù)據(jù)源
-
-
啟動流程:優(yōu)先rcp-service服務提供者,再啟動其他webapp
-
擴展流程:可擴展和拆分rpc-api和rpc-service模塊,可按微服務拆分或場景拆分
部署方式(QQ群內(nèi)有“zheng十分鐘視頻:從打包到linux服務器部署.wmv”)
-
war包項目:使用tomcat等web容器啟動
-
rpc-service服務提供者jar包:將打包后的zheng-xxx-rpc-service-assembly.tar.gz文件解壓,使用bin目錄的管理腳本運行即可,支持優(yōu)雅停機。
框架規(guī)范約定
約定優(yōu)于配置(convention over configuration),此框架約定了很多編程規(guī)范,下面一一列舉:
- service類,需要在叫名`service`的包下,并以`Service`結尾,如`CmsArticleServiceImpl`- controller類,需要在以`controller`結尾的包下,類名以Controller結尾,如`CmsArticleController.java`,并繼承`BaseController`- spring task類,需要在叫名`task`的包下,并以`Task`結尾,如`TestTask.java`- mapper.xml,需要在名叫`mapper`的包下,并以`Mapper.xml`結尾,如`CmsArticleMapper.xml`- mapper接口,需要在名叫`mapper`的包下,并以`Mapper`結尾,如`CmsArticleMapper.java`- model實體類,需要在名叫`model`的包下,命名規(guī)則為數(shù)據(jù)表轉(zhuǎn)駝峰規(guī)則,如`CmsArticle.java`- spring配置文件,命名規(guī)則為`applicationContext-*.xml`- 類名:首字母大寫駝峰規(guī)則;方法名:首字母小寫駝峰規(guī)則;常量:全大寫;變量:首字母小寫駝峰規(guī)則,盡量非縮寫- springmvc配置加到對應模塊的`springMVC-servlet.xml`文件里- 配置文件放到`src/main/resources`目錄下- 靜態(tài)資源文件放到`src/main/webapp/resources`目錄下- jsp文件,需要在`/WEB-INF/jsp`目錄下- `RequestMapping`和返回物理試圖路徑的url盡量寫全路徑,如:`@RequestMapping("/manage")`、`return "/manage/index"`- `RequestMapping`指定method- 模塊命名為`項目`-`子項目`-`業(yè)務`,如`zheng-cms-admin`- 數(shù)據(jù)表命名為:`子系統(tǒng)`_`表`,如`cms_article`- 更多規(guī)范,參考[[阿里巴巴Java開發(fā)手冊] http://git.oschina.net/shuzheng/zheng/attach_files演示地址
演示地址: http://upms.zhangshuzheng.cn/
預覽圖
數(shù)據(jù)模型
拓撲圖
開發(fā)進度
參與開發(fā)
首先謝謝大家支持,如果你希望參與開發(fā),歡迎通過Github上fork本項目,并Pull Request您的commit。
常見問題
-
Eclipse下,dubbo找不到dubbo.xsd報錯,不影響使用,如果要解決,可參考 http://blog.csdn.net/gjldwz/article/details/50555922
-
報zheng-xxx.jar包找不到,請按照文檔編譯順序,將源代碼編譯并安裝到本地maven倉庫
-
zheng-cms-admin啟動卡住:因為沒有啟動activemq
-
zheng-upms-server訪問報session不存在:因為沒有啟動redis服務
-
界面沒有樣式:因為zheng-admin沒有編譯安裝到本地倉庫
附件
優(yōu)秀文章和博客
-
創(chuàng)業(yè)互聯(lián)網(wǎng)公司如何搭建自己的技術框架
-
微服務實戰(zhàn)
-
單點登錄原理與簡單實現(xiàn)
-
ITeye論壇關于權限控制的討論
-
RBAC新解:基于資源的權限管理(Resource-Based Access Control)
-
網(wǎng)站架構經(jīng)驗隨筆
-
支付系統(tǒng)架構
-
Spring整合JMS
-
跟我學Shiro目錄貼
-
跟我學SpringMVC目錄匯總貼
-
跟我學spring3 目錄貼
-
跟我學OpenResty(Nginx+Lua)開發(fā)目錄貼
-
Redis中文網(wǎng)
-
讀懂Redis并配置主從集群及高可用部署
-
Redis哨兵-實現(xiàn)Redis高可用
-
ELK(ElasticSearch, Logstash, Kibana)搭建實時日志分析平臺
-
Nginx基本功能極速入門
-
mybatis-genarator 自定義插件
-
Elasticsearch權威指南(中文版)
-
springMVC對簡單對象、Set、List、Map的數(shù)據(jù)綁定和常見問題.
-
如何細粒度地控制你的MyBatis二級緩存
-
做個男人,做個成熟的男人,做個有城府的男人
在線小工具
-
在線Cron表達式生成器
-
在線工具 - 程序員的工具箱
在線文檔
-
JDK7英文文檔
-
Spring4.x文檔
-
Mybatis3官網(wǎng)
-
Dubbo官網(wǎng)
-
Nginx中文文檔
-
Freemarker在線手冊
-
Velocity在線手冊
-
Bootstrap在線手冊
-
Git官網(wǎng)中文文檔
-
Thymeleaf
許可證
MIT
總結
以上是生活随笔為你收集整理的码云zheng项目介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab编程求卫星轨道长度,GPS卫
- 下一篇: C# Char类