Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

1.0_DataLink总体架构

elevenqq edited this page Sep 30, 2018 · 2 revisions

架构模型介绍

下面是对DataLink架构模型重点模块的概要介绍:

Manager

  • Manager是整个DataLink集群的大脑
  • Manager有三个核心功能
  1. 担任整个集群的负载均衡协调器:当集群出现状态变更时,第一时间进行Re-Balance
  2. 负责整个集群的配置管理:提供管理后台,配置发生变更时进行事件通知、缓存刷新等操作,保证系统能够获取到最新的变更
  3. 监控整个集群的健康状况,主要有:同步是否出现延迟、同步是否出现异常、数据同步TPS、数据同步吞吐量、机器健康状况检查等等

Group

  • 分组是DataLink的一个核心概念,Worker和Task在运行之前必须先知道自己属于哪个分组
  • 分组的目的是:实现组内自治、组间隔离,不同分组会有不同的参数配置、运行策略、高可用级别等等

Worker

  • Worker必须归属于某个分组
  • Worker的核心功能是管理Task的生命周期,并配合Manager进行Re-Balance
  • Worker运行哪些Task受Manager的分配

Task

  • Task的核心功能是进行数据同步
  • 一个Task由一个TaskReader和多个TaskWriter组成,Reader和Writer使用独立的Classloader
  • Task必须归属于某个分组

(Re-)Balance

  • (Re-)Balance的定义:通过一定的负载均衡策略,使Task在Worker节点上均衡的分布
  • (Re-)Balance的单位是Group,一个分组发生(Re-)Balance不会影响其它分组的正常运行
  • 发生(Re-)Balance的时机
  1. Manager发生主备切换
  2. 新的Worker加入分组
  3. 某个Worker离开分组
  4. 新增Task
  5. 删除Task

Plugin

  • 插件模型最大的意义在于解耦和复用,只需要提供一套基础框架,开发一系列同步插件,通过配置组合便可以支持"无限多"的同步场景
  • 插件划分为两种:Reader插件和Writer插件,插件之间通过Task串联起来
  • Task运行时,每个插件都有自己独立的Classloader,保证插件之间的jar包隔离

Mysql

  • DataLink的运行需要依赖各种配置信息,这些配置信息统一保存到Mysql中
  • DataLink在运行过程中会动态产生监控和统计数据,这些数据也统一保存到Mysql中
  • 存储的配置信息主要有: 同步任务信息、工作节点信息、分组信息、数据源配置信息、映射规则信息、监控信息、角色权限信息等

Zookeeper

  • Manager的高可用需要依赖于zookeeper,通过抢占和监听"/datalink/managers/active"节点,实现秒级switch
    注:Worker的高可用并不依赖zookeeper,只要manager能够保证高可用,worker就是高可用的
  • Task会将运行时信息注册到zookeeper,注册信息主要有两类
  1. Task的状态信息(运行、暂停还是出错),通过状态信息可以监控task的健康状况
  2. Task的position信息,通过postion信息可以查看当前的同步进度,也可以实现故障恢复

Netty&Jetty

  • Manager使用Netty提供Tcp服务,用来监听Worker端发送的Coordinator信息(注:Netty只用来做高可用和负载均衡)
  • Manager使用Jetty提供Http服务,主要用来提供web管理功能和接收Worker发送的监控和统计数据
  • Worker使用Jetty提供Http服务,主要用来接收Manager发送的管理指令

Kafka-Client

  • DataLink套用了kafka的(Re-)balance协议
  • 在Worker端和Manager端分别定义了各自的Coordinate模块,这些模块都需要依赖kafka的client包

概念模型图

概念模型

基础(部署)架构图

基础(部署)架构

功能(层次)架构图

功能(层次)架构

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /