需要源码的,直接加我微信:CjhCcr
JAVA-Cloud 微服务白皮书
jnpf-java-cloud 采用 Java 主流的微服务技术栈,基于 Spring Cloud Alibaba 的微服务框架进行封装的快速开发平台,包含多种常用开箱即用功能的模块,通用技术组件与服务、微服务治理,具备 RBAC 功能、网关统一鉴权、Xss 防跨站攻击、自动生成前后端代码、多种存储系统、分布式事务、分布式定时任务、多租户等多个功能和模块,支持多业务系统(多服务)并行开发,平台设计灵活可扩展、可移植,可应用高并发需求,同时兼顾本地化、私有云、公有云部署。核心技术采用 Spring Boot、Spring Cloud Alibaba,Mybatis Plus、RocketMQ、MinIO 等主要框架和中间件,采用 Nacos 注册和配置中心,集成流量卫兵 Sentinel,前端基于 vue-element-admin 框架定制开发,可帮助企业更快,更高效地进行微服务开发,相较于业界使用广泛的开源版本平台,提供更强大的功能和更全面的服务支持。
jnpf-java-cloud 应用微服务、容器、DevOps 等云原生技术,封装了大量技术开发包、技术应用组件、技术场景实现能力,并支持 SaaS 模式应用,提供了一个可支持企业各业务系统或产品快速开发实现的微服务应用数字化融合平台,富含各类开箱即用的组件、微服务业务系统,助力企业跨越 Cloud(IaaS/PaaS)与自身数字化的鸿沟,共享业务服务的组合重用,为企业服务化中台整合、数字化转型提供强力支撑,也为企业提供了最佳架构实践,以产品的思维来打造的为企业提供能力复用的企业数字化中台。
【架构说明】
架构图
平台设计灵活可扩展、可移植、可应对高并发需求。同时兼顾本地化、私有云、公有云部署,支持 SaaS 模式应用。
- **采用前后端分离的模式:**前端基于 vue-element-admin 框架定制开发,后端采用 Spring Cloud Alibaba 全家桶;
- **服务注册&发现与调用:**基于 Nacos 来实现的服务注册与发现,使用 Open Feign/Dubbo RPC 来实现服务互调;
- **统一授权认证:**基于 Spring Security、Spring OAuth2、JWT 实现的统一认证服务中心,登录基于 spring security 的标准登录流程。客户端授权支持 oauth2.0 的四种授权模式:授权码模式、简化模式、密码模式、客户端模式,授权流程跟标准的 oauth2 流程一致。web 端采用简化模式(implicit)登录系统,移动端可使用密码模式(password)登录系统。同时还支持基于 Spring Social 的三方账号登录方式,如微信等。
- **业务熔断:**采用 Sentinel 实现业务流量控制、熔断降级、系统负载等多个维度保护服务的稳定性;
- **应用监控:**利用 Spring Boot Admin 来监控各个服务的运行状态;
- **链路调用监控:**基于 SkyWalking 作为项目的全链路性能监控, 从整体维度到局部维度展示各项指标,将跨应用的所有调用链性能信息集中展现,可方便度量整体和局部性能,并且方便找到故障产生的源头,生产上可极大缩短故障排除时间;
- **灵活的权限控制:**基于 RBAC 权限管理,该功能模块下的功能用于维护企业的组织架构信息以及员工信息。主要包含了组织架构管理、部门管理、分级管理员、角色管理、岗位管理、企业通讯录、通信录同步等功能。用户可在此功能模块下维护公司的组织架构信息(组织/部门/角色/岗位)和用户信息,也可以通过第三方应用(钉钉/企业微信)将组织架构信息一键导入到系统中,也可以使用组织架构和员工信息的导入功能将数据导入到系统中;
- **支持多租户:**简单配置即可转为多租户模式,实现数据隔离;
- **支持多种数据库:**支持 MySQL、Oracle、SQL Server、达梦数据库、人大金仓数据库、PostgreSQL,您无需关心不同类型数据库间的语法区别;
- **统一接口管理:**基于 Swagger 拓展的 API 文档服务,主要提供在平台开发阶段的 API 文档管理和 API 调试等功能。
主要技术栈
后端技术栈
- 主框架:Spring Cloud Alibaba + Spring Boot + Spring Framework
- 安全框架:Spring Cloud Security OAuth2+JWT
- 持久层框架:Mybatis-plus、Hibernate Validation、
- 数据库连接池:Alibaba Druid
- JSON 序列化:Jackson&FastJSON
- 数据缓存: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
- 链路追踪:Skywalking
- 模板引擎:Velocity
- 即时通讯:spring-boot-starter-websocket
- AOP:spring-boot-starter-aop
- 文件服务:阿里云 OSS、本地存储、七牛云 kodo、腾讯 cos、MinIO
前端技术栈
- Vue2 全家桶
- Element-ui
- axios
- sass
- echarts
- dayjs
数据库支持
可支持多种关系型数据库,可根据需求再扩展支撑其他数据库:
- MySQL
- Oracle
- SQLServer
- PostgreSQL
- 达梦数据库(DM8)
- 人大金创数据库
服务模块说明
jnpf-java-cloud
├── jnpf-app -- 移动端服务 [30012]
├── jnpf-common -- 公共模块
├ ├── jnpf-common-core -- 公共依赖版本
├ ├── jnpf-common-database -- mybatis 配置封装
├ ├── jnpf-common-feign -- feign 通用封装
├ ├── jnpf-common-mq -- RocketMQ 通用封装
├ ├── jnpf-common-redis-- RocketMQ 通用封装
├ ├── jnpf-common-springaop-- aop 通用封装
├ └── jnpf-common-swagger-- Swagger Api 文档生成
├── jnpf-datareport -- 报表服务 [30007]
├── jnpf-example -- 示例服务模板 [30100]
├── jnpf-extend -- 扩展应用服务 [30019]
├── jnpf-file -- 文件服务 [30005]
├── jnpf-gateway-- 网关服务 [30000]
├── jnpf-message -- 消息中心服务 [30008]
├── jnpf-oauth-- 授权服务 [30001]
├── jnpf-permission-- 通用用户权限管理 [30010]
├── jnpf-provider -- Dubbo 提供者
├── jnpf-registry -- 中间件
├ ├── nacos-server - 服务注册、发现及配置中心 [30099]
├ ├── seata-server - 分布式事务 [30095]
├ ├── sentinel-server - 流量控制、熔断降级、系统负载保护 [30098]
├ ├── skywalking - 链路追踪监控 [30096]
├ └── spring-boot-admin - 管理和监控 SpringBoot 应用 [30097]
├── jnpf-scheduletask -- 任务调度服务 [30009]
├── jnpf-system -- 系统基础服务 [30002]
├── jnpf-tenant -- 多租户服务 [30006]
├── jnpf-visualdata-- 大屏服务 [30011]
├── jnpf-visualdev-- 可视化开发服务 [30003](包含在线开发、代码生成、门户设计)
└── jnpf-workflow -- 工作流程服务 [30004]
【技术特色】
基于 Java 主流开源技术构建
平台基于流行的 J2EE 技术栈,应用稳定的 Spring Cloud 微服务框架进行构建,主流开源的架构给我们带来了以下优势:
- 广泛的业界支持:流行的开源技术都是广泛使用的,是业界默认的标准。
- 提高开发效率:流行的开源技术会有大量的开发人员提供大量个性的解决方案,能更快速的找到满足需求的各种解决方案。
- 提高平台的技术稳定性:流行的开源技术已经通过大量的业务场景验证,保证了技术的成熟性,提高了平台和稳定性。
- 可维护性:流行的开源技术确保了各种社区的活跃度,可以更好的解决平台维护过程中遇到的问题。
基于微服务架构设计和扩展
jnpf-java-cloud 采用微服务架构设计,平台基础模块的每一个应用功能都使用微服务完成:
- 每个服务都有一个清楚的功能边界
- 每一个后台服务开放 REST API,许多服务本身也采用了其它服务提供的 API
- 通过 API Gateway 来统一 API 暴露
- 通过 Nacos 配置中心来统一管理平台服务配置
- 每个微服务可以选择独立部署和弹性资源配置
基于 jnpf-java-cloud 开发的应用系统,可以很容易的将业务对象作为基本单元进行纵向拆分,以交互层次作为标准进行横向拆分,从而形成多应用交互的微应用架构体系,有效的实现应用的拆分,实现敏捷开发和部署。
服务无状态
单个微服务节点的性能在大业务量时性能会遇到瓶颈,无法满足对业务系统的要求,jnpf-java-cloud 服务采用无状态化设计,可以实现水平扩展部署。
前后端分离
提供完整的 REST API 接口,采用前后端分离技术,可以同时高效的支持移动 APP、Web、小程序等应用的开发场景,同时结合 Spring Security 的 OAuth2 扩展,采用统一的认证中心,保障 REST API 的安全性。
【功能说明】
统一安全认证中心
基于 Spring Security、Spring OAuth2、JWT 实现的统一认证服务中心,登录基于 Spring Security 的标准登录流程。客户端授权支持 oauth2.0 的四种授权模式:授权码模式、简化模式、密码模式、客户端模式,授权流程跟标准的 oauth2 流程一致。web 端采用简化模式(implicit)登录系统,移动端可使用密码模式(password)登录系统。同时还支持基于 Spring Social 的第三方账号登录方式,如微信等。
基于 RBAC 的权限体系
基于角色的访问控制方法(Role-Based Access Control,简称 RBAC)是目前公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是:
- 减小授权管理的复杂性,降低管理开销;
- 灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。
用于维护企业的组织架构信息以及员工信息。主要包含了组织信息、员工定义、组织架构、企业通讯录、通信录同步等功能。用户可在此功能模块下维护公司的组织架构信息(组织/部门/角色/岗位)和用户信息,也可以通过第三方应用(钉钉/企业微信)将组织架构信息一键导入到系统中,也可以使用组织架构和员工信息的导入功能将数据导入到系统中。
多租户实现
系统平台支持一个实例服务多个用户(Customer),每一个用户被称之为租户(tenant),软件给予租户可以对系统进行部分;支持添加多平台租户流行和租户管理,通过管理租户来实现不同平台之间的数据隔离;如 Saas 多租户身份验证,每个管理账号有独立数据、可配置子账户,方便多人使用或统一管理。
代码生成器
- 零代码开发:配备大量可复用控件,通过操作界面元素,拖拽控件自动生成可视化应用;
- 低代码开发:基于 Mybatis-plus-generator 自定义了一套代码生成器, 通过配置数据库字段的注释,可在线生成 WEB 前端(vue)、移动端(vue)、后端(controller、entity、mapperxml、service)等代码,极大减少开发难度,减少 70% 以上的开发任务;
工作流程
工作流服务为 JNPF 自研的一套工作流方案,包含流程表单和流程引擎两大部分,流程表单可视化设计,可配置程度高,采用结构化的表单模版设计,集中解析模式的设计. 适应于中国国情的多种场景的需要、配置所见即所得、低代码、高配置;
门户设计
企业快速通过简单拖拽组件到画布上进行配置和部署设计个性化的门户
大屏设计
自由布局页面,拖拽控件至页面中,针对不同的控件进行内容设值和数据绑定,所见即所得的实现大屏可视化页面开发;
报表设计
无需开发任何代码,用户只需在界面上配置一系列参数即可实现多种类型报表的配置、在线渲染报表内容、报表导出、打印等功能;
服务监控
文件存储
支持本地存储、网络存储(minIO)、Aliyun OSS,Qiniu Kodo,Tencent COS 等存储方案。
服务高可用
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。jnpf-java-cloud 整合 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
链路追踪监控
- 仪表盘
- 拓扑图
【项目方案参考】
操作系统支持
-
桌面操作系统 开发环境
- Windows 10+
- MacOS
- Ubuntu 桌面版
- Deepin(深度操作系统)
- 统信 UOS 桌面版
- 中标麒麟桌面版
- 中科方德桌面版
-
服务器操作系统 测试生产环境
- CentOS 7+
- RedHat 7+
- Ubuntu Server
- 统信 UOS 服务器版
- 中标麒麟服务器版
- 中科方德服务器版
部署方式
- Jenkins
- Docker
- Kubernetes
【项目部署】
部署架构
(以下为高可用部署参考)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于