{"id":13487907,"url":"https://github.com/edp963/wormhole","last_synced_at":"2025-05-16T02:07:13.765Z","repository":{"id":21890629,"uuid":"102447736","full_name":"edp963/wormhole","owner":"edp963","description":"Wormhole is a SPaaS (Stream Processing as a Service) Platform","archived":false,"fork":false,"pushed_at":"2022-11-16T03:44:50.000Z","size":47677,"stargazers_count":976,"open_issues_count":30,"forks_count":482,"subscribers_count":103,"default_branch":"master","last_synced_at":"2024-04-13T23:55:17.978Z","etag":null,"topics":["spark-streaming","stream-processing","wormhole"],"latest_commit_sha":null,"homepage":"https://edp963.github.io/wormhole","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edp963.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-05T07:18:39.000Z","updated_at":"2024-04-02T17:43:19.000Z","dependencies_parsed_at":"2022-08-23T02:51:21.498Z","dependency_job_id":null,"html_url":"https://github.com/edp963/wormhole","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edp963%2Fwormhole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edp963%2Fwormhole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edp963%2Fwormhole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edp963%2Fwormhole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edp963","download_url":"https://codeload.github.com/edp963/wormhole/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453651,"owners_count":22073617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["spark-streaming","stream-processing","wormhole"],"created_at":"2024-07-31T18:01:06.270Z","updated_at":"2025-05-16T02:07:13.742Z","avatar_url":"https://github.com/edp963.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","大数据"],"sub_categories":[],"readme":"\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/wormhole-logo.png\" alt=\"\" width=\"300\"/\u003e\n\n[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)\n[![Build Status](https://travis-ci.org/edp963/wormhole.svg?branch=master)](https://travis-ci.org/edp963/wormhole)\n[![Coverage Status](https://coveralls.io/repos/github/edp963/wormhole/badge.svg)](https://coveralls.io/github/edp963/wormhole)\n\n## Wormhole\n\n\u003e 来自[宜信](https://www.creditease.cn/)[技术研发中心](http://crdc.creditease.cn/)的流式处理平台\n\n**Wormhole 是一个一站式流式处理云平台解决方案（SPaaS - Stream Processing as a Service）。**\n\nWormhole 面向大数据流式处理项目的开发管理运维人员，致力于提供统一抽象的概念体系，直观可视化的操作界面，简单流畅的配置管理流程，基于 SQL 即可完成的业务逻辑开发方式，并且屏蔽了流式处理的底层技术细节，极大的降低了数据项目管理运维门槛，使得大数据流式处理项目的开发管理运维变得更加轻量敏捷可控可靠。\n\n## Documentation\n\nPlease refer to [Wormhole用户手册](https://edp963.github.io/wormhole).\n\n\n## Architecture\n\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/wh4_pipeline_overview.png\" alt=\"\" width=\"600\"/\u003e\n\n### 设计理念\n\n- **统一 DAG 高阶分形抽象**\n  - 构建由 Source DataSys，Kafka Topic，Spark Stream（Flink Stream），Sink DataSys 组成的物理 DAG\n  - 每个物理 DAG 里可以并行处理多个由 Source Namespace，Flow，Sink Namespace 组成的逻辑 DAG\n  - 每个 Flow 本身是典型的 Spark RDD DAG\n- **统一通用流消息 UMS 协议抽象**\n  - UMS 是 Wormhole 定义的流消息协议规范\n  - UMS 试图抽象统一所有结构化消息\n  - UMS 自身携带结构化数据 Schema 信息\n  - Wh4 支持用户自定义半结构化 JSON 格式\n- **统一数据逻辑表命名空间 Namespace 抽象**\n  - Namespace 唯一定位所有数据存储所有结构化逻辑表\n  - [Data System].[Instance].[Database].[Table].[Table Version].[Database Partition].[Table Partition]\n\n### 主要特性\n\n- **支持可视化，配置化，SQL 化开发实施流式项目**\n- **支持指令式动态流式处理的管理，运维，诊断和监控**\n- **支持统一结构化 UMS 消息和自定义半结构化 JSON 消息**\n- **支持处理增删改三态事件消息流**\n- **支持单个物理流同时并行处理多个逻辑业务流**\n- **支持流上 Lookup Anywhere，Pushdown Anywhere**\n- **支持基于业务策略的事件时间戳流式处理**\n- **支持UDF的注册管理和动态加载**\n- **支持多目标数据系统的并发幂等入库**\n- **支持多级基于增量消息的数据质量管理**\n- **支持基于增量消息的流式处理和批量处理**\n- **支持 Lambda 架构和 Kappa 架构**\n- **支持与三方系统无缝集成，可作为三方系统的流控引擎**\n- **支持私有云部署，安全权限管控和多租户资源管理**\n\n## Experience\n\n#### Admin 可以创建 Project/Namespace/User/UDF，并且可以查看所有 Flow/Stream/Job\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/admin_1.png\" alt=\"\" width=\"600\"/\u003e\n\n#### Admin 可以为 Project 分配 Namespace 资源/User 资源/UDF 资源/计算资源，以支持多租户资源隔离\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/admin_2.png\" alt=\"\" width=\"600\"/\u003e\n\n#### User 可以对自己有权限的 Project 进行开发实施和管理运维工作\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_1_project.png\" alt=\"\" width=\"600\"/\u003e\n\n#### User 可以通过简单配置步骤即可搭建起一个流式作业 pipeline（Flow），只需关注数据从哪来到哪去和如何转换处理\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_2_flow_1.png\" alt=\"\" width=\"600\"/\u003e\n\n#### 转换支持大部分流上作业常用场景，大部分工作可以通过配置 SQL 实现流上处理逻辑\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_2_flow_2.png\" alt=\"\" width=\"600\"/\u003e\n\n#### Wormhole 有 Flow 和 Stream 的概念，支持在一个物理 Stream（对应一个 Spark Stream）里通过并行处理多个逻辑 Flow，使得 User 可以更加精细灵活的利用计算资源，User 也可以对 Stream 进行精细化参数配置调整以更好平衡需求和资源\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_3_stream.png\" alt=\"\" width=\"600\"/\u003e\n\n#### Wormhole 也支持批处理 Job，同样可以配置化实现处理逻辑并落到多个异构 Sink，Flow 和 Job 的配合可以很容易实现 Lambda 架构和 Kappa架构\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_4_job_1.png\" alt=\"\" width=\"600\"/\u003e\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_4_job_2.png\" alt=\"\" width=\"600\"/\u003e\n\n#### User 可以查看 Project 相关的 Namespace/User/UDF/Resource\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_5_ns.png\" alt=\"\" width=\"600\"/\u003e\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_5_user.png\" alt=\"\" width=\"600\"/\u003e\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_6_udf.png\" alt=\"\" width=\"600\"/\u003e\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_7_res.png\" alt=\"\" width=\"600\"/\u003e\n\n#### User还可以监控 Project 正在运行的所有 Flow/Stream 的吞吐和延迟\n\u003cimg src=\"https://github.com/edp963/wormhole/raw/master/docs/img/user_8_mon.png\" alt=\"\" width=\"600\"/\u003e\n\n#### 以上是简短的功能和用户体验预览，更多强大的细节功能请参见 Documentation\n\n## Latest Release\n\nPlease download the latest RELEASE(链接:https://pan.baidu.com/s/1cJqlTKdeudkqY-vD4F8cqQ  密码:mhq4).\n\n## Get Help\n\n- **Mailing list**: edp_support@groups.163.com\n- **WeChat**: edpstack \u003cimg src=\"https://github.com/edp963/edp-resource/raw/master/WeChat.jpg\" alt=\"\" width=\"100\"/\u003e\n\n## License\n\nWormhole is under the Apache 2.0 license. See the [LICENSE](https://github.com/edp963/wormhole/blob/master/LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedp963%2Fwormhole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedp963%2Fwormhole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedp963%2Fwormhole/lists"}