+ 版本 | v5.6 +
PIG Microservice Architecture<br>系统白皮书<br>──<br><br>+ 版本 | v5.6 +
<br>佩格科技<br>COPYRIGHT © pig4cloud. ALL RIGHTS RESERVED.关于 PIG 商业版架构说明架构图主要技术栈后端技术栈前端技术栈模块说明技术特色基于 Java 主流开源技术构建基于微服务架构设计和扩展服务无状态前后端分离高可用可扩展功能说明认证授权实现权限管理实现多租户实现数据处理功能数据权限过滤连表查询增强数据脱敏功能敏感词过滤低代码生成模块微服务构建器代码生成器开发模板市场表单设计器微信公众号管理支付收单模块APP 管理协同办公工作流接口文档模块报表设计模块大屏设计模块服务监控模块消息推送模块支持的消息类型:短信通道支持WebHook支持分布式任务调度海量文件存储动态路由模块服务高可用模块整套方案单体架构解决方案移动端解决方案注册配置中心多数据源解决方案单点登录开放平台分布式事务灰度路由容器化部署应用链路监控ELK 日志收集分库分表读写分离开发过程 DevOps性能说明环境说明服务配置线程数 500 & QPS 2000线程数 1000 & QPS 2000配套资料技术支持工单系统安全订阅内部群谁在使用免责声明联系我们感谢阅读,欢迎使用
PIG 商业版应用微服务、容器、DevOps 等云原生技术,封装了大量技术开发包、技术应用组件、技术场景实现能力,并支持 SaaS 模式应用,提供了一个可支持企业各业务系统或产品快速开发实现的微服务应用数字化融合平台,富含各类开箱即用的组件、微服务业务系统,助力企业跨越 Cloud(IaaS/PaaS)与自身数字化的鸿沟,共享业务服务的组合重用,为企业服务化中台整合、数字化转型提供强力支撑,也为企业提供了最佳架构实践。
基于广泛的企业业务场景,沉淀与提供面向业务场景的可复用技术应用能力,以产品的思维来打造的为企业提供能力复用的企业数字化中台。我们具备如下优势:
商业版提供:
平台设计灵活可扩展、可移植、可应对高并发需求。 同时兼顾本地化、私有云、公有云部署,支持 SaaS 模式应用(Ro)。
关于技术选型 ElementPlus 详细说明
Element Plus 和 Ant Design Vue 都是基于 Vue.js 的 UI 组件库,它们具备一系列可复用的组件和丰富的功能,并且是当前国内主流的两个 UI 组件库。
- Element Plus 是饿了么前端团队推出的开源项目,是对 Element UI 的升级版。它采用了 TypeScript 编写,提供了一套易于使用、响应式的组件,支持自定义主题、国际化等特性。Element Plus 的设计风格简洁明快,适用于企业级应用界面的构建。
- Ant Design Vue 是 Ant Design 的 Vue 版本,由阿里巴巴前端团队开发和维护。它是一个成熟的 UI 组件库,以设计原则、可访问性和用户体验为核心,在提供美观、高效、易用的组件和布局的同时,也包含了丰富的样式和配套工具,帮助开发人员快速构建精美的界面。
两者都是优秀的前端 UI 框架,难分伯仲。然而,考虑到非前端工程师的上手难度和第三方组件丰富度,我们选择了 Element Plus。我们通过 https://oss-compass.org/ 对这两个开源项目的生产力、稳健性和创新力进行了评估,相关指数显示 Element Plus 在各个方面均领先于 Ant Design Vue。(指数获取)
1pigx
2├── pigx-ui -- 前端工程[8080]
3├── pigx-boot -- 单体模式启动器[9999]
4├── pigx-auth -- 授权服务提供[3000]
5├── pigx-app-server -- 移动端服务[7060]
6├── pigx-common -- 系统公共模块
7├ ├── pigx-common-bom -- 公共依赖版本
8├ ├── pigx-common-audit -- 变更审计工具
9├ ├── pigx-common-core -- 公共工具类核心包
10├ ├── pigx-common-data -- 数据相关
11├ ├── pigx-common-datasource -- 动态数据源相关
12├ ├── pigx-common-encrypt-api -- 接口加解密操作相关
13├ ├── pigx-common-excel -- excel操作相关
14├ ├── pigx-common-feign -- feign 通用封装
15├ ├── pigx-common-gateway -- 动态路由定义
16├ ├── pigx-common-gray -- 灰度路由控制封装
17├ ├── pigx-common-idempotent -- 幂等插件
18├ ├── pigx-common-job -- 定时任务
19├ ├── pigx-common-log -- 日志服务
20├ ├── pigx-common-oss -- 通用文件系统
21├ ├── pigx-common-security -- 安全工具类
22├ ├── pigx-common-sentinel -- sentinel分装
23├ ├── pigx-common-sensitive -- 敏感词脱敏
24├ ├── pigx-common-sequence -- 全局发号器
25├ ├── pigx-common-swagger -- Swagger Api文档生成
26├ ├── pigx-common-xss -- xss 安全过滤组件
27├ ├── pigx-common-websocket -- websocket 组件
28├ └── pigx-common-seata -- 分布式事务工具包
29├── pigx-register -- 注册中心、配置中心[8848]
30├── pigx-flow
31│ └── pigx-flow-engine -- flowable工作流引擎 [9020]
32│ └── pigx-flow-task -- 工作流任务工单 [9030]
33├── pigx-gateway -- Spring Cloud Gateway网关[9999]
34├── pigx-upms -- 通用用户权限管理模块
35├ └── pigx-upms-api -- 通用用户权限管理系统公共api模块
36├ └── pigx-upms-biz -- 通用用户权限管理系统业务处理模块[4000]
37└── pigx-visual -- 图形化模块
38├ ├── pigx-monitor -- Spring Boot Admin监控 [5001]
39├ ├── pigx-seata-server -- Seata Server 控制台[7091]
40├ ├── pigx-daemon-elastic-job -- 分布式调度中心[elastic-job 版本]
41├ ├── pigx-daemon-quartz -- 分布式调度中心[quartz]
42├ ├── pigx-code-gen -- 图形化代码生成[5003]
43├ ├── pigx-jimu-platform -- 报表在线设计模块[5006]
44├ ├── pigx-report-platform -- 大屏在线设计模块[9095]
45├ ├── pigx-pay-platform -- 微信支付宝收单模块[5010]
46├ ├── pigx-mp-platform -- 微信管理模块[6000]
47├ └── pigx-sentinel-dashboard -- sentinel 控制台[5005]
PIGX 微服务开发平台基于流行的 J2EE 技术栈,应用稳定的 Spring Cloud 微服务框架进行构建,主流开源的架构给我们带来了以下优势:
PIGX 微服务开发平台采用微服务架构设计,支持构建、测试、部署和管理微服务架构的平台,它的优势包括:
综上所述,PIGX 微服务开发平台可以提供更高效、更灵活、更可扩展和更可维护的解决方案,适用于现代化的应用程序开发。
PIGX 微服务开发平台采用无状态化设计,可以提高系统的性能、可靠性和灵活性,并降低系统的成本, 它具备能力包括:
PIGX 微服务开发平台提供完整的 REST API 接口,采用前后端分离技术,其好处包括:
PIGX 微服务开发平台通过合理地配置以下这些技术手段,可以保证服务的连续性、性能和可用性,从而满足用户的需求。
主从复制:主机宕机后切换到备机;多主复制:可同时读写任意一个节点,数据最终一致(MariaDB Galera)。
基于 Spring Cache 多租户设计支持 Redis 集群高可用。
企业业务需求通常比较复杂,因此实现这些需求的业务系统在代码层面上也是非常复杂的,如果没有合理的结构来组织这些重要代码,对企业后期开发或调整新业务逻辑、维护业务系统等都会造成麻烦,甚至有可能导致重构功能而浪费人力物力。模块化设计与开发,将应用拆分为多个模块,每个模块都有独立的功能和职责,可以方便地进行扩展和维护。通过模块化设计,可以避免应用的不必要耦合,提高代码的可读性和可维护性。
如右图所示,PIGX 通过使用 Maven 来管理模块依赖,并根据系统架构设计,以业务需求来将代码分模块管理,从而实现业务系统整体的模块化开发。另外模块化的拆分按照“高内聚、低耦合”的原则,服务组件之间有清晰的边界,易于拓展和按需选配部署:可根据需要选择要应用的模块、服务,也可自行开发增加模块、服务。
为什么要拥抱 OAuth 2.0 协议?
- OAuth 2.0 是一种基于 HTTP 的协议,可用于 Web 应用程序和移动应用程序等各种场景,因此具有很高的可扩展性。此外,它提供了许多不同类型的授权流程,以满足各种应用程序的需求。
- OAuth 2.0 提供了一组标准化的 API,使得应用程序可以方便地与各种不同的授权提供程序进行集成。这样可以简化开发过程,减少了开发人员的工作量。
翻阅市面竞品我们团队总结目前主流方案如下:
方案思路 | 成熟度 | 复杂度 | 兼容性 | 评价 |
---|---|---|---|---|
网关 JWT 认证鉴权 | 中 | 低 | 低 | 适用于轻量级认证体系,不适合于企业技术中台建设 |
OAuth 协议自行搭建认证中心 | 低 | 高 | 中 | 不推荐 |
成熟 OAuth 协议认证产品 | 高 | 高 | 高 | 目前市面上 Keycloak、Spring Authorization Server 都是很成熟的认证授权解决方案 |
PIGX 通过整合 Spring Authorization Server 实现整个框架安全认证,并通过扩展实现短信、社交登录等常见的业务常见,原生支持 Token 交互访问的常见业务,意味着可以直接通过 PIGX 作为小程序、APP 等其他类型客户端的服务端实现。 @EnablePigXResourceServer
直接赋予微服务资源服务器能力,避免 OAuth 2.0 接入的复杂性。通过扩展支持高性能模式,解决 OAuth 2.0 全流程的性能瓶颈问题,为高性能场景提供业务支持。
什么是 Spring Authorization Server
OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。Spring Authorization Server 项目作为 Spring 官方当前阶段主力维护的 OAuth 认证服务,目前已经发布 1.0 正式版本。经过 PIG 开源版长达半年的测试试错,目前商业版已完整迁移至 Spring Authorization Server。 更多资料参考: http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
PIGX 微服务开发平台基于角色的访问控制方法(Role-Based Access Control,简称 RBAC)是目前公认的解决大型企业的统一资源访问控制的有效方法。基于角色的访问控制是一种常见的访问控制方法,它将用户的权限赋予不同的角色,然后将角色与资源的访问权限相关联。在基于角色的访问控制中,用户不直接被赋予权限,而是被分配到一个或多个角色,这些角色被授予访问资源的权限。以下是基于角色的访问控制方法的一些好处:
提供多租户用户-角色-部门-权限的权限管理模型,确保开发工程师拿来即用。
多租户是指软件架构支持一个实例服务多个组织,每一个用户被称之为租户,软件给予租户可以对系统进行部分定制的能力,如数据独立、菜单个性化、界面颜色或业务规则等,但是他们不能定制修改软件的代码。由于共享开发和维护成本,对某些用户来说多租户是一种经济的解决方案。
对于多租户架构,需要在数据库和缓存中都实现租户的隔离,以确保不同租户的数据不会混淆在一起。
PIGX 微服务开发平台通过重写 mybatis-plus 多租户插件和 Spring Data Redis 模块实现多租户功能,能够实现开发过程无感知的多租户实现。(开发过程无感知是指在开发应用程序时,开发人员不需要考虑多租户的实现细节,也不需要对应用程序进行任何修改即可完成数据隔离)。
多租户数据隔离级详细说明
租户共享默认使用同一个 Database、同一个 Schema,但在表中增加 tenant_id 多租户的数据字段。
- 简化开发:开发过程不需要考虑多个数据源跨库查询和事务管理等,让应用可用性得到保证。
- 简化运维:共享相同的数据库和架构环境,这简化了数据管理和维护的工作量。管理员可以使用相同的工具和流程来管理所有租户的数据。
数据量很大,这种方案可行吗?
- 在我看来,市面上大部分竞品都没有一个成熟完善的解决方案来应对分库隔离的业务场景。分库隔离需要考虑的因素很多,包括硬件资源管理、分布式事务、跨库查询、数据划分策略、扩展性和负载均衡。
- 当然,分库策略并不是解决数据量大问题的"银弹"。在单个租户业务数据量较大的情况下,我们还需要继续进行拆分。
PIGX 推荐给大家的是基于字段快速实现租户隔离的业务,可以简化开发过程。随着业务数据量的增加,我们可以选择使用 TiDB、OceanBase 等 NewSQL 解决方案(PIGX 支持 TiDB 4+,OceanBase 3+)。这些解决方案适用于高可用、强一致性要求较高、数据规模较大等各种应用场景。专业的事情应该交给专业的中间件来处理。
几乎在任何一个系统中,都离不开权限的设计,权限设计 = 功能权限 + 数据权限,而功能权限,在业界常常是基于 RBAC(Role-Based Access Control)的一套方案。数据权限功能是指在应用程序中实现的一种访问控制机制,它可以确保只有授权的用户或角色才能访问特定的数据。数据权限功能的设计意义不仅在于保护数据的安全性和完整性,还可以提高应用程序的可用性和易用性。通过限制用户的访问范围,可以减少不必要的数据查询和操作,从而提高应用程序的响应速度和性能。同时,数据权限功能还可以提高应用程序的易用性,因为它可以根据用户的角色和权限来动态显示不同的数据和功能,从而使用户只看到他们需要的数据和功能,而不会感到被过度干扰。PIGX 微服务开发平台支持常见角色权限、组织权限、以及自定义数据权限授权策略,开发过程通过中仅需在 Mapper 增加 DataScope 参数即可实现数据权限拦截。
xxxxxxxxxx
81/**
2 * 数据权限示例: mapper.xml 只需要关注 query 查询参数即可,系统自动分页拦截、自动数据权限拦截
3 * @param page 分页参数
4 * @param userDTO 查询参数
5 * @param dataScope 数据权限拦截
6 * @return 自动分页、自动数据权限处理后的 Page结果
7 */
8IPage<UserVO> getUserVosPage(Page page, ("query") UserDTO userDTO, DataScope dataScope);
MyBatis Plus 封装的 Mapper 不支持联接,如果需要支持,就必须自行实现。然而,在大多数业务场景中,都需要进行多表联接。在 MyBatis-Plus 的基础上,只进行增强而不进行改变,以简化开发并提高效率。 我们以 APP 模块的文章(article)列表展示功能,前端列表同时需要显示关联表分组(collect)的名称,通过如下的如法即可实现关联查询
xxxxxxxxxx
91 (summary = "分页查询", description = "分页查询")
2 ("/page")
3 public R getAppArticleCollectPage( Page page) {
4 MPJLambdaWrapper<AppArticleCollectEntity> wrapper = new MPJLambdaWrapper<AppArticleCollectEntity>()
5 .selectAll(AppArticleCollectEntity.class).select(AppArticleEntity::getTitle)
6 .leftJoin(AppArticleEntity.class, AppArticleEntity::getId, AppArticleCollectEntity::getArticleId)
7 .eq(AppArticleCollectEntity::getUserId, SecurityUtils.getUser().getId());
8 return R.ok(appArticleCollectService.selectJoinListPage(page, AppArticleCollectEntity.class, wrapper));
9 }
对应自动生成的连表查询 SQL 如下:
xxxxxxxxxx
211SELECT
2 t.id,
3 t.cid,
4 t.title,
5 t.intro,
6 t.summary,
7 t.image,
8 t.content,
9 t.author,
10 t1.NAME AS cname
11FROM
12 app_article t
13 LEFT JOIN app_article_category t1 ON ( t1.id = t.cid )
14 AND t1.tenant_id = 1
15WHERE
16 t.del_flag = '0'
17 AND t1.del_flag = '0'
18 AND (
19 t.title LIKE ?)
20 AND t.tenant_id = 1
21 LIMIT ?
数据脱敏指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。 在 PIGX 中只需要在实体字段增加 @Sensitive
注解即可实现敏感数据脱敏。
xxxxxxxxxx
61/**
2 * 敏感字段自动打码输出
3 */
4type = SensitiveTypeEnum.MOBILE_PHONE) (
5description = "手机号") (
6private String phone;
敏感词过滤功能是通过对文本内容进行智能分析与比对,从中识别并屏蔽不符合平台规范的词汇或短语,确保平台内容的健康与合规性。该功能的核心基于 DFA(确定有限状态自动机)算法,能够在保证高效过滤的前提下实现精准识别,通过强大的敏感词过滤功能,平台可以有效规避违规内容传播的风险,营造良好的用户环境,提升整体内容质量。
代码生成可以适用于不同开发领域,在企业开发领域中,最典型的就是增删改查代码生成器。这种技术优点是提高效率,降低成本;本质上就是把有规则的重复性劳动让机器完成,把人解放,人的特长是创造性,重复性是机器和程序的特长。
使用 PIGX maven archetype (微服务构建器)生成的业务微服务,具有以下优点:首先,它们与原有开发平台解耦,这意味着您可以独立地升级和维护这些微服务,而不会对其他部分造成影响。其次,这些微服务具有清晰的接口和功能,可以更加方便地进行二次开发和定制化,以满足特定的业务需求。此外,借助于 PIGX maven archetype 提供的模板和脚手架,开发人员可以节省大量的时间和精力,快速搭建起一个稳定可靠的业务微服务。
PIGX maven archetype 体验, 在本地任意空目录执行以下命令
xxxxxxxxxx
101// 注意: Linux/Macos 可直接复制执行, windows 下 \ 修改成 ^
2mvn archetype:generate \
3 -DgroupId=com.pig4cloud \
4 -DartifactId=demo \
5 -Dversion=5.5.0 \
6 -Dpackage=com.pig4cloud.pigx.demo \
7 -DarchetypeGroupId=com.pig4cloud.archetype \
8 -DarchetypeArtifactId=pigx-gen \
9 -DarchetypeVersion=5.5.0 \
10 -DarchetypeCatalog=local
什么是 Archetype?
简单的说,Archetype 是 Maven 工程的模板工具包。一个 Archetype 定义了要做的相同类型事情的初始样式或模型。这个名称给我们提供来了一个一致的生成 Maven 工程的方式。Archetype 会帮助作者给用户创建 Maven 工程模板,并给用户提供生成相关工程模板版本的参数化方法。使用 Archetype 提供的好的方法,是开发者能够使用最佳实践来快速的构建和组织一致化的工程。在 Maven 工程中,我们努力使用 Archetype 来尽可能快的给用户提供示例工程,同时也会把 Maven 的最佳实践介绍给新的用户。一个新的用户可以使用工作中的 Maven 工作作为跳板来研究更过的 Maven 中功能。我们也可以使用 Archetype 的添加机制,这样就意味着允许我们抓取 Archetype 中项目片段,并把它们添加到既存的工程中。Maven 网站的 Archetype 就是很好的例子。例如,你可以使用“quick start archetype”来生成一个工程,然后就可以通过其中既存的“site archetype”来快速的创建一个网址工程。你能够使用 Archetype 来做很多这样的事情。在你的团队中可能想要标准化的 J2EE 开发,这需要你提供 EJBs、或者是 WARs、或者是 Web services 的原型。一旦在你团队资源库中创建和部署这些原型,它们就可以在你团队内共享使用。
PIGX 可以快速将数据库表映射为代码,包括 model、mapper、service、controller 等,同时还提供了前端表格、表单、父子表、导入导出功能的实现,让您能够以“零代码”的方式完成常见功能的开发。
我们的产品具有以下亮点:
PIGX 旨在帮助开发人员高效、快速地完成业务代码的开发工作,提升开发效率,降低开发成本。无论是大型企业级项目还是小型团队的快速原型开发,PIGX 都能为您提供强大的支持。
CGTM(代码生成模板市场)是一个在线平台,旨在为开发者提供更好的开发体验,提供各种代码生成模板。
只需在点击"在线更新"按钮,即可轻松获取最新的代码生成模板。开发者也可以通过GitHub的pull request机制提交自己的模板,为社区贡献力量。
引入了强大的表单设计器 Vform,让用户可以通过图形化界面对生成的表单进行调整和编辑。这一功能使得在线修改更加高级化,用户可以直观地看到修改的效果。同时,我们还实现了与开发平台的接口联调,例如支持上传和字典映射等功能。这种所见即所得的设计理念极大地提升了用户的开发体验,使得表单设计更加便捷、高效。无论是美化表单外观,还是定制化表单逻辑,我们的产品都能帮助用户轻松实现。
微信公众号是个人或者企业的一个宣传平台,通过开发微信公众号,可以给关注公众号的用户提供更多定制化的服务,进一步可以将服务转化为效益PIGX 基于全网最火的WxJava微信开发 SDK,提供图形化公众号菜单配置、公众号运营数据、粉丝管理、消息处理等,并支持多租户多公众号的管理模块
什么是 WxJava?
支持包括微信支付、开放平台、公众号、企业微信/企业号、小程序等微信功能的后端开发。 https://github.com/Wechat-Group/WxJava
我们在一些便利店一定看过如下这种收款码。相比于商家直接把自己微信、支付宝的收款码打印出来,消费者的体验有很大的提升。因为客户可以直接用习惯的微信或者支付宝等直接扫码,不用切换应用。而且还可以选择信用卡等支付方式。所以深受很多小微商家青睐。PIGX 通过IJPay 实现支持微信、支付宝主流支付方式的收款产品,提供渠道管理、订单管理、商品订单、回调管理等功能
什么是 IJPay ?
IJPay 让支付触手可及,封装了微信支付、QQ 支付、支付宝支付、京东支付、银联支付常用的支付方式以及各种常用的接口。不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。不依赖任何第三方 MVC 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。
PIGX 提供了一款基于 Uniapp、uView UI 和 Vue3 的移动端解决方案(详细说明参考如下移动端解决方案章节内筒)。随着移动互联的普及,传统的 PC 阅读形式已经无法满足终端用户的需求。PIGX 提供了基于移动端展示的 CMS 信息发布系统解决方案,确保信息发布的准确性和及时性。
工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。说的直白一点工作流就是封装好的一种框架,我们利用这种框架来解决需要多个人或者多个部门协同完成的某项工作。PIGX 基于 flowable 以简化动态表单和流程设计器,并实现类似于企业微信、钉钉等企业常见的简易审批工作流。通过改进后的动态表单设计器,用户可以轻松创建和编辑动态表单,支持自定义字段和验证规则。而流程设计器则提供了直观的拖放界面,使得审批流使用体验类似于企业微信或钉钉。我们相信这些改进将极大地提升用户的工作效率和体验。
在项目开发中,web 项目的前后端分离开发,APP 开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护。Swagger:REST APIs 文档生成工具。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 PIGX 在 网关直接整合 swagger 并提供 Knife4j
皮肤,无需在每个微服务整合 swagger,只需要用引入PIGX-common-swagger
即可
PIGX 通过 UReport2、jimu 两款企业级在线报表设计工具。 是一款基于架构在 Spring 之上纯 Java 的高性能报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。提供了全新的基于网页的报表设计器,可以在 Chrome、Firefox、Edge 等各种主流浏览器运行(IE 浏览器除外)。使用报表设计模块打开浏览器即可完成各种复杂报表的设计制作。通过扩展相关源码提供集群存储的相关实现,方便通过已有文件系统保存上下文资料。积木报表,是一款免费的企业级 Web 报表工具,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等!
PIGX 通过 GoView 实现炫大屏展示,GoView 是一个高效的拖拽式低代码数据可视化开发平台,将图表或页面元素封装为基础组件,无需编写代码即可制作数据大屏,减少心智负担。当然低代码也不是 “银弹”,希望所有人员都能理智看待此技术。
三步轻松完成大屏设计:配置数据源---->写数据集---->拖拽配置大屏---->保存发布。
Spring Boot Actuator
提供了对单个 Spring Boot 的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了 Spring Boot 应用的整个生命周期 。PIGX 通过 Spring Boot Admin 二次开发,支持应用多实例监控、日志在线查看、监控数据持久化及整合 Redis 监控,可以实时查看 Redis 状态
什么是 Spring Boot Admin
Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过 HTTP 或者使用注册 中心 中进行展示,Spring Boot Admin UI 部分使用 VueJs 将数据展示在前端。
消息推送模块旨在为各类应用提供统一的消息推送接口,支持多种消息类型和渠道(包括PC消息、短信消息、邮件消息、微信消息、WebHook等),以简化开发者的集成流程。开发者无需关心各个消息渠道的底层实现,只需调用统一的消息发送接口,即可实现跨平台、多渠道的消息推送。
模块内置了对多个国内短信服务商的支持,包括但不限于以下厂商 短信厂商支持列表:
WebHook模块支持集成常见的企业通讯平台,包括:
计划任务是指由计划的定时运行或者周期性运行的程序,我们最常见的就是 Linux 的‘crontab’和 Windows 的‘计划任务’。分布式定时任务是指把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。PIGX 支持 图形化集群 Quartz、xxl-job、elastic-job 三种任务框架。
传统 Web 应用中所有的功能部署在一起,图片、文件也在一台服务器;应用微服务架构后,服务之间的图片共享通过 FTP+Nginx 静态资源的方式进行访问,文件共享通过 nfs 磁盘挂载的方式进行访问,无论是单体架构还是微服务架构下的应用都存在大量图片、文件读写操作,但是昂贵的磁盘空间、高性能服务器无疑增加了运营成本。虽然都实现了对文件的存储、访问,但是系统之间很难达到文件共享,所以文件服务可以形成一个统一的访问标准,降低各个系统之间的互相依赖,提高开发效率、释放业务系统压力。 PIGX 通过整合 minio 解决上述问题,即可使用 minio 自建 OSS ,也可以直接解决兼容 S3 标准的 OSS 云服务(阿里云、华为云、七牛云等等)。
什么是 minio
MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
动态路由模块是一个集成了丰富配置功能的微服务开发平台,特别针对Spring Cloud Gateway进行了图形化定制,旨在大幅降低微服务的配置复杂度并提高开发效率。具体功能说明如下:
1. 图形化一键配置:
• 提供可视化界面,支持对微服务的常用配置进行快速一键设置,包括但不限于:
• 调用超时时间:用户可以通过图形界面轻松设置不同微服务的超时策略,确保服务稳定运行。
• 跨域配置:支持跨域请求的图形化配置,满足前后端分离的开发需求,解决跨域访问问题。
• 限流配置:可配置服务的限流策略,通过简单的可视化操作即可设置流量限制,避免系统过载。
2. Spring Cloud Gateway 图形化定制:
• 作为首个专为Spring Cloud Gateway提供图形化定制支持的平台,用户可以直接在图形界面上进行网关规则配置,如路由规则、过滤器设置、负载均衡等,极大简化了网关管理的流程。
3. 动态路由管理:
• 支持动态路由规则的配置和更新,用户可以在不重启服务的情况下,随时调整路由规则,实现高灵活性的路由管理。
• 提供对路由规则的可视化监控,帮助运维人员实时了解各微服务的流量情况和路由状态。
4. 微服务配置的标准化与自动化:
• 平台通过统一的界面和配置模板,实现微服务配置的标准化,减少人为配置错误。
• 集成自动化配置生成功能,开发人员仅需少量操作,即可快速完成复杂的微服务配置。
5. 提高开发效率:
• 图形化操作降低了对配置文件和代码的依赖,减少了手动配置的繁琐步骤。
• 通过可视化配置和一键式操作,开发人员能专注于业务逻辑开发,从而显著提高整体开发效率。
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。PIGX 整合 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
PIGX 提供一套针对面向中小企业的 SOA 单体解决方案,具体而言该解决方案的特点包括:
单体架构通常适用于小型项目,它将所有的功能模块都集中在一个应用程序中,实现简单、易于开发、测试和维护。但随着项目规模的增长,单体架构的代码复杂度也会增加,单点故障的风险也会增加,扩展性和可靠性会变得有限。 微服务架构适用于需要快速迭代、灵活性和扩展性的项目。它将应用程序拆分成独立的、可独立部署和升级的服务模块,实现服务之间的解耦,提高了系统的可靠性、可扩展性和灵活性。但是,微服务架构的设计和实现比较复杂,需要相应的技术能力和管理经验,同时,分布式系统的特点也带来了一定的挑战,例如服务治理、容错处理、安全性等方面需要注意。
PIGX 提供了一款基于 Uniapp & uView UI & Vue3 的移动端解决方案,使用 Vue.js 作为底层框架。该解决方案支持移动端代码生成,让后端开发者可以使用一种统一的语言编写一份代码,在多个平台上运行,从而减少了开发和维护的工作量。同时,PIGX 提供了丰富的插件库和组件库,包括丰富的 UI 组件、常用的第三方库、图标库等等。这些库可以大大简化应用程序的开发过程,提高应用程序的质量和可靠性。不论您是刚刚入门的开发者还是有经验的专业人士,PIGX 都是一个不可错过的绝佳选择。我们的解决方案能够轻松节省您的时间和精力,提高您的开发效率和工作质量。
在移动应用的开发过程中,常用的架构模型有很多,其中以 TOC 模型最为常见。TOC 模型是指“技术-组织-客户”三者之间的协作模式。在此模型中,技术方负责设计和开发系统,组织方( sys_user)负责管理和维护系统,客户方(app_user)则是系统的最终用户。对于开发者来说,PIGX 提供了一个独立的移动端用户、权限和菜单控制模式,极大地方便用户的开发工作。用户只需要基于此模式进行开发,即可快速构建出具有完善用户权限控制的移动端应用。
微信扫码预览 |
随着服务数量的不断增加,服务的发现、配置和管理变得越来越复杂。这时,Nacos 作为一种服务基础设施,就能够帮助开发者更好地管理微服务平台。
PIGX 通过整合 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、动态服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
PIGX 整合了dynamic-datasource-spring-boot-starter
,提供了动态数据源、主从分离、读写分离的能力。通过使用 PIGX,我们可以方便地实现多数据源的创建和切换。动态数据源是指可以在运行时动态地切换数据源,这样我们就可以灵活地处理不同的业务需求,同时可以降低代码的耦合性。主从分离和读写分离是指将数据库中的读操作和写操作分别分配到不同的数据库服务器上,这样可以提高数据库的读取效率和可用性。
使用 PIGX 可以轻松地实现多数据源,只需要在应用程序中配置多个不同的数据源,然后使用动态数据源功能进行数据源的切换。同时,我们还可以使用主从分离和读写分离来优化数据库的读写效率和可用性。
授权码模式(authorization code)是 OAuth 2.0 协议中功能最完整、流程最严密的授权模式。它的优势主要包括以下几个方面:
它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动,能够满足绝大多数开放平台认证授权的需求。让第三方应用通过 PIGX 开发平台,使得自身海量数据资源得到沉淀。PIGX 支持如下图所示的单体框架的直接接入 并提供相关的文档、视频材料。
分布式事务是指在分布式系统中执行的涉及到多个事务参与者的事务操作,包括多个事务参与者、事务协调者、资源服务器和事务管理器等分布式系统的节点。由于分布式事务的参与者分布在不同的服务器上,而且分别属于不同的应用程序,因此分布式事务需要保证所有的参与者在一次事务中的操作要么全部成功,要么全部失败,从而保证所有数据的一致性和完整性。
在实现分布式事务的过程中,需要使用分布式事务解决方案。PIGX 支持 LCN 和 Seata 两种常见的分布式事务解决方案,这些解决方案可以帮助开发人员更高效、可靠地进行分布式事务处理。具体来说,LCN 是一种基于 Spring Cloud 的分布式事务解决方案,可以将多个不同的事务操作作为一个整体进行控制。Seata 则是一种开源的分布式事务解决方案,提供了高效、可靠的分布式事务管理功能,可以实现分布式事务的高效处理。
使用 PIGX 可以轻松地实现分布式事务,同时降低事务操作和代码之间的耦合度。通过 PIGX 提供的 LCN 和 Seata 两种分布式事务解决方案,开发人员可以在分布式系统中实现复杂的事务操作,并确保数据的一致性和完整性。这对于企业级应用程序来说非常重要,因为分布式事务的处理直接关系到系统的可靠性和稳定性。
灰度路由(灰度发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行 A/B testing,即让一部分用户继续用产品特性 A,一部分用户开始用产品特性 B,如果用户对 B 没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到 B 上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
简单来讲,灰度发布主要就是涉及到老版本和新版本间的平衡过渡问题,暂且我们定义为老版本 A 和灰度版本 B。实际上灰度发布重点需要考虑两个问题,其一就是新的灰度版本如何增量部署到个别服务器容器集群,同时在灰度版本最终验证通过后,对灰度版本进行全集群增量部署;其二是解决不同的用户登录,如何根据指定的策略,将特定的用户路由到灰度版本上的问题。PIGX 通过扩展 Spring Cloud Gateway 实现多种路由策略,例如本地优先、header version 匹配等路由模式,非常方便的实现生产过程中的灰度场景如下图。
微服务架构的优势之一是可以将应用程序拆分为多个小型的、自治的服务,这些服务可以独立部署、升级和扩展。然而,这也带来了新的挑战:如何有效地管理和部署这些服务。这时,容器化技术就能够派上用场。容器化是一种轻量级的虚拟化技术,可以将应用程序及其所有依赖项打包到一个可移植的容器中,以便在不同的环境中进行部署和运行。使用容器化技术,可以实现以下好处:
Kubernetes 作为 Docker 生态圈中重要一员,是 Google 多年大规模容器管理技术的开源版本,是产线实践经验的最佳表现。无论是公有云还是私有云甚至混合云,Kubernetes 将作为一个为任何应用,任何环境的容器管理框架无处不在。 PIGX 微服务开发平台提供 rancher 、docker-compose 等容器化部署教程,针对 K8S 无需编写资源文件,就能非常方便的部署运行。
PIGX 支持直接接入 Apache SkyWalking 实现应用性能监控,SkyWalking 对微服务、云原生和容器化应用提供自动化、高性能的监控方案。 可以在服务依赖复杂且多语言环境下,获取服务对应的指标,以及完整而有意义的性能视图。
比如说我们会去做一个服务的 TBS 的正确率、成功率、流量等,这是我们常见的针对单个指标或者某一个数据库的,这就是 Metrics 单指标分析。
这里提到的是一次请求的范围,也就是我们从浏览器或者手机端发起任何的一次调用,甚至我们可以再推广一点,是一次业务教育,比如说一次订购的过程,从浏览商品到最后下订单、支付、物流、最后交到我们的手上。这是一个流程化的东西,我们需要轨迹,需要去追踪。
PIGX 支持日志配置 logback 支持直接接入 ELK 日志系统,方便在分布式系统下的日志收集,故障分析。ELK 实际上是三个工具,Elastricsearch + LogStash + Kibana,通过 ELK,用来收集日志还有进行日志分析,最后通过可视化 UI 进行展示。一开始业务量比较小的时候,通过简单的 SLF4J+Logger 在服务器打印日志,通过 grep 进行简单查询,但是随着业务量增加,数据量也会不断增加,所以使用 ELK 可以进行大数量的日志收集和分析。
PIGX 支持与 shardingsphere-jdbc 整合来实现分库分表。shardingsphere-jdbc 是 Apache ShardingSphere 项目中的一个功能组件,提供了数据分片、读写分离、数据加密、影子库压测等多种功能。此外,shardingsphere-jdbc 还支持多种 SQL 和协议,包括 MySQL、PostgreSQL、SQLServer、Oracle 等主流数据库。通过插件化的方式,开发人员可以很方便地将 shardingsphere-jdbc 集成到自己的应用程序中,从而实现分布式数据管理和分库分表功能。
Apache ShardingSphere 是一个致力于可插拔架构的开源项目,支持多种关系型数据库和 NoSQL 数据库,包括 MySQL、PostgreSQL、Oracle、SQL Server、MongoDB 等。ShardingSphere 提供了多种组件和扩展点,能够灵活地实现各种功能,例如数据分片、读写分离、数据加密、影子库压测等。同时,ShardingSphere 还支持多种 SQL 和协议,能够满足各种场景下的需求。
通过与 shardingsphere-jdbc 的整合,PIGX 可以实现高效的分库分表功能,并能够处理分布式环境下的大规模数据管理。此外,shardingsphere-jdbc 还提供了许多其他的功能和扩展点,例如分布式事务、分布式锁等,能够满足复杂的分布式应用场景。使用 shardingsphere-jdbc 和 PIGX 的整合,开发人员可以快速构建高可用性、高性能的分布式应用程序。
当今的软件开发趋势是微服务架构和 DevOps,这两种技术在软件开发和运维方面都有很多好处。将 PIGX 微服务开发平台与 DevOps 结合,可以为软件开发团队带来以下好处:
依赖 | JVM 配置 |
---|---|
OS | CentOS 7.9 4C 16G |
JDK | Zulu21.28+85-CA |
MySQL | 8.0.22 & 并发连接 1000 |
Jmeter | 4.0 |
商业版本 | 5.3 |
服务 | JVM 配置 |
---|---|
pigx-register | -Xms256m -Xmx512m |
pigx-gateway | -Xms1024m -Xmx1024m |
pigx-auth | -Xms1024m -Xmx1024m |
pigx-pigx-upms-biz | -Xms1024m -Xmx1024m |
sentinel 监控
sentinel 监控
pig4cloud.com 提供 PIGX 相关完整的使用、原理的文档、视频。内容不断更新迭代,方便学习。
#配套文档|30万字 #
(Lm) #配套视频|120小时 #
(Lm)
技术工程师为您提供产品配置指导、故障排查等技术支持 提交工单
PIGX 提供了一项安全订阅服务,可以为企业、单位和个人等使用开源软件的人提供漏洞分析和预警服务。这个服务会定期分析漏洞并及时推送预警信息,从而帮助大家更好地保障数据安全。此服务还使用漏洞知识图谱技术,加强了开源软件漏洞的整理和监督,提高了漏洞预警和基础设施保护的能力。同时,这个服务也支持安全信息搜集、分析和共享等基础服务,从而形成了漏洞分析和预警消息订阅的规范化管理依据。
尊敬的客户,您好!
感谢您长期以来对佩格科技旗下 PIG、PIGX 等产品的支持。
佩格科技公司自推出上述产品以来,给广大用户带来了生活、工作上的便捷与乐趣。佩格科技致力于确保平台以及用户的安全,严格遵守国家相关法律法规,为用户提供一个绿色、安全、健康、便捷的网络生态环境。为此,佩格科技现就产品销售、知识产权保护、禁止行为等方面,发表以下声明:
1、佩格科技一直以来是通过其官网https://pig4cloud.com展示产品信息,以官网上介绍的销售联系方式进行直接销售,没有授权分销商,也没有任何分公司、代理商、办事处、经销商等销售佩格科技旗下的产品。
2、客户不得利用佩格科技的产品从事非法行为,客户应当合法合规的使用产品。佩格科技发现客户在使用产品时有任何的非法行为,有权解除商业授权停止技术支持,并配合有关机关进行调查或向政府部门举报。佩格科技不承担客户因非法行为造成的任何法律责任。
3、佩格科技不提供任何形式的保证。所有与使用本站相关的资源直接风险均由客户承担。佩格科技提供的所有代码均为可运行实例,由于客户环境与开发环境不一致,并不对性能、适用性、适销性或/及其他方面提供任何保证。
佩格科技一直坚持合法合规的开发、销售软件产品,请客户遵照国家法律购买和使用佩格科技的产品。
特此声明。