GithubHelp home page GithubHelp logo
MyDataHarbor photo

mydataharbor Goto Github PK

repos: 8.0 gists: 0.0

Name: MyDataHarbor

Type: Organization

Bio: :cn: MyDataHarbor是一个致力于解决异构数据源之间的分布式、高扩展性、高性能、微事务(至少一次保证)的数据同步中间件。帮助用户可靠、快速、稳定的对海量数据进行准实时增量同步或者定时全量同步,主要定位是为实时交易系统服务,亦可用于大数据的数据同步(ETL领域)。

Location: China

Blog: https://mydataharbor.com


logo

GitHub-CI 查看发行的版本 maven仓库 下载数量 开源协议 插件列表

欢迎前端、插件开发人员前来贡献代码,感兴趣的请联系我:[email protected]

简介/定位

🇨🇳 🚢 MyDataHarbor是一个致力于解决异构数据源之间的分布式、高扩展性、高性能、微事务(至少一次保证)、准实时的数据同步中间件。

它可以帮助用户可靠、快速、稳定的对海量数据进行准实时增量同步或者定时全量同步,主要定位是为实时交易系统服务,亦可用于大数据的数据同步(ETL领域)。

背景

在微服务的大背景下,实时交易系统的数据的分散存储已经成为常态,然而有时候我们需要对这些数据进行实时或者定时全量的同步到另外一个地方。

比如,一个公司的C部门的系统,需要用到A、B部门产生的数据,这时候避免不了进行全量或者增量的数据同步。再比如,数据库中的数据我要实时同步到elasticsearch、redis等等中进行搜索。

数据同步的应用场景在日常的分布式系统开发中非常常见,而且非常重要,一旦数据同步出现问题,将会导致数据不一致,引起其他严重的异常。

目前小公司的做法是在业务程序系统里修改代码,往目标数据源中写入数据,上点规模的公司的做法是,各个部门开发一套自己的同步小程序,没有管理,更可能没有监控,来一个需求开发一个、非常浪费资源,稳定性也得不到保障,而大公司则是有一套数据迁移平台(如阿里的精卫)。

MyDataHarbor在这种场景需求下应用而生!

特性

🚩分布式设计

MyDataHarbor是一个在zookeeper上构建的分布式中间件,支持水平扩展,对节点进行分组,各分组下的机器形成一个子集群,任务在子集群隔离范围内进行负载均衡,防止单点故障。

🚩插件式设计

高度合理的抽象、插件化的设计使得MyDataHarbor拥有很高扩展性,任何数据迁移的需求都可以通过开发插件完成。

🚩事务支持

MyDataHarbor设计之初就考虑到数据丢失问题,引入事务的支持保障数据不丢失!

🚩插件自描述

安装插件后中间件会自动识别这个插件的能力,并且生成用户UI友好的任务创建界面,不需要用户直接编写复杂的json配置。

🚩自由组合

MyDataHarbor支持从不同的插件中复用各种组件,形一个新的pipeline管道,并且这些都是可以通过可视化的方式进行。

🚩任务监控

对接java的jmx,每个任务都有详细的监控,实时查看任务的运行状态。

🚩批量支持

为可以批量进行提交的写入源预留批量接口通道,有效提升数据迁移速度,摩托变汽车。

🚩ForkJoin

对于DataSource无法多线程并发拉取的情况下(如jdbc游标取数据),内部引入forkjoin并发处理模型开启多线程处理,并且灵活的事务控制,让速度飞快的同时保证数据迁移的稳定、不丢失,汽车变高铁。

设计

MyDataHarbor唯一依赖的中间件是zookeeper,共有两个组件:mydataharbor-console、mydataharbor-server 集群设计 节点任务设计

支持的插件

详见 https://mydataharbor.yuque.com/staff-tzwgrd/uqew9p/pckin3

快速开始

MyDataHarbor的安装非常简单(启动前请先准备好zookeeper集群):

