整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JKAS开发框架技术文档2:配置—框架配置文件

JKAS开发框架技术文档2:配置—框架配置文件

、框架配置文件

[SERVER]

#默认语言

locale=zh_CN

#是否禁用语言加载//如果是做api类的,禁语言加载,提升性能

locale_enable=1

#系统名

site_name=JKAS

#默认字符编码

charset=UTF-8

#货币符号

currency_symbol=¥

#控制器映射包路径

app_package=test.z.app

#默认后缀

url_endwith=.do

#url 别名是否开启,开启后需要在/data/alias文件配置好别名设置

url_alias=0

#是否使用https

use_https=0

#最大并发请求设置,0表示不限制

max_requests=0

# 最大用户量设置,0表示不限制

max_sessions=0

#是否开启模块模式,开启后,控制器包名要加上模块名称,同时语言路径也需要加上模块名称,视图模板路径也需要加上模块名称

module_enable=0

#默认模块

module_default=default

#模块列表,该列表指定的模块名,才启用模块功能,全部启用的话,不设置或设置成为*

module_list=test,test2

#样式域名

css_domain=http://css.z.com

#js域名

js_domain=http://js.z.com

#图片域名

img_domain=http://img.z.com

#资源根目录

res_root_path=static

#CSS资源域名

rescss_domain=http://libcss.z.com

#JS资源域名

resjs_domain=http://libjs.z.com

#图片上传保存路径

img_save_path=images


[HTTP]

ignoreVerifySSL=0//1为忽略验证HTTPS证书有效性


#session配置

[SESSION]

#是否开启允许自定义session机制

session_override=1

#自定义session指定类,该自定义类必须继承JkasSession

session_class=test.z.session.MySession

#default|redis|memcache,pass for redis

session_type=memcache

session_host=127.0.0.1:11211

session_pass=123456

session_maxinterval=1


#定时任务

[CRON]

#定时任务的包名

cron_package=test.z.cron

#是否开启定时任务

cron_enable=1

#是否开启定时任务日志输出,定时日志目录为temp/logs/jkas_cron_年-月.log

cron_log_enable=1


[QUEUE]

#是否启用队列

queue_enable=1

#队列执行自定义类

queue_class=test.z.queue.MyQueue

#队列执行间隔时间,单位微秒,1秒=1000微秒

queue_interval=5000


[SOCKET]

#是否开启socket

socket_enable=1

#是否启用自定义socket

socket_override=1

#自定义socket的类,必须继承SocketService

socket_class=test.z.socket.MySocket

#socket端口

socket_port=9999

#socket调用包名设置

socket_package=test.z.socket


[WEBSOCKET]

#是否开启websocket

ws_enable=1

#websocket端口

ws_port=8888

#websocket调用包名设置

ws_package=test.z.websocket


[RPC]

#是否启用RPC

rpc_enable=1

#RPC服务所在包名

rpc_package=test.z.rpc

#RPC端口

rpc_port=9889


[RMI]

#是否启用RMI

rmi_enable=1

#RMI服务所在包名

rmi_package=test.z.rmi

#RMI主机地址

rmi_host=localhost

#RMI端口

rmi_port=9888


[FILTER]

#是否启用过滤器

filter_enabled=1

#过滤字符串,多个用|分开

filter_str=

#过滤指定调用类设置,该类必须继承Filters

filter_class=test.z.filter.Test


[LISTENER]

#是否开启监听器

listener_enable=1

#监听器指定调用类设置,该类必须继承Listener

listener_class=test.z.listener.Test


[MAIL]

#发邮件服务器地址

smtp_host=smtp.qq.com

#邮件端口

smtp_port=465

#邮件认证用户

smtp_user=421361697@qq.com

#邮件认证密码

smtp_pass=************

#邮件是否启用ssl

smtp_ssl=1

#邮件是否开启调试

smtp_debug=0


[UPLOAD]

#默认最大上传文件

upload_max_size=1024

#默认上传类型

upload_allow_type=.jpeg,.jpg,.png,.gif

upload_deny_type=.exe,.java


#cache config default|redis|memcache,pass for redis

[CACHE]

#缓存是否启用

cache_enable=1

#缓存类型

cache_type=default

#缓存服务器地址及端口

cache_host=192.168.54.233:6379

#缓存服务器认证密码

cache_pass=123456

#默认缓存有效时间(分钟)

cache_expired=30


[VIEW]

#是否启用视图,如果做api类应用,禁用视图将提升性能

view_enable=1

