JAVA-Cloud微服务白皮书
版本或建议
I3及以上CPU,内存32G及以上 | |||||
Windows 10/11,MacOS | |||||
1.8.0_281及以上版本,可使用Eclipse Temurin JDK 8、Alibaba Dragonwell 8、BiSheng JDK 8等 | |||||
3.6.3及以上版本 | |||||
3.2.100(Windows)/4.0.x+(Linux,Mac) | |||||
MySQL 5.7.x/8.0.x(默认)、SQLServer 2012+、Oracle 11g、PostgreSQL 12+、达梦数据库(DM8)、人大金仓数据库(KingbaseES_V8R6) | |||||
IDEA2020及以上版本、Eclipse 、 Spring Tool Suite等 | |||||
Node.js v16.15.0(某些情况下可能需要安装 Python3)及以上版本; pnpm v8.10及以上版本; 浏览器推荐使用Visual Studio Code(简称VSCode) | |||||
Node.js v12/v14/v16(某些情况下可能需要安装 Python3)HBuilder X(最新版) | |||||
MinIO及多个云对象存储,如阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS等 | |||||
v2.2.服务注册Seata(可选) | 7.0Sentinel(可选) | Spring BootAdmin(可选) | SkyWalking APM(可选) | ,消息中间件 | Apache RocketMQ也可以使用或a |
日志中心 | |||||
分布式监控、告警 | |||||
Grafana(可选) |
4.5 运行环境
△适用于测试或生产环境
版本或建议 | |
服务器配置 | 最低配置要求:Ubuntu 18.0.4及以上版本,兼容统信UOS,OpenEuler,麒麟服务器版等信创环境 |
JRE | 建议使用MySQL 5.7.x/8.0.x(默认)、SQLServer 2012+、Oracle 11g、PostgreSQL 12+、达梦数据库(DM8)、人大金仓数据库(KingbaseES_V8R6) |
文件存储 | 默认使用本地存储,兼容Web服务器,建议使用1.18.0及以上版本 |
Nacos | v2.2.3, &发现和配置中心 |
Seata(可选) | v1.7.0,分布式事务 |
Sentinel(可选) | v1.8.5,服务熔断 |
Spring BootAdmin(可选) | 2.7.8,服务监控 |
SkyWalking APM(可选) | v9.2.0+,链路追踪 |
消息中间件 | 默认使用Apache RocketMQ,也可以使用RabittMQ或Apache Kafka |
ELK(可选) | 日志中心 |
Prometheus(可选) | 分布式监控、告警 |
Alertmanager(可选) | |
Grafana(可选) |
五 功能简介
5.1 基于Java主流开源技术构建
平台基于流行的J2EE技术栈,应用稳定的Spring Cloud微服务框架进行构建,主流开源的架构给我们带来了以下优势:
广泛的业界支持:流行的开源技术都是广泛使用的,是业界默认的标准;
提高开发效率:流行的开源技术会有大量的开发人员提供大量个性的解决方案,能更快速的找到满足需求的各种解决方案;
提高平台的技术稳定性:流行的开源技术已经通过大量的业务场景验证,保证了技术的成熟性,提高了平台和稳定性;
可维护性:流行的开源技术确保了各种社区的活跃度,可以更好的解决平台维护过程中遇到的问题;
5.2 基于Java主流开源技术构建
jnpf-java-cloud采用微服务架构设计,平台基础模块的每一个应用功能都使用微服务完成:
每个服务都有一个清楚的功能边界;
每一个后台服务开放REST API,许多服务本身也采用了其它服务提供的API;
通过 API Gateway来统一API暴露;
通过 Nacos 配置中心来统一管理平台服务配置;
每个微服务可以选择独立部署和弹性资源配置
基于jnpf-java-cloud开发的应用系统,可以很容易的将业务对象作为基本单元进行纵向拆分,以交互层次作为标准进行横向拆分,从而形成多应用交互的微应用架构体系,有效的实现应用的拆分,实现敏捷开发和部署。
5.3 服务无状态
单个微服务节点的性能在大业务量时性能会遇到瓶颈,无法满足对业务系统的要求,jnpf-java-cloud服务采用无状态化设计,可以实现水平扩展部署。
5.4 前后端分离
提供完整的REST API接口,采用前后端分离技术,可以同时高效的支持移动APP、Web、小程序等应用的开发场景,采用统一的认证中心,保障REST API的安全性。
六 功能简介
6.1 代码生成器
零代码开发:配备大量可复用控件,通过操作界面元素,拖拽控件自动生成可视化应用;
低代码开发:基于Mybatis-plus-generator自定义了一套代码生成器, 通过配置数据库字段的注释,可在线生成WEB前端(vue)、移动端(vue)、后端(controller、entity、mapperxml、service)等代码,极大减少开发难度;
6.2 工作流程
工作流服务为JNPF自研的一套工作流方案,包含流程表单和流程引擎两大部分,流程表单可视化设计,可配置程度高,采用结构化的表单模版设计,集中解析模式的设计。适应于中国国情的多种场景的需要、配置所见即所得、低代码、高配置;
6.3 门户设计
全新门户设计,操作简单,自由拖拽,一次编辑多端自适应,充分满足用户的个性化需求。
6.4 大屏设计
自由布局页面,拖拽控件至页面中,针对不同的控件进行内容设值和数据绑定,所见即所得的实现大屏可视化页面开发;
6.5 报表设计
无需开发任何代码,用户只需在界面上配置一系列参数即可实现多种类型报表的配置、在线渲染报表内容、报表导出、打印等功能;
6.6 第三方登录
开箱即用的第三方授权登录工具类库,提供统一接口,支持接入任意OAuth网站,快速实现OAuth登录功能。
6.7 多租户隔离方案
多租户技术或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且扔可确保各用户间数据的隔离性。在云计算时代,多租户技术在共用的数据中心以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。
提供了三种多租户实现方式,满足不同维度用户的维护,不同维度数据的治理:
5.7.1 独立数据库
数据库隔离模式,每个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本也高;
5.7.2 共享数据库,隔离数据架构
SCHEMA隔离模式,多个租户共享一个数据库,但一个租户独立使用一个SCHEMA;
5.7.3 共享数据库,共享数据结构
字段隔离模式,租户共享同一个数据库,同一个SCHEMA,但在表中通过 F_TenantId 区分租户的数据;
6.8 分布式任务调度
集成XXL-JOB跨语言分布式任务调度平台,开箱即用,第三方任意语言通1过RESTful API对接调度中心或实现执行器,功能点包含执行器管理、调度任务、调度日志、任务进度监控、多任务模式、自定义任务参数等
6.9 文件存储
集成多个开箱即用的文件存储方案,兼容MinIO及多个云对象存储,如阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS等。
6.10 消息中心
提供了多种类型消息配置及发送的能力,提供消息发送的通用API,用户可通过此功能模块轻松实现多种类型消息的发送,无缝对接多种消息平台。功能点包含消息模板配置、消息发送配置、消息接收配置、账户配置(包含邮箱、短信、微信公众号、webhook)、消息监控等。
6.11 其他功能
功能点 | 功能描述 |
个人信息 | 维护个人资料信息、个人签名,查看个人所属组织、岗位、下属等信息,管理微信、企业微信、钉钉、飞书等第三方绑定信息 |
系统配置 | 系统名称、系统图标、安全设置等 |
系统权限 | 管理维护组织、部门、岗位、角色、用户等信息 |
系统日志 | 查看登录日志、请求日志、操作日志、异常日志 |
系统监控 | 实时查看服务器运行情况 |
系统菜单 | MySQL、SQLServer、Oracle、PostgreSQL、达梦数据库、人大金仓数据库 |
数据建模 | 管理维护数据库、表字段,支持SQL操作、内部API接口、外部API接口数据处理 |
接口认证 | 用于提供接口外部调用,生成对应的最小配置需求,兼容统信UOS,OpenEuler,麒麟服务器版等国产信创环境 |
8.1.3 组件/应用
组件版本 | JRE | 1.8.0_281及以上版本,如Eclipse Temurin JRE 8/11/17、Alibaba Dragonwell 8/11/17、BiSheng JRE 8/11/17 |
4.0.x+ | MySQL | 平台数据库 |
最新版本 | 静态资源存储,也可以使用云对象存储,如阿里云 Nginx | Web服务器 |
v2.2.&发现和配置中心 | ||
v1.分布式事务 | ||
v1.8.5 | Spring Boot Admin(可选) | 服务监控 |
v9.2.0+ | SkyWalking Agent (可选) | SkyWalking Java Agent |
4.9.4 | ,也可以使用ELK (可选) | 日志中心 |
v2.40.0分布式监控 | ||
v0.22.0告警 | ||
9.2.3分布式监控 |
2 高可用部署方案
△适用于生产环境
8.2.1 部署架构参考
8.2.2 配置参考
本表数据仅为参考配置,需要根据实际业务场景调整;
一般一个应用占用1c/1-3G;
高可用一个应用至少2个节点;
使用云服务器时,负载均衡可选择阿里云负载均衡SLB、腾讯云负载均衡CLB或华为云弹性负载均衡ELB等方案;
数据库连接的问题:RDS服务并发连接数应该600个以上;
图片文件加载的问题:建议使用对象存储,如阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS等对象存储提供商;
关于配置冗余:一般考虑10%-20%的冗余;
操作系统
组件/应用 | 备注 | |||||||||||
3前端服务器 | 2c4G40G+100G | 前端服务器 | 2c4G40G+100G | 缓存集群服务器 | 2c8G40G+100G | 数据库服务器 | 4c16G40G+300G | 数据库服务器 | 4c16G40G+300G | 中间件JRE 8/11/17 4c/16G/40G+100G | 中间件JRE 8/11/17 Sentinel | //部署分布式事物、服务熔断 |
JRE 8/11/17 2c8G40G+100G | RabbitMQ或Kafka | |||||||||||
JRE 8/11/17 2c8G40G+00G | 监控告警 | Prometheus AlertManager | //监控、警告 | |||||||||
JRE 8/11/17 | //部署微服务应用 | |||||||||||
JRE 8/11/17 | //部署微服务应用 | |||||||||||
JRE 8/11/17 | //部署后端应用 | |||||||||||
JRE 8/11/17 | //部署任务调度服务端 | |||||||||||
MinIO(最新版本) | //SSD存储,也可以使用对象存储,如阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS等。 | |||||||||||
九式
<span color:#000000;"="" style="box-sizing: border-box;line-height: 2.5;color: rgb(0, 0, 0)">支持高可用集群、Docker部署,满足不同规模企业的部署要求