1 Star 0 Fork 321

johntomyang / wecube-platform

forked from WeBank / wecube-platform 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

WeCube

build status

中文 / English

引言

WeCube是一套开源的,一站式IT架构管理和运维管理工具,主要用于简化分布式架构IT管理,并可以通过插件进行功能扩展。

起源

微众银行在分布式架构实践的过程中,发现将银行核心系统构建于分布式架构之上,会遇到一些与传统单体应用不同的痛点(例如,服务器增多,部署难度大;调用链长,全链路跟踪困难; 系统复杂,问题定位时间长等),在逐步解决这些痛点的过程中,总结了一套IT管理的方法论和最佳实践,并研发了与之配套的IT管理工具体系。WeCube就是将该套方法论和最佳实践,从微众内部众多IT管理工具体系中提炼出来,整合成一套开箱即用的IT管理解决方案。

设计理念

WeCube的设计理念与IT系统生命周期管理基本一致。可以通过“六个维度和一个核心”来阐述。

一个核心:通过注册新插件持续扩展WeCube的功能,通过如下5个能力实现插件注册及协作。插件注册详见“插件注册”。

  • 菜单布局:WeCube提供前端UI基座和前端开发规范,使各个插件的前端交互能够无缝集成到WeCube,进而形成一个统一平台。
  • 权限模型:WeCube的权限模型提供“用户-角色-菜单”三级权限模型,并提供统一认证方案。数据权限及API权限,由插件自身控制。
  • 流程编排:WeCube内置一套标准的BPMN流程引擎,可以通过客户自定义编排驱动插件协同工作,减少人工干预。编排设计详见“编排设计”。
  • 数据模型:插件需要将自身需要提供给其他插件使用的数据模型注册到WeCube的统一数据模型,然后通过标准的CRUD接口提供数据访问服务。
  • 系统参数:WeCube的全局参数、插件需要客户修改、插件需要暴露给其他插件使用的参数,需要注册到WeCube的系统参数内。

六个维度:通过定义六个维度的菜单,并将插件功能有组织性的插入这六个维度菜单中,形成对IT系统全生命周期的有效管理。

  • 任务:汇聚多种类型任务,形成一体化的工作平台。工作内容清晰可见,轻重缓急一目了然。
  • 设计:定义模型和规范,形成标准化设计语言。通过规范化设计及图形化展示,清晰、准确地描绘出对分布式架构的期望。
  • 执行:通过各类自动化、标准化任务的执行,将分布式架构的期望设计变成现实存在,消除人员能力参差不齐导致的实现差异。
  • 监测:定义全方位的监测项指标,通过持续收集监测数据,精确反映现状,并发现现实与期望的差异项。
  • 智慧:应用机器学习等技术,赋予智慧能力。通过数学建模,制定应对监测发现的差异项的处理策略。
  • 调整:通过执行处理策略来不断进行动态调整,最终保持现实与期望的对等,进而使系统稳定运行。

技术实现

WeCube分为核心功能模块和插件模块。

核心功能模块使用Java/MySQL/VUE开发,主要负责工作流程,可视化和核心数据存储。

插件模块用于功能扩展,分为资源管理、数据整合、功能增强三类插件。对于插件,WeCube定义了一套接口规范,插件开发者可以在遵循规范的前提下,自行选择开发语言。目前已有的插件使用的开发语言包括GO语言和Java。

系统架构

WeCube 2.0版本

WeCube2.0功能架构

组件间详细关联图:

WeCube2.0组件间详细关联图

1, Portal web:浏览器客户,客户与WeCube交互的入口。
2, Portal nginx:接收客户端访问请求,如果请求静态资源,返回Core或插件的静态资源文件。如请求动态服务,转发到后端API gateway。Portal nginx建议采用负载均衡实现高可用,也可以使用keepalived做主从高可用。
3, API gateway:负责Portal nginx或其他外部系统的动态服务请求的路由分发。

  • A) 登录认证请求,转发到Auth server,使用用户名密码换取Token。Token采用非对称加密,包含用户名、角色、菜单权限信息。
  • B) Core服务请求,转发到Core。比如角色添加、插件注册、编排设计等等。
  • C) Plugin服务请求,转发到对于的Plugin。比如CMDB配置管理、监控数据查询、任务管理等。

建议负载均衡实现高可用,也可以使用keepalived做主从高可用。
APIGateway启动时通过Core获取插件实例列表,并建立路由规则。
同时APIGateway会监测Core、Auth Server、Plugins的状态,实现Core、Auth server、Plugins实例的主从类型的高可用。