#引擎引擎,支持beetl,thymeleaf,freemarker,velocity,默认beetl

view_engine=beetl

#视图模板类型(后缀)

view_tpl=html

#视图模板路径

view_path=themes

#视图模板主题

view_theme=green


[LOG]

#是否开启日志

log_enable=1


[DATABASE]

#数据源类型,0为默认容器数据源,1为使用框架配置数据源,框架数据配置文件路径为data/ds/数据源文件名

ds_type=0

#数据库表前缀

table_prefix=jkas_

data_source=dbconfig //必须与resin或tomcat配置的数据源保持一致,如果用框架数据源,必须与框架数据源文件名一致

#是否开启数据库集群

db_cluster=1

#集群用来写的数据源设置,多个用逗号隔开,必须与resin或tomcat配置的数据源保持一致,如果用框架数据源,必须与框架数据源文件名一致

data_source_write=dbconfigw

#集群用来读的数据源设置,多个用逗号隔开,必须与resin或tomcat配置的数据源保持一致,如果用框架数据源,必须与框架数据源文件名一致

data_source_read=dbconfigr1,dbconfigr2

#数据库类型mysql sqlite oracle mssql 暂时只支持mysql和sqlite,非Mysql和sqlite数据库需要自行写完整的sql

db_type=mysql

#开启自定义SQL语句功能

db_custom_sql=1

#配置自定义SQL文件所在目录,SQL自定义文件与模型指定的表名同名,以.m为后缀

db_custom_sql_dir=data/sql


;用户整合配置

[UCLIENT]

#是否启用,0 不启用,1 启用

uc_enable=0

#接口类型,1为数据库接口,2为网络接口

uc_type=1

#appid,要与用户中心应用id一致

uc_appid=234

#通信密码,要与用户中心应用通信密码保持一致

uc_authkey=sldfdsfsdf

#应用密钥,要与用户中心该应用的应用密钥保持一致,留空将不进行密钥签名

uc_prikey=XXXXXX

#数据库类型,暂时只支持mysql

uc_db_type=mysql

#用户数据源

uc_data_source=dbconfiguc //必须与resin或tomcat配置的数据源保持一致

#是否开启集群模式

uc_db_cluster=1

#写数据源设置,多个用逗号隔开

uc_data_source_write=dbconfigucw1,dbconfigucw2

#读数据源设置,多个用逗号隔开

uc_data_source_read=dbconfigucr1,dbconfigucr2

#用户数据库表前缀

uc_table_prefix=jkas_

#用户中心接口域名

uc_api=http://uc.z.com

#用户中心接口后缀

uc_endwith=.do

章来源:加米谷大数据

目录:

  • 1.pig
  • 2.zheng
  • 3.Cloud-Platform
  • 4.SpringBlade
  • 5.Guns

一、 pig

开源地址:https://gitee.com/log4j/pig

基于Spring Cloud、OAuth2.0、Vue的前后端分离的系统。 通用RBAC权限设计及其数据权限和分库分表 支持服务限流、动态路由、灰度发布、 支持常见登录方式, 多系统SSO登录。

功能列表:

完善登录:账号密码模式、短信验证码模式、社交账号模式均整合Spring security oAuth

单点登录:基于Srping security oAuth 提供单点登录接口,方便其他系统对接

用户管理:用户是系统操作者,该功能主要完成系统用户配置。

机构管理:配置系统组织机构,树结构展现,可随意调整上下级。

菜单管理:配置系统菜单,操作权限,按钮权限标识等。

角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。

动态路由:基于zuul实现动态路由,后端可配置化。

灰度发布:自定义ribbon路由规则匹配多版本请求。

终端管理:动态配置oauth终端,后端可配置化。

字典管理:对系统中经常使用的一些较为固定的数据进行维护,如:是否等。

操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。

服务限流:多种维度的流量控制(服务、IP、用户等)

消息总线:配置动态实时刷新

分库分表:shardingdbc分库分表策略

数据权限: 使用mybatis对原查询做增强,业务代码不用控制,即可实现。

文件系统: 支持FastDFS、七牛云,扩展API几行代码实现上传下载

消息中心:短信、邮件模板发送,几行代码实现发送

聚合文档:基于zuul实现 swagger各个模块的实现

代码生成:前后端代码的生成,支持Vue

缓存管理:基于Cache Cloud 保证Redis 的高可用

服务监控: Spring Boot Admin

分布式任务调度: 基于elastic-job的分布式任务,zookeeper做调度中心

zipkin链路追踪: 数据保存ELK,图形化展示

