jnpf-java-cloud微服务快速开发框架

jnpf-java-cloud采用J2EE技术体系,基于Spring Cloud Alibaba的微服务框架进行封装的快速开发平台,包含多种开箱即用功能,通用技术组件与服务、微服务治理,具备RBAC功能、网关统一鉴权、Xss防跨站攻击、自动生成前后端代码、多种存储系统、分布式事务、分布式定时任务、多租户等等多个功能和模块,支持多业务系统并行开发, 支持多服务并行开发,平台设计灵活可扩展、可移植,可应用高并发需求,同时兼顾本地化、私有云、公有云部署,支持SaaS模式应用。核心技术采用Spring Boot,Spring Cloud AlibabaMybatis PlusRocketMQMinIO等主要框架和中间件,采用Nacos注册和配置中心,集成流量卫兵Sentinel,前端基于vue-element-admin框架定制开发。为企业服务化中台整合、数字化中台转型提供强力支撑。

整体架构

平台特性

  • 采用前后端分离的模式:前端基于vue-element-admin框架定制开发,后端采用Spring Cloud Alibaba全家桶;
  • 服务注册&发现与调用:基于Nacos来实现的服务注册与发现,使用Feign/Dubbo RPC来实现服务互调;
  • 统一授权认证:基于 Spring SecuritySpring OAuth2、JWT 实现的统一认证服务中心,登录基于Spring Security的标准登录流程。客户端授权支持Oauth2.0 的四种授权模式:授权码模式简化模式密码模式客户端模式,授权流程跟标准的Oauth2流程一致。web 端采用简化模式登录系统,移动端可使用密码模式(password)登录系统。同时还支持基于Spring Social的三方账号登录方式,如微信/QQ微博等,并提供拓展模式,支持更多三方渠道。
  • 业务熔断:采用Sentinel实现业务流量控制、熔断降级、系统负载等多个维度保护服务的稳定性;
  • 应用监控:利用Spring Boot Admin来监控各个服务的运行状态;
  • 链路调用监控:基于SkyWalking作为项目的全链路性能监控, 从整体维度到局部维度展示各项指标,将跨应用的所有调用链性能信息集中展现,可方便度量整体和局部性能,并且方便找到故障产生的源头,生产上可极大缩短故障排除时间;
  • 灵活的权限控制:基于RBAC权限管理,该功能模块下的功能用于维护企业的组织架构信息以及员工信息。主要包含了组织信息、员工定义、组织架构、企业通讯录、通信录同步等功能。用户可在此功能模块下维护公司的组织架构信息(组织/部门/角色/岗位)和用户信息,也可以通过第三方应用(钉钉/企业微信)将组织架构信息一键导入到系统中,也可以使用组织架构和员工信息的导入功能将数据导入到系统中。
  • 支持多租户:简单配置即可转变多租户模式,实现数据隔离;
  • 支持多种数据库:支持MySQLSQL ServerOraclePostgreSQL达梦数据库人大金仓数据库等,您无需关心不同类型数据库间的语法区别;
  • 统一接口管理:基于Swagger拓展的API文档服务,主要提供在平台开发阶段的API文档管理和API调试等功能。

平台组成

前端应用

  • jnpf-web:前端主项目,基于vue-element-admin框架定制开发
  • jnpf-web-datascreen:前端大屏项目
  • jnpf-web-datareport:前端报表项目
  • jnpf-web-tenant:前端多租户项目

后端微服务

  • jnpf-gateway:网关服务基于Spring Cloud Gateway,作为平台统一的对外出入口,主要有服务路由、鉴权、流量控制等管理功能。
  • jnpf-oauth:认证服务是基于 Spring SecuritySpring OAuth2、JWT 实现的统一认证服务中心,登录基于Spring Security的标准登录流程。客户端授权支持Oauth2.0的四种授权模式:授权码模式简化模式密码模式客户端模式,授权流程跟标准的Oauth2流程一致。web 端采用简化模式(implicit)登录系统,移动端可使用密码模式(password)登录系统。同时还支持基于 Spring Social 的三方账号登录方式,如微信/QQ微博等,并提供拓展模式,支持更多三方渠道。
  • jnpf-permission:权限服务的功能用于维护企业的组织架构信息以及员工信息。主要包含了组织信息、员工信息、组织架构、企业通讯录、通信录同步等功能。用户可在此功能模块下维护公司的组织架构信息(组织/部门/角色/岗位)和用户信息,也可以通过第三方应用(钉钉/企业微信)将组织架构信息一键导入到系统中。也可以使用组织架构和员工信息的导入功能将数据导入到系统中。
  • jnpf-system:系统基础服务作为平台基本数据管理模块,主要包含系统配置、系统公告、系统日志、系统菜单、行政区划、单据规则、数据连接、数据建模、数据字典、数据接口等功能模块;
  • jnpf-file:文件服务,集成了多种常用的文件功能,用户可在界面上轻松实现文件的上传、下载、在线预览和编辑等。功能点包含文件存储配置、上传配置、在线编辑、文件预览等,同时文件存储配置支持本地存储、网络存储(minIO),OSS等多种云平台,包含阿里云腾讯云七牛云等;
  • jnpf-message:消息中心服务,支持短信邮箱企业微信钉钉站内消息发送,并能够灵活管理消息模板和对接云平台支持的微服务。
  • jnpf-scheduletask:分布式调度服务-Quartz服务端负责任务调度,任务的执行由执行器来完成。该服务具体包含执行器管理、并发任务管理、日志管理以及并发请求等。
  • jnpf-visualdev:可视化开发服务,集成代码生成器、大屏设计、门户设计等功能;
  • jnpf-workflow:工作流服务为JNPF自研的一套工作流方案,包含流程表单和流程引擎两大部分,流程表单可视化设计,可配置程度高,采用结构化的表单模版设计,集中解析模式的设计. 适应于中国国情的多种场景的需要、配置所见即所得、低代码、高配置;
  • jnpf-datareport:报表服务,通过配置数据集,通过执行SQL获取数据以渲染平面报表、图形报表的服务;
  • jnpf-extend:扩展应用服务,集成平台常用开发示例;
  • jnpf-tenant:多租户服务,简单配置可实现数据隔离模式多租户应用;