4, Auth server:主要负责用户认证服务,并返回含有用于认证的token。由API gateway实现主从类型的高可用。
5, Core:WeCube的核心模块。提供插件注册、编排设计、权限管理、批量任务、插件运行资源管理、数据模型、系统参数等核心功能。 由API gateway实现主从类型的高可用。
6, MYSQL:WeCube Core和Auth server的数据库实例。建议MYSQL主从实现高可用。
7, S3:插件包镜像文件的存储。插件注册是写入镜像文件,插件实例启动时读取镜像文件。
8, Plugin instance-Docker:插件运行的容器母机,可以配置多台母机,运行多个插件实例,提供高可用。
9, Plugin instance-MYSQL:插件运行所需要的数据库实例,为每个需要数据库的插件建立独立数据库。建议MYSQL主从实现高可用。
10, Plugin instance-S3:插件运行所需要的对象存储,为每个需要存储文件的插件分配单独的桶。
11, Plugin instance-Squid:插件访问外部资源的代理服务器,按域名放通白名单。在安全要求较高的时建议部署。
以上11个组件组成WeCube Platform。

主要功能简介

WeCube的功能菜单设计与设计理念保持一致。分别是任务、设计、执行、监测、智慧、调整、协同、系统。

  • 系统

    • 系统参数:管理WeCube Platform运行所需的系统参数。
    • 资源管理:管理WeCube提供的资源如容器母机及资源上运行的实例。
    • 权限管理:管理WeCube Platform的用户,角色和菜单,可以对权限进行菜单级别的管控。
  • 协同

    • 插件注册:选择插件包上传,插件包需声明本插件的依赖、所需菜单、数据模型、系统参数、权限设定及运行资源,注册后通过容器运行,支持多实例,可以查看插件运行的日志。选择插件服务,通过插件运行的参数关联CMDB数据模型的属性值,形成注册。

    • 任务编排:比如设计一个VPC创建的编排。包括创建VPC、创建子网、创建VM。流程的每个执行节点需要关联插件。

  • 设计(WeCMDB插件提供)

    • 规划设计:用于设计机房结构。

    • 资源规划:用于实例化一个机房,特别是两地三中心结构。

    • 应用架构设计:用于设计一个应用的逻辑架构。

    • 应用部署设计:用于实际部署一个应用。支持灰度发布。

    • CI数据管理/查询:通过模型图形进入单个数据管理以及查询。

    • CI综合查询管理/数据综合查询:用于配制多CI属性报表。比如一个应用使用到了哪些主机。

    • 枚举数据管理/查询:通过对公共枚举和私有枚举进行管理以及查询。

  • 执行

    • 编排任务执行:在选择编排后可对选择目标对象执行编排,支持灰度操作。比如重启某个资源集的5台主机。

    • 物料管理(Artifacts插件提供):管理应用程序的包。可以定义各种文件,可以配置环境差异导致的变量替换规则,不需要人工处理。

    • 批量执行:通过配置综合查询并选择目标。在通过特定插件来执行任务。比如某个应用的所有主机,执行一个用户权限变更。

  • 任务(Service-Management插件提供)

    • 模板管理:服务目录管理, 服务请求模板管理;

    • 服务管理:服务请求管理,任务管理;

  • 监测(Open-Monitor插件提供)

    • Agent管理: 注册、启动、停止;

    • 数据管理: 提供数据采集配置, 数据查询等功能;

    • 告警管理: 提供阈值配置、日志监控、告警触发等功能;

    • 视图管理: 提供图形配置和自定义视图功能;

  • 调整(规划中)

  • 智慧(规划中)

核心流程时序说明:

插件注册时序图:
插件注册时序图

编排任务执行:
编排任务执行

快速入门

WeCube采用容器化部署。

如何编译WeCube,请查看以下文档 WeCube编译文档

如何安装WeCube, 请查看以下文档 WeCube部署文档

用户手册

更多关于WeCube的使用和操作说明, 请查看以下文档 WeCube用户手册

开发者文档

WeCube使用Java和VUE进行开发,数据存储于MySQL,并依赖Tomcat Web容器运行。

请参考以下文档进行开发环境配置WeCube开发环境配置

License

WeCube是基于 Apache License 2.0 协议, 详情请参考 LICENSE

社区

  • 如果您想得到最快的响应,请给我们提Issue或扫描下面的二维码,我们会第一时间反馈。

  • 联系我们:fintech@webank.com

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

WeCube是一套开源的,一站式IT架构管理和运维管理工具,主要用于简化分布式架构IT管理,并可以通过插件进行功能扩展。 展开 收起
Java
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/johntomyang/wecube-platform.git
git@gitee.com:johntomyang/wecube-platform.git
johntomyang
wecube-platform
wecube-platform
master

搜索帮助

14c37bed 8189591 565d56ea 8189591