pinpoint链路追踪: 数据保存hbase,图形化展示

二、zheng

开源地址:https://gitee.com/shuzheng/zheng

基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。

三 、Cloud-Platform

开源地址:https://gitee.com/minull/ace-securityCloud-Platform

是国内首个基于Spring Cloud微服务化开发平台,核心技术采用Spring Boot2以及Spring Cloud Gateway相关核心组件,前端采用vue-element-admin组件。具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。

架构摘要

服务鉴权通过JWT的方式来加强服务之间调度的权限验证,保证内部服务的安全性。

监控利用Spring Boot Admin 来监控各个独立Service的运行状态;利用Hystrix Dashboard来实时查看接口的运行状态和调用频率等。

负载均衡将服务保留的rest进行代理和网关控制,除了平常经常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以帮我们进行正常的网关管控和负载均衡。其中扩展和借鉴国外项目的扩展基于JWT的Zuul限流插件,方面进行限流。

服务注册与调用基于Consul来实现的服务注册与调用,在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。

熔断机制因为采取了服务的分布,为了避免服务之间的调用“雪崩”,采用了Hystrix的作为熔断器,避免了服务之间的“雪崩”。

四 、SpringBlade

开源地址:https://gitee.com/smallc/SpringBladeSpringBlade 2.0 是一个基于 Spring Boot 2 & Spring Cloud Finchley & Mybatis 等核心技术,用于快速构建中大型系统的基础框架。和bootdo有相似之处。

主要特性&&变化

采用前后端分离的模式,前端单独开源出一个框架:Sword,主要选型技术为React、Ant Design、Umi、Dva

后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:Blade-Tool

Blade-Tool已推送至Maven中央库,直接引入即可,减少了工程的臃肿,也可更注重于业务开发

注册中心选型Consul

部署使用Docker或K8s + Jenkins

使用Traefik进行反向代理

踩了踩Kong的坑,有个基本的使用方案,但不深入,因为涉及到OpenResty。

封装了简单的Secure模块,采用JWT做Token认证,可拓展集成Redis等细颗粒度控制方案

在2.0诞生之前,已经稳定生产了近一年,经历了从Camden -> Finchley的技术架构,也经历了从fat jar -> docker -> k8s + jenkins的部署架构

项目分包明确,规范微服务的开发模式,使包与包之间的分工清晰。

五 、Guns

开源地址:https://gitee.com/stylefeng/gunsGuns

基于Spring Boot 2,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl,Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架!同时提供spring cloud版本!

Guns微服务版本

Guns的核心是roses-kernel项目https://gitee.com/stylefeng-Roses/roses-kernel,提供对spring cloud的支持。

Roses框架基于Spring Boot 2和Spring Cloud Finchley.RELEASE,整合Eureka + Hystrix + Ribbon + Feign + Zuul,更符合企业级的分布式和服务化解决方案,Roses拥有高效率的开发体验,提供可靠消息最终一致性分布式事务解决方案,提供基于调用链的服务治理,提供可靠的服务异常定位方案(Log + Trace)等等,一个分布式框架不仅需要构建高效稳定的底层开发框架,更需要解决分布式带来的种种挑战!

管理系统功能

1.用户管理 2.角色管理 3.部门管理 4.菜单管理 5.字典管理 6.业务日志 7.登录日志 8.监控管理 9.通知管理 10.代码生成(旗舰版目前还没完成)

项目特点

基于SpringBoot,简化了大量项目配置和maven依赖,让您更专注于业务开发,独特的分包方式,代码多而不乱。

完善的日志记录体系,可记录登录日志,业务操作日志(可记录操作前和操作后的数据),异常日志到数据库,通过@BussinessLog注解和LogObjectHolder.me().set()方法,业务操作日志可具体记录哪个用户,执行了哪些业务,修改了哪些数据,并且日志记录为异步执行,详情请见@BussinessLog注解和LogObjectHolder,LogManager,LogAop类。

利用beetl模板引擎对前台页面进行封装和拆分,使臃肿的html代码变得简洁,更加易维护。

对常用js插件进行二次封装,使js代码变得简洁,更加易维护,具体请见webapp/static/js/common文件夹内js代码。

利用ehcache框架对经常调用的查询进行缓存,提升运行速度,具体请见ConstantFactory类中@Cacheable标记的方法。

controller层采用map + warpper方式的返回结果,返回给前端更为灵活的数据,具体参见com.stylefeng.guns.modular.system.warpper包中具体类。

防止XSS攻击,通过XssFilter类对所有的输入的非法字符串进行过滤以及替换。