平台核心功能

  • 统一安全认证中心:基于 Spring SecuritySpring OAuth2JWT实现的统一认证服务中心,登录基于 spring security 的标准登录流程。客户端授权支持 oauth2.0 的四种授权模式:授权码模式、简化模式、密码模式、客户端模式,授权流程跟标准的 oauth2 流程一致。web 端采用简化模式(implicit)登录系统,移动端可使用密码模式(password)登录系统。同时还支持基于 Spring Social 的三方账号登录方式,如微信/QQ、微博等,并提供拓展模式,支持更多三方渠道。
  • 基于RBAC的权限体系:该功能模块下的功能用于维护企业的组织架构信息以及员工信息。主要包含了组织信息、员工定义、组织架构、企业通讯录、通信录同步等功能。用户可在此功能模块下维护公司的组织架构信息(组织/部门/角色/岗位)和用户信息,也可以通过第三方应用(钉钉/企业微信)将组织架构信息一键导入到系统中,也可以使用组织架构和员工信息的导入功能将数据导入到系统中。
  • 低代码生成器:基于Mybatis-plus-generator自定义了一套代码生成器, 通过配置数据库字段的注释,可在线生成WEB前端(vue)、移动端(vue)、后端(controller、entity、mapperxml、service)等代码,极大减少开发难度,减少70%以上的开发任务;
  • 零代码开发:配备大量可复用控件,通过操作界面元素,拖拽控件自动生成可视化应用;
  • 工作流:工作流服务为JNPF自研的一套工作流方案,包含流程表单和流程引擎两大部分,流程表单可视化设计,可配置程度高,采用结构化的表单模版设计,集中解析模式的设计. 适应于中国国情的多种场景的需要、配置所见即所得、低代码、高配置;
  • 门户设计:企业快速通过简单拖拽组件到画布上进行配置和部署设计个性化的门户;
  • 大屏设计:自由布局页面,拖拽控件至页面中,针对不同的控件进行内容设值和数据绑定,所见即所得的实现大屏可视化页面开发;
  • 报表设计:无需开发任何代码,用户只需在界面上配置一系列参数即可实现多种类型报表的配置、在线渲染报表内容、报表导出、打印等功能;

平台技术架构

前端技术栈

  • Vue 全家桶
  • element-ui
  • axios
  • sass
  • echarts
  • dayjs

后端技术栈

  • 主框架:Spring Cloud Alibaba + Spring Boot + Spring Framework
  • 持久层框架:Mybatis-plus、Hibernate Validation、Alibaba Druid
  • JSON序列化:Jackson
  • 数据缓存:Redis
  • 消息队列: RocketMQ
  • API网关:Spring Cloud Gateway
  • 服务注册&发现和配置中心: Nacos
  • 服务监控:Spring Boot Admin
  • 服务消费:OpenFeign/Dubbo RPC
  • 日志收集:E(Elasticsearch)+L(Logstash)+K(Kibana)
  • 负载均衡:Ribbon
  • 服务熔断:Sentinel
  • 项目构建:Maven
  • 分布式事务:Seata
  • 代码生成器:基于Mybatis-plus-generator
  • 安全框架:Spring Cloud Security Oauth2+JWT
  • 链路追踪:Skywalking
  • 模板引擎:Velocity
  • 即时通讯:spring-boot-starter-websocket
  • AOP:spring-boot-starter-aop
  • 文件服务器:OSS、本地存储、MinIO

数据库支持

  • MySQL 5.7.x +
  • SQLServer 2012 +
  • Oracle 11g +
  • Postgre SQL
  • 达梦DM8
  • 人大金仓

操作系统支持

  • 桌面操作系统 开发环境
    • Windows 7+
    • MacOS
    • Ubuntu Desktop(桌面版)
    • Deepin(深度操作系统)
    • 统信UOS桌面(专业)版
    • 中标麒麟桌面版
    • 中科方德桌面版
  • 服务器操作系统 测试、生产环境
    • CentOS 7+
    • RedHat 7+
    • Ubuntu Server
    • 统信UOS服务器版
    • 中标麒麟服务器版
    • 中科方德服务器版

部署方式

  • Jenkins
  • Docker
  • Kubernetes

发表评论