{"id":22825914,"url":"https://github.com/webankpartners/wecube-platform","last_synced_at":"2025-05-15T18:08:51.783Z","repository":{"id":35188002,"uuid":"202089894","full_name":"WeBankPartners/wecube-platform","owner":"WeBankPartners","description":"WeCube Platform","archived":false,"fork":false,"pushed_at":"2025-05-08T08:59:03.000Z","size":97842,"stargazers_count":373,"open_issues_count":30,"forks_count":87,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-05-08T09:41:44.284Z","etag":null,"topics":["apache","java","ops-tools","vue"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/WeBankPartners.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-08-13T07:33:48.000Z","updated_at":"2025-04-27T09:11:03.000Z","dependencies_parsed_at":"2023-10-30T07:29:56.246Z","dependency_job_id":"ecab406a-57d0-4dfd-8d83-643159ee212b","html_url":"https://github.com/WeBankPartners/wecube-platform","commit_stats":null,"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankPartners%2Fwecube-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankPartners%2Fwecube-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankPartners%2Fwecube-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankPartners%2Fwecube-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeBankPartners","download_url":"https://codeload.github.com/WeBankPartners/wecube-platform/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254394722,"owners_count":22063984,"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":["apache","java","ops-tools","vue"],"created_at":"2024-12-12T17:12:29.563Z","updated_at":"2025-05-15T18:08:46.774Z","avatar_url":"https://github.com/WeBankPartners.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WeCube\n\n\u003cp align=\"left\"\u003e\n    \u003ca href=\"https://opensource.org/licenses/Apache-2.0\" alt=\"License\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/WeBankPartners/wecube-platform/tree/v2.0.0\" alt=\"Tag\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/v/tag/WeBankPartners/wecube-platform.svg\" /\u003e\u003c/a\u003e\n    \u003ca href=\"#\" alt=\"Code Size\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/languages/code-size/WeBankPartners/wecube-platform.svg\" /\u003e\u003c/a\u003e\n    \u003ca href=\"#\" alt=\"Java\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/language-java-orange.svg\" /\u003e\u003c/a\u003e\n    \u003ca href=\"#\" alt=\"Vue\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/language-vue-green.svg\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/WeBankPartners/wecube-platform/graphs/contributors\" alt=\"Contributors\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/contributors/WeBankPartners/wecube-platform\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/WeBankPartners/wecube-platform/pulse\" alt=\"Activity\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/commit-activity/m/WeBankPartners/wecube-platform\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://circleci.com/gh/WeBankPartners/wecube-platform/tree/master\"\u003e\n        \u003cimg src=\"https://img.shields.io/circleci/project/github/WeBankPartners/wecube-platform/master\"\n            alt=\"build status\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n中文 / [English](README_EN.md)\n\n## 引言\n\nWeCube 是一套开源的，一站式 IT 架构管理和运维管理工具，主要用于简化分布式架构 IT 管理，并可以通过插件进行功能扩展。\n[Releases 快速入口](https://github.com/WeBankPartners/wecube-platform/releases)\n\n## 功能体验\n\n功能的体验可参照：[WeCube 全量体验过程说明](\u003chttps://wecube-1259801214.cos.ap-guangzhou.myqcloud.com/WeCube功能体验(standard)_v3.pdf\u003e) 搭建私有环境\n\n## 起源\n\n微众银行在分布式架构实践的过程中，发现将银行核心系统构建于分布式架构之上，会遇到一些与传统单体应用不同的痛点（例如，服务器增多，部署难度大；调用链长，全链路跟踪困难； 系统复杂，问题定位时间长等），在逐步解决这些痛点的过程中，总结了一套 IT 管理的方法论和最佳实践，并研发了与之配套的 IT 管理工具体系。WeCube 就是将该套方法论和最佳实践，从微众内部众多 IT 管理工具体系中提炼出来，整合成一套开箱即用的 IT 管理解决方案。\n\n## 设计理念\n\n\u003cdiv align=center\u003e\u003cimg src=\"wecube-wiki/images/wecube_concept.png\" width=\"600\"/\u003e\u003c/div\u003e\n\nWeCube 的设计理念与 IT 系统生命周期管理基本一致。可以通过“六个维度和一个核心”来阐述。\n\n**一个核心：通过注册新插件持续扩展 WeCube 的功能，通过如下 5 个能力实现插件注册及协作。插件注册详见“插件注册”。**\n\n- 菜单布局：WeCube 提供前端 UI 基座和前端开发规范，使各个插件的前端交互能够无缝集成到 WeCube，进而形成一个统一平台。\n- 权限模型：WeCube 的权限模型提供“用户-角色-菜单”三级权限模型，并提供统一认证方案。数据权限及 API 权限，由插件自身控制。\n- 流程编排：WeCube 内置一套标准的 BPMN 流程引擎，可以通过客户自定义编排驱动插件协同工作，减少人工干预。编排设计详见“编排设计”。\n- 数据模型：插件需要将自身需要提供给其他插件使用的数据模型注册到 WeCube 的统一数据模型，然后通过标准的 CRUD 接口提供数据访问服务。\n- 系统参数：WeCube 的全局参数、插件需要客户修改、插件需要暴露给其他插件使用的参数，需要注册到 WeCube 的系统参数内。\n\n**六个维度：通过定义六个维度的菜单，并将插件功能有组织性的插入这六个维度菜单中，形成对 IT 系统全生命周期的有效管理。**\n\n- 任务：汇聚多种类型任务，形成一体化的工作平台。工作内容清晰可见，轻重缓急一目了然。\n- 设计：定义模型和规范，形成标准化设计语言。通过规范化设计及图形化展示，清晰、准确地描绘出对分布式架构的期望。\n- 执行：通过各类自动化、标准化任务的执行，将分布式架构的期望设计变成现实存在，消除人员能力参差不齐导致的实现差异。\n- 监测：定义全方位的监测项指标，通过持续收集监测数据，精确反映现状，并发现现实与期望的差异项。\n- 智慧：应用机器学习等技术，赋予智慧能力。通过数学建模，制定应对监测发现的差异项的处理策略。\n- 调整：通过执行处理策略来不断进行动态调整，最终保持现实与期望的对等，进而使系统稳定运行。\n\n## 技术实现\n\nWeCube 分为核心功能模块和插件模块。\n\n核心功能模块使用 Java/MySQL/VUE 开发，主要负责工作流程，可视化和核心数据存储。\n\n插件模块用于功能扩展，分为资源管理、数据整合、功能增强三类插件。对于插件，WeCube 定义了一套接口规范，插件开发者可以在遵循规范的前提下，自行选择开发语言。目前已有的插件使用的开发语言包括 GO 语言和 Java。\n\n## 系统架构\n\n### WeCube 2.x 版本\n\n![WeCube2.0功能架构](wecube-wiki/images/wecube_arch_2.0.png)\n\n组件间详细关联图：\n\n![WeCube2.0组件间详细关联图](wecube-wiki/images/wecube_arch_2.0_details.png)\n\n1, Portal web：浏览器客户，客户与 WeCube 交互的入口。  \n2, Portal nginx：接收客户端访问请求，如果请求静态资源，返回 Core 或插件的静态资源文件。如请求动态服务，转发到后端 API gateway。Portal nginx 建议采用负载均衡实现高可用，也可以使用 keepalived 做主从高可用。  \n3, API gateway：负责 Portal nginx 或其他外部系统的动态服务请求的路由分发。\n\n- A） 登录认证请求，转发到 Auth server，使用用户名密码换取 Token。Token 采用非对称加密，包含用户名、角色、菜单权限信息。\n- B） Core 服务请求，转发到 Core。比如角色添加、插件注册、编排设计等等。\n- C） Plugin 服务请求，转发到对于的 Plugin。比如 CMDB 配置管理、监控数据查询、任务管理等。\n\n建议负载均衡实现高可用，也可以使用 keepalived 做主从高可用。  \nAPIGateway 启动时通过 Core 获取插件实例列表，并建立路由规则。  \n同时 APIGateway 会监测 Core、Auth Server、Plugins 的状态，实现 Core、Auth server、Plugins 实例的主从类型的高可用。\n\n4, Auth server：主要负责用户认证服务，并返回含有用于认证的 token。由 API gateway 实现主从类型的高可用。  \n5, Core：WeCube 的核心模块。提供插件注册、编排设计、权限管理、批量任务、插件运行资源管理、数据模型、系统参数等核心功能。\n由 API gateway 实现主从类型的高可用。  \n6, MYSQL：WeCube Core 和 Auth server 的数据库实例。建议 MYSQL 主从实现高可用。  \n7, S3:插件包镜像文件的存储。插件注册是写入镜像文件，插件实例启动时读取镜像文件。  \n8, Plugin instance-Docker：插件运行的容器母机，可以配置多台母机，运行多个插件实例，提供高可用。  \n9, Plugin instance-MYSQL：插件运行所需要的数据库实例，为每个需要数据库的插件建立独立数据库。建议 MYSQL 主从实现高可用。  \n10, Plugin instance-S3：插件运行所需要的对象存储，为每个需要存储文件的插件分配单独的桶。  \n11, Plugin instance-Squid：插件访问外部资源的代理服务器，按域名放通白名单。在安全要求较高的时建议部署。  \n以上 11 个组件组成 WeCube Platform。\n\n## 主要功能简介\n\nWeCube 的功能菜单设计与设计理念保持一致。分别是任务、设计、执行、监测、智慧、调整、协同、系统。\n\n- 系统\n\n  - 系统参数：管理 WeCube Platform 运行所需的系统参数。\n  - 资源管理：管理 WeCube 提供的资源如容器母机及资源上运行的实例。\n  - 权限管理：管理 WeCube Platform 的用户，角色和菜单，可以对权限进行菜单级别的管控。\n  - 高危规则配置：管理高危命令的检测规则，当使用平台执行功能时命中规则将弹窗提示进行二次确认。\n\n- 协同\n\n  - 插件注册：选择插件包上传，插件包需声明本插件的依赖、所需菜单、数据模型、系统参数、权限设定及运行资源，注册后通过容器运行，支持多实例，可以查看插件运行的日志。选择插件服务，通过插件运行的参数关联 CMDB 数据模型的属性值，形成注册。\n\n  - 任务编排：比如设计一个 VPC 创建的编排。包括创建 VPC、创建子网、创建 VM。流程的每个执行节点需要关联插件。\n\n- 设计（WeCMDB 插件提供）\n\n  - 规划设计：用于设计机房结构。\n\n  - 资源规划：用于实例化一个机房，特别是两地三中心结构。\n\n  - 应用架构设计：用于设计一个应用的逻辑架构。\n\n  - 应用部署设计：用于实际部署一个应用。支持灰度发布。\n\n  - CI 数据管理/查询：通过模型图形进入单个数据管理以及查询。\n\n  - CI 综合查询管理/数据综合查询：用于配制多 CI 属性报表。比如一个应用使用到了哪些主机。\n\n- 执行\n\n  - 编排任务执行：在选择编排后可对选择目标对象执行编排，支持灰度操作。比如重启某个资源集的 5 台主机。\n\n  - 物料管理（Artifacts 插件提供）：管理应用程序的包。可以定义各种文件，可以配置环境差异导致的变量替换规则，不需要人工处理。\n\n  - 批量执行：通过配置综合查询并选择目标。在通过特定插件来执行任务。比如某个应用的所有主机，执行一个用户权限变更。\n\n- 任务（Service-Management 插件提供）\n\n  - 工作台：ITSM 工单发起、任务处理的统一入口,按照 ITSM 五大流程划分场景；\n\n  - 模板管理：新建、发布、变更模版；\n\n  - 模板组管理：新建、管理模版分组；\n\n- 监测（Open-Monitor 插件提供）\n\n  - Agent 管理: 注册、启动、停止；\n\n  - 数据管理: 提供数据采集配置， 数据查询等功能；\n\n  - 告警管理: 提供阈值配置、日志监控、告警触发等功能；\n\n  - 视图管理: 提供图形配置和自定义视图功能；\n\n- 调整（规划中）\n\n- 智慧\n\n  - 容量建模：通过多元回归分析建模，获取业务量指标和资源消耗之间的系数关系。\n\n  - 容量预测：将预测的业务量指标输入到模型中，获取合理的资源容量配置建议。\n\n## 核心流程时序说明：\n\n插件注册时序图:  \n![插件注册时序图](wecube-wiki/images/plugin_register_sequence.png)\n\n编排任务执行:  \n![编排任务执行](wecube-wiki/images/workflow_exec_sequence.png)\n\n## 快速入门\n\nWeCube 采用容器化部署。\n\n如何编译 WeCube，请查看以下文档\n[WeCube 编译文档](wecube-wiki/docs/install/wecube_compile_guide.md)\n\n如何安装 WeCube， 请查看以下文档\n[WeCube 部署文档@GitHub](https://webankpartners.github.io/wecube-docs/installation-standalone-mode-on-premises/)\n[WeCube 部署文档@Gitee](http://webankpartners.gitee.io/wecube-docs/installation-standalone-mode-on-premises/)\n\n## 用户手册\n\n更多关于 WeCube 的使用和操作说明， 请查看以下文档\n[WeCube 用户手册@GitHub](https://webankpartners.github.io/wecube-docs/)\n[WeCube 用户手册@Gitee](http://webankpartners.gitee.io/wecube-docs/)\n\n## 开发者文档\n\nWeCube 使用 Java 和 VUE 进行开发，数据存储于 MySQL，并依赖 Tomcat Web 容器运行。\n\n请参考以下文档进行开发环境配置[WeCube 开发环境配置](wecube-wiki/docs/developer/wecube_developer_guide.md)\n请参考以下文档进行插件开发[WeCube-Platform 插件开发规范](wecube-wiki/docs/developer/WeCube-Platform插件开发规范.md)\n\n## License\n\nWeCube 是基于 Apache License 2.0 协议， 详情请参考 [LICENSE](LICENSE)\n\n## 社区\n\n- 如果您想得到最快的响应，请给我们提[Issue](https://github.com/WeBankPartners/wecube-platform/issues/new/choose)或扫描下面的二维码，我们会第一时间反馈。\n\n\u003cdiv align=\"left\"\u003e\n\u003cimg src=\"wecube-wiki/images/wecube_qr_code.png\"  height=\"200\" width=\"200\"\u003e\n\u003c/div\u003e\n\n- 联系我们：fintech@webank.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebankpartners%2Fwecube-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebankpartners%2Fwecube-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebankpartners%2Fwecube-platform/lists"}