下载二进制包

下载地址:https://github.com/mydataharbor/mydataharbor/releases 下载列表:

  mydataharbor-console-xxx-bin.tar.gz
  mydataharbor-server-xxx-bin.tar.gz

xxx是发行的版本号

mydataharbor-console

解压

image-20210812143819918

配置

进入config目录,修改application.yml,主要修改如下配置

server:
  port: 8080 #console服务启动端口
zk: 127.0.0.1:2181 #zk地址

运行

Windows系统下运行 start.bat
Linux系统下运行 start.sh  关闭stop.sh

start.sh 脚本支持 jmx、debug、status参数 如:
start.sh jmx 启动远程jmx支持
start.sh debug 开启远程debug方式启动
start.sh status 查看当前程序状态

mydataharbor-server

解压

image-20210812144430744

配置

修改config目录下的system.yml

zk: ["127.0.0.1:2181"] #zk地址
port: 1299 #server服务启动端口
group: biz001 #该节点所属组
pluginRepository: http://127.0.0.1:8080 #插件仓库地址

运行

Windows系统下运行 start.bat
Linux系统下运行 start.sh  关闭stop.sh

start.sh 脚本支持 jmx、debug、status参数 如:
start.sh jmx 启动远程jmx支持
start.sh debug 开启远程debug方式启动
start.sh status 查看当前程序状态

验证

访问:mydataharbor-console  http://127.0.0.1:8080 是否可以看到刚刚启动的节点 image-20210812143819918

其它

demo运行实例:http://demo.mydataharbor.com

插件市场:https://www.mydataharbor.com/user/info.html

文档(语雀):http://doc.mydataharbor.com

QQ群(加群时需要验证项目star数,请star一下然后记下star数告诉管理员

QQ群

更新日志

2.0.0版本

1、新增 mydataharbor.ITaskStorage 接口,允许各组件在运行期持久化记录数据,并提供一个zookeeper的默认实现,每秒1次准实时同步,不影响性能。

2、默认将任务的监控信息通过持久化接口近乎实时的展示在管理台

3、任务修改重建功能

4、调整rebalance算法,新机器加入,将转移当前管道数大于任务分配节点数的任务

5、鉴于1.x使用用户可能较少,由于修复了一些拼写错误,接口名称变了,不再向1.x兼容,建议大家把任务移到2.x上,请谅解

MyDataHarbor's Projects

mydataharbor icon mydataharbor

:cn: MyDataHarbor是一个致力于解决任意数据源到任意数据源的分布式、高扩展性、高性能、事务级的数据同步中间件。帮助用户可靠、快速、稳定的对海量数据进行准实时增量同步或者定时全量同步,主要定位是为实时交易系统服务,亦可用于大数据的数据同步(ETL领域)。

mydataharbor-elasticsearch icon mydataharbor-elasticsearch

该项目是为MyDataHarbor实现elasticsearch的DataSource 和 Sink,让使用者可以从elasticsearch抽取数据,或者将数据写入elasticsearch。

mydataharbor-http icon mydataharbor-http

该项目是为MyDataHarbor实现http协议的Sink,让使用者可以将数据通过http发送给下游。

mydataharbor-jdbc icon mydataharbor-jdbc

该项目是为MyDataHarbor实现jdbc的DataSource 和 Sink,让使用者可以从数据库抽取数据,或者将数据写入数据库。

mydataharbor-kafka icon mydataharbor-kafka

该项目是为MyDataHarbor实现kafka的DataSource 和 Sink,让使用者可以从kafka抽取数据,或者将数据写入kafka。

mydataharbor-mongo icon mydataharbor-mongo

该项目是为MyDataHarbor实现MongoDB的DataSource 和 Sink,让使用者可以从MongoDB抽取数据,或者将数据写入MongoDB。

mydataharbor-redis icon mydataharbor-redis

该项目是为MyDataHarbor实现redis的Sink,让使用者可以将数据写入redis。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.