简单可用的代码生成体系,通过SimpleTemplateEngine可生成带有主页跳转和增删改查的通用控制器、html页面以及相关的js,还可以生成Service和Dao,并且这些生成项都为可选的,通过ContextConfig下的一些列xxxSwitch开关,可灵活控制生成模板代码,让您把时间放在真正的业务上。

控制器层统一的异常拦截机制,利用@ControllerAdvice统一对异常拦截,具体见com.stylefeng.guns.core.aop.GlobalExceptionHandler类。

页面统一的js key-value单例模式写法,每个页面生成一个唯一的全局变量,提高js的利用效率,并且有效防止多个人员开发引起的函数名/类名冲突,并且可以更好地去维护代码。

业务日志记录

日志记录采用aop(LogAop类)方式对所有包含@BussinessLog注解的方法进行aop切入,会记录下当前用户执行了哪些操作(即@BussinessLog value属性的内容),如果涉及到数据修改,会取当前http请求的所有requestParameters与LogObjectHolder类中缓存的Object对象的所有字段作比较(所以在编辑之前的获取详情接口中需要缓存被修改对象之前的字段信息),日志内容会异步存入数据库中(通过ScheduledThreadPoolExecutor类)。

录:

  • 1.pig
  • 2.zheng
  • 3.Cloud-Platform
  • 4.SpringBlade
  • 5.Guns

一 pig

开源地址:
https://gitee.com/log4j/pig

基于Spring Cloud、OAuth2.0、Vue的前后端分离的系统。 通用RBAC权限设计及其数据权限和分库分表 支持服务限流、动态路由、灰度发布、 支持常见登录方式, 多系统SSO登录。

功能列表:

完善登录:账号密码模式、短信验证码模式、社交账号模式均整合Spring security oAuth

单点登录:基于Srping security oAuth 提供单点登录接口,方便其他系统对接

用户管理:用户是系统操作者,该功能主要完成系统用户配置。

机构管理:配置系统组织机构,树结构展现,可随意调整上下级。

菜单管理:配置系统菜单,操作权限,按钮权限标识等。

角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。

动态路由:基于zuul实现动态路由,后端可配置化。

灰度发布:自定义ribbon路由规则匹配多版本请求。

终端管理:动态配置oauth终端,后端可配置化。

字典管理:对系统中经常使用的一些较为固定的数据进行维护,如:是否等。

操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。

服务限流:多种维度的流量控制(服务、IP、用户等)

消息总线:配置动态实时刷新

分库分表:shardingdbc分库分表策略

数据权限: 使用mybatis对原查询做增强,业务代码不用控制,即可实现。

文件系统: 支持FastDFS、七牛云,扩展API几行代码实现上传下载

消息中心:短信、邮件模板发送,几行代码实现发送

聚合文档:基于zuul实现 swagger各个模块的实现

代码生成:前后端代码的生成,支持Vue

缓存管理:基于Cache Cloud 保证Redis 的高可用

服务监控: Spring Boot Admin

分布式任务调度: 基于elastic-job的分布式任务,zookeeper做调度中心

zipkin链路追踪: 数据保存ELK,图形化展示

pinpoint链路追踪: 数据保存hbase,图形化展示

二 zheng

开源地址:
https://gitee.com/shuzheng/zheng

基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。

三 Cloud-Platform

开源地址:
https://gitee.com/minull/ace-securityCloud-Platform

是国内首个基于Spring Cloud微服务化开发平台,核心技术采用Spring Boot2以及Spring Cloud Gateway相关核心组件,前端采用vue-element-admin组件。具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。

架构摘要

服务鉴权通过JWT的方式来加强服务之间调度的权限验证,保证内部服务的安全性。

监控利用Spring Boot Admin 来监控各个独立Service的运行状态;利用Hystrix Dashboard来实时查看接口的运行状态和调用频率等。

负载均衡将服务保留的rest进行代理和网关控制,除了平常经常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以帮我们进行正常的网关管控和负载均衡。其中扩展和借鉴国外项目的扩展基于JWT的Zuul限流插件,方面进行限流。

服务注册与调用基于Consul来实现的服务注册与调用,在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。

熔断机制因为采取了服务的分布,为了避免服务之间的调用“雪崩”,采用了Hystrix的作为熔断器,避免了服务之间的“雪崩”。

四 SpringBlade

开源地址:
https://gitee.com/smallc/SpringBlade
SpringBlade 2.0 是一个基于 Spring Boot 2 & Spring Cloud Finchley & Mybatis 等核心技术,用于快速构建中大型系统的基础框架。和bootdo有相似之处。

