UniSmith 是一个高度可配置的融合网关管理系统。它提供了一个图形化的管理界面,旨在帮助系统管理员和开发人员轻松配置、管理和监控各种数据处理任务和后端服务。
融合网关核心定位:
- 数据网关(当前主要功能):统一管理多种数据抓取、接收和处理任务,通过配置化方式简化运维工作和开发流程
- 鉴权网关(未来规划):提供统一的身份验证、授权管理和访问控制功能
- API网关(未来规划):实现API路由、负载均衡、限流熔断等服务治理功能
项目面向需要统一管理多种数据源接入、服务治理和安全控制的企业级场景,通过融合多种网关职责于一体,构建完整的服务入口解决方案。
| 组成 | 词源/含义 | 在网关场景中的隐喻 |
|---|---|---|
| Uni- | Universal / Unified | 表示"统一的、通用的、万能的",强调网关对多协议、多类型设备的统一接入与管理能力,避免割裂的"烟囱式"集成 |
| Smith | 英语中"铁匠、工匠"之意;在技术品牌里常延伸为"精于锻造、专注打磨" | 隐喻网关像工匠一样,把多源数据**"锻造成"**可用、可互通的标准流;亦暗示对协议栈、性能、稳定性的极致打磨 |
| 融合网关 | 行业内对承担多协议适配 + 数据汇聚 + 统一发布角色的网关常用描述 | 用一句话点明产品定位:把视觉 AI、物联网、工业现场、业务系统等"异构世界"融合起来 |
一句话总结:
"UniSmith" = 将万千异构协议 统一(Uni-) 后,像匠人(Smith)一样精工细作地锻造成标准化数据流;"融合网关"进一步点明它是连接 AI、IoT、工业协议、业务 API 的融合型入口。
系统核心是围绕 配置化 和 自动化 构建的,用户通过图形化表单即可定义和管理复杂的数据处理任务。
定义一个主动从外部数据源拉取数据的任务。
- 定时调度: 内置 Cron 配置器,可灵活定义任务执行周期(精确到年、月、日、时、分)。
- HTTP 请求定义:
- 支持
GET和POST请求方法。 - 可自定义请求
URL、Headers、JSON Body以及Form参数。 Form参数支持动态生成,例如可自动填充"今天"或"过去N天"的日期。
- 支持
- 特殊请求头支持: 内置了对百度云AI等平台的签名算法支持,只需填写
AK/SK即可自动生成认证头。
定义一个被动的 API 接口,用于接收由外部系统推送来的数据。
- 阻塞式处理: 可配置阻塞等待时间,以确保数据完整接收。
- 灵活的数据处理: 与抓取任务共享一套强大的数据处理和分发逻辑。
无论是"抓取"还是"接收"到的数据,都会经过一个标准化的处理流水线。
- 数据结构解析:
- 支持处理
JSON对象和JSON数组两种数据结构。 - 当数据为数组时,可使用路径语法(如
data.list)指定数组在响应体中的位置。
- 支持处理
- 字段提取与映射:
- 允许用户通过点分路径(如
location.address)从原始数据中提取任意层级的字段。 - 可将提取的字段映射为系统内部的标准化字段名(如
address)。 - 支持对字段进行类型转换,例如将字符串或时间戳格式化为标准的日期时间类型。
- 允许用户通过点分路径(如
处理完成后的结构化数据可以被自动推送到下游系统。
- 推送类型:
- Skylark (飞书/Lark): 将数据推送到指定的飞书/Lark流程引擎。
- 仅日志: 不做推送,仅在系统后台记录处理日志,用于调试或归档。
本项目是典型的 "配置与执行分离" 架构,frontend 和 restful/backend 负责配置的"定义",而 restful/datahandler 负责配置的"执行"。
-
用户定义任务: 用户在前端界面填写表单,定义一个完整的任务。例如,定义一个"抓取任务",包括其 Cron 表达式、目标 URL、请求参数、字段提取规则和最终的数据推送目标 (Skylark)。
-
配置持久化存储: 该配置通过核心后端 (
restful/backend) 的 API 接口,被结构化地持久存储在 PostgreSQL 数据库中。 -
datahandler执行任务: 数据处理服务 (restful/datahandler) 是一个独立的、无状态的执行引擎。- 定时调度 (Grab): 其内置的 Cron 调度器会加载所有"抓取任务"配置,并根据其 Cron 表达式在指定时间触发任务。
- 请求执行 (Grab): 任务触发后,
datahandler会根据配置构建并发送 HTTP 请求。 - 被动接收 (Receive):
datahandler也提供 API 端点,随时准备接收第三方推送的数据,并触发相应的处理流程。 - 处理与分发: 一旦获取到数据(无论是主动抓取还是被动接收),它会立即执行配置好的"数据解析"、"字段提取"和"数据分发"流水线,将最终结果发送到下游系统。
项目包含一个完整的三级权限用户管理系统,以满足不同层级的管理需求。
- 主要功能:
- 注册/登录:基于 JWT (JSON Web Token) 的安全认证机制。
- 用户管理:支持对用户的增、删、改、查操作。
- 角色权限:内置三种角色:
admin(管理员): 拥有系统所有权限。sub_admin(子管理员): 可管理普通用户,但不能管理其他管理员。user(普通用户): 仅拥有基础的访问和查看权限。
| 分类 | 技术 |
|---|---|
| 前端 | React 18, UmiJS 4, Ant Design 5, Pro Components, TypeScript |
| 后端 | Go, go-zero |
| 数据库 | PostgreSQL (业务数据), Redis (缓存), etcd (服务发现/配置中心) |
| 容器化 | Docker, Docker Compose |
.
├── deploy/ # 部署相关文件,核心是 docker-compose.yml
├── frontend/ # 前端 React 应用 (UmiJS 驱动)
│ ├── src/
│ │ ├── pages/ # 页面组件
│ │ ├── components/ # 通用组件
│ │ ├── services/ # API 服务封装
│ │ └── hooks/ # 自定义 Hooks
│ └── package.json
└── restful/ # 后端 Go 应用 (go-zero 驱动)
├── backend/ # 核心后端 API 服务 (与前端直接交互)
└── datahandler/ # 独立的后台数据处理服务 (执行定时任务)
本项目已完全容器化,推荐使用 Docker Compose 进行一键部署。
前提:请确保您的机器上已安装 Docker 和 Docker Compose。
步骤:
-
创建共享网络
docker-compose.yml使用了一个名为unismith-network的外部网络。首先需要创建它:docker network create unismith-network
-
启动所有服务 在项目根目录下,执行以下命令以后台模式启动所有服务(前端、后端、数据库等):
docker-compose -f deploy/docker-compose.yml up -d
-
访问应用
- 前端应用: http://localhost:3000
- 后端API:
http://localhost:8080
-
停止服务
docker-compose -f deploy/docker-compose.yml down
- 权限设计思路:前端通过登录时获取的用户
role字段来控制UI元素的显示(如菜单、按钮)。后端每个接口在处理请求时,会再次通过解析 JWT 中的用户信息来验证操作权限,实现双重保障。 - 配置存储逻辑:所有在前端创建的配置项,无论是表单模式还是JSON模式,最终都会被解析并以结构化数据的形式存储在数据库的
configs相关表中,供datahandler服务消费。
UniSmith 融合网关管理系统将持续演进,朝着真正的融合网关方向发展。未来计划在以下几个关键领域进行功能扩展和优化:
🚀 鉴权网关功能(未来规划)
- 统一身份认证:集成多种认证方式(OAuth2.0、SAML、LDAP等)
- 细粒度授权:基于RBAC/ABAC的权限控制模型
- 单点登录(SSO):跨应用的统一登录体验
- API密钥管理:第三方接入的密钥生成、轮换和管控
- 访问审计:完整的访问日志和安全事件追踪
🚀 API网关功能(未来规划)
- 路由管理:灵活的API路由配置和版本控制
- 负载均衡:多种负载均衡策略支持
- 限流熔断:基于令牌桶、滑动窗口等算法的流控
- 服务发现:与主流服务注册中心集成
- 协议转换:HTTP/gRPC/WebSocket等协议间转换
- API文档:自动生成和维护API文档
🔧 支持更多协议类型(未来规划)
当前系统主要聚焦于 HTTP/HTTPS 协议的数据抓取与接收。未来,我们将致力于扩展对更多工业和物联网协议的支持,包括但不限于:
- Websocket:实现实时双向通信能力,适用于需要低延迟、高并发数据推送的场景,例如实时仪表盘、即时消息通知等。
- OPC UA:作为工业自动化领域的关键协议,支持 OPC UA 将使 UniSmith 能够直接与工业设备、PLC、SCADA 系统进行数据交互,进一步拓展在智能制造和工业物联网中的应用。
- MQTT:轻量级的消息发布/订阅协议,非常适合物联网设备的数据采集和分发,实现海量设备的高效接入。
通过支持多协议,UniSmith 将能够连接更广泛的异构数据源,成为真正意义上的"万能"融合网关。
🔧 接口数据处理日志与可视化(未来规划)
为了提升系统的可观测性和问题排查效率,未来将引入详细的数据处理日志功能。用户将能够:
- 实时查看日志:无论是主动抓取(Grab)任务还是被动接收(Receive)接口,其所有数据处理环节的详细日志都将可被实时查看。
- 关键信息记录:日志将包含请求入参、数据解析过程、字段提取与映射结果、数据推送状态(成功/失败)、以及任何处理过程中产生的错误或警告信息。
- 日志检索与筛选:提供强大的日志搜索、过滤和时间范围查询功能,帮助用户快速定位特定任务或接口的问题。
- 可视化分析:通过图表形式展示数据处理的趋势、成功率、耗时等关键指标,提供更直观的运行状态洞察。
这将极大地增强系统的透明度,便于用户监控数据流转,确保数据处理的准确性和可靠性。
🔧 智能告警模块(未来规划)
为确保系统稳定运行和数据处理的及时性,将引入一套智能告警系统。该模块能够:
- 灵活配置告警规则:用户可以根据业务需求自定义告警条件,例如:
- 任务执行失败率超过阈值
- 数据抓取或接收超时
- 特定字段数据异常或缺失
- 系统资源(CPU、内存)使用率过高
- API 调用错误次数达到上限
- 多渠道通知:支持通过多种渠道发送告警通知,如邮件、短信、微信/钉钉/飞书消息等,确保告警信息能及时触达相关负责人。
- 告警生命周期管理:提供告警的生成、确认、处理、关闭全流程管理,并支持告警历史查询,帮助团队快速响应并解决问题。
- 集成第三方告警平台:预留接口,支持与 Prometheus、Grafana 等主流监控告警平台集成。
告警模块的引入将使 UniSmith 从被动响应转变为主动预警,显著提升系统的健壮性和运维效率。
阶段一:数据网关完善(当前及近期)
- ✅ 已完成:HTTP数据抓取与接收、用户权限管理
- 🚧 进行中:协议扩展、日志可视化、智能告警
阶段二:鉴权网关集成(中期规划)
- 🚀 统一身份认证与授权体系
- 🚀 单点登录和API密钥管理
- 🚀 安全审计和访问控制
阶段三:API网关融合(长期规划)
- 🚀 服务路由和负载均衡
- 🚀 流量控制和熔断保护
- 🚀 协议转换和服务治理
通过分阶段实施,UniSmith将逐步演进为企业级的全功能融合网关平台,真正实现"一个平台,多重职责"的设计理念。