基于springboot+dubbo分布式架構,提供分布式緩存、分布式鎖、分布式Session、讀寫分離等統一組件及RBAC權限管理等模塊。
前言
以分布式基礎架構為依托,包含但不僅限于分布式架構、基礎框架、前端模板、代碼生成、系統監測等功能,致力于為企業在蓬勃發展的業務及快速迭代開發領域提供全方位J2EE企業級技術規范及開發解決方案。
項目簡介
- JAVA語言的分布式系統架構。 使用SpringBoot整合開源框架。
- 系統包括5個子模塊:公共功能、平臺管理、項目頁面、統一管理平臺、項目說明。
- 公共功能:公共功能(基類、數據訪問組件、讀寫分離、分布式session、HTTP客戶端、日志服務、隊列服務、支付服務組件、redis緩存、Web安全等等)、公共配置、工具類。
- 系統管理:包括用戶管理、部門管理、菜單管理、角色管理、字典管理、參數管理、日志管理、應用監控等等。
- 業務相關:微信/支付寶支付。
- 系統通信:支持擴展子系統,子系統之間使用Dubbo或MQ進行通信。
- 演示平臺使用Maven對項目進行模塊化管理,提高項目的易開發性、擴展性。
主要功能
- 數據庫:Druid數據庫連接池,監控數據庫訪問性能,統計SQL的執行性能。
- 持久層:mybatis持久化,使用MyBatis-Plus優化,減少sql開發量;aop切換數據庫實現讀寫分離。Transtraction注解事務。
- MVC: 基于spring mvc注解,Rest風格Controller。Exception統一管理。
- 緩存和Session:注解redis緩存數據,Spring-session和redis實現分布式session同步,重啟服務會話不丟失。
- 數據同步:基于redis的分布式鎖。
- Web安全:實現XSS過濾和CSR過濾。
- 多系統交互:Dubbo,ActiveMQ多系統交互。
- 前后端分離:前端使用ajax訪問后端的rest服務,后端返回json格式數據。頁面用Nginx反向代理訪問。
- 支付功能:實現微信和支付寶支付客戶端。
- 日志:Logback打印日志,默認打印Web和Service簡要日志。
- 工具類:字符串處理,類型轉換,日期處理,IO和文件,Excel讀寫,加密解密,HTTP客戶端,XML處理,轉碼,各種Util等等。
- 代碼生成器:根據數據庫表結構生成簡單的增刪改查功能代碼,包括model、mApper、service、controller。
技術選型
● 核心框架:Spring Boot 1.5.12.RELEASE + Dubbo 2.5.7
● 分布式協調服務:ZooKeeper 3.4.11
● 校驗框架:Hibernate Validator 5.3.5.Final
● 安全框架:Apache Shiro 1.4.0
● 代碼生成:MyBatis Plus Generator 2.1.6
● 持久層框架:MyBatis 3.4.5 + MyBatis-Plus 2.1.6
● 數據庫連接池:Alibaba Druid 1.1.9
● 緩存框架:Redis.clients:jedis 2.8.2
● 隊列框架:Apache ActiveMQ 5.14.5
● 會話管理:Spring-Session 1.3.1
● 日志管理:SLF4J
● 前端框架:Layui 2.2.45
● 公用工具集:Hutool 3.2.3
● 支付組件:Egan pay-java-parent 2.0.7
● 代碼簡化:Lombok 1.16.20
● 序列化框架:Alibaba Fastjson 1.2.41
● HTTP客戶端:Hutool-http 4.0.10
● 接口測試框架:Swagger2
● 字體圖標:Alibaba Iconfont
● JWT:jsonwebtoken 0.9.0
項目結構
jww
├─jww-common 公共模塊
│ ├─jww-common-core 核心組件
│ ├─jww-common-db 數據訪問組件
│ ├─jww-common-mdb 多數據源組件
│ ├─jww-common-dsession 分布式session
│ ├─jww-common-http HTTP客戶端
│ ├─jww-common-jwt JWT組件
│ ├─jww-common-log 日志服務
│ ├─jww-common-mq 隊列服務
│ ├─jww-common-oss 對象儲存組件
│ ├─jww-common-pay 支付寶/微信支付組件
│ ├─jww-common-redis 緩存服務
│ ├─jww-common-ship 快遞服務組件
│ └─jww-common-web WEB組件
│
├─jww-ui 頁面模塊
│ └─jww-ui-ump 統一管理平臺頁面
│
├─jww-ump 統一管理平臺項目
│ ├─jww-ump-common 項目公共組件
│ ├─jww-ump-dao 項目數據訪問模塊
│ ├─jww-ump-generator 項目代碼生成器
│ ├─jww-ump-model 項目MODEL模塊
│ ├─jww-ump-mq 項目隊列模塊
│ ├─jww-ump-rpc-api 項目接口模塊
│ ├─jww-ump-rpc-service 項目后臺模塊
│ ├─jww-ump-server 項目前臺控制模塊
│ └─sqls 項目SQL語句
核心技術圖
基礎架構圖
本地部署
- 環境要求
- JDK1.8+
- MySQL5.5+
- Maven3.3+
- Zookeeper3.3+
- Redis3.0+
- Nginx1.8+
- Apache Activemq-5.0+ (可選)
- 執行SQL文件jww/jww-ump/sqls/jww.sql,初始化庫、表和數據;
- 修改jww/jww-ump/jww-ump-rpc-service/src/main/resources/application-dev.yml,更新MySQL帳號密碼,Redis的IP、端口和密碼,Zookeeper的地址;
- 修改jww/jww-ump/jww-ump-server/src/main/resources/application-dev.yml,更新Redis的IP、端口和密碼,Zookeeper的地址;
- 修改Nginx/conf/nginx.conf,指定靜態和動態頁面地址(參考附件);
- 啟動MySQL, Zookeeper, Redis, Nginx;
- IntelliJ IDEA 菜單File-Settings-Plugins,添加lombok plugin插件
- IntelliJ IDEA中右鍵 >> Run jww/jww-ump/jww-ump-rpc-service/src/main/java/com/jww/ump/rpc/service/ServiceApplication.java;
- IntelliJ IDEA中右鍵 >> Run jww/jww-ump/jww-ump-server/src/main/java/com/jww/ump/server/ServerApplication.java;
- 訪問地址:http://localhost 帳戶密碼:admin/123456
- swagger地址:http://localhost:8089/swagger-ui.html
預覽圖