主要特性&&变化

采用前后端分离的模式,前端单独开源出一个框架:Sword,主要选型技术为React、Ant Design、Umi、Dva

后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:Blade-Tool

Blade-Tool已推送至Maven中央库,直接引入即可,减少了工程的臃肿,也可更注重于业务开发

注册中心选型Consul

部署使用Docker或K8s + Jenkins

使用Traefik进行反向代理

踩了踩Kong的坑,有个基本的使用方案,但不深入,因为涉及到OpenResty。

封装了简单的Secure模块,采用JWT做Token认证,可拓展集成Redis等细颗粒度控制方案

在2.0诞生之前,已经稳定生产了近一年,经历了从Camden -> Finchley的技术架构,也经历了从fat jar -> docker -> k8s + jenkins的部署架构

项目分包明确,规范微服务的开发模式,使包与包之间的分工清晰。

五 Guns

开源地址:
https://gitee.com/stylefeng/gunsGuns

基于Spring Boot 2,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl,Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架!同时提供spring cloud版本!

Guns微服务版本

Guns的核心是roses-kernel项目
https://gitee.com/stylefeng-Roses/roses-kernel,提供对spring cloud的支持。

Roses框架基于Spring Boot 2和Spring Cloud Finchley.RELEASE,整合Eureka + Hystrix + Ribbon + Feign + Zuul,更符合企业级的分布式和服务化解决方案,Roses拥有高效率的开发体验,提供可靠消息最终一致性分布式事务解决方案,提供基于调用链的服务治理,提供可靠的服务异常定位方案(Log + Trace)等等,一个分布式框架不仅需要构建高效稳定的底层开发框架,更需要解决分布式带来的种种挑战!

管理系统功能

1.用户管理 2.角色管理 3.部门管理 4.菜单管理 5.字典管理 6.业务日志 7.登录日志 8.监控管理 9.通知管理 10.代码生成(旗舰版目前还没完成)

项目特点

基于SpringBoot,简化了大量项目配置和maven依赖,让您更专注于业务开发,独特的分包方式,代码多而不乱。

完善的日志记录体系,可记录登录日志,业务操作日志(可记录操作前和操作后的数据),异常日志到数据库,通过@BussinessLog注解和LogObjectHolder.me().set()方法,业务操作日志可具体记录哪个用户,执行了哪些业务,修改了哪些数据,并且日志记录为异步执行,详情请见@BussinessLog注解和LogObjectHolder,LogManager,LogAop类。

利用beetl模板引擎对前台页面进行封装和拆分,使臃肿的html代码变得简洁,更加易维护。

对常用js插件进行二次封装,使js代码变得简洁,更加易维护,具体请见webapp/static/js/common文件夹内js代码。

利用ehcache框架对经常调用的查询进行缓存,提升运行速度,具体请见ConstantFactory类中@Cacheable标记的方法。

controller层采用map + warpper方式的返回结果,返回给前端更为灵活的数据,具体参见
com.stylefeng.guns.modular.system.warpper包中具体类。

防止XSS攻击,通过XssFilter类对所有的输入的非法字符串进行过滤以及替换。

简单可用的代码生成体系,通过SimpleTemplateEngine可生成带有主页跳转和增删改查的通用控制器、html页面以及相关的js,还可以生成Service和Dao,并且这些生成项都为可选的,通过ContextConfig下的一些列xxxSwitch开关,可灵活控制生成模板代码,让您把时间放在真正的业务上。

控制器层统一的异常拦截机制,利用@ControllerAdvice统一对异常拦截,具体见
com.stylefeng.guns.core.aop.GlobalExceptionHandler类。

页面统一的js key-value单例模式写法,每个页面生成一个唯一的全局变量,提高js的利用效率,并且有效防止多个人员开发引起的函数名/类名冲突,并且可以更好地去维护代码。

业务日志记录

日志记录采用aop(LogAop类)方式对所有包含@BussinessLog注解的方法进行aop切入,会记录下当前用户执行了哪些操作(即@BussinessLog value属性的内容),如果涉及到数据修改,会取当前http请求的所有requestParameters与LogObjectHolder类中缓存的Object对象的所有字段作比较(所以在编辑之前的获取详情接口中需要缓存被修改对象之前的字段信息),日志内容会异步存入数据库中(通过
ScheduledThreadPoolExecutor类)。

感谢大家的关注和支持,欢迎各位道友留言评论。