zoukankan      html  css  js  c++  java
  • 《数据蜂巢架构演进之路》阅读笔记

      大二我们便接触到了mysql数据库,而各业务系统为使用mysql的业务数据,重复开发出多套数据同步工具,一方面难以管理,另外部分工具性能也偏差。需要一个统一为mysql数据提供同步服务的平台。该平台需支持离线同步,实时订阅,实时同步三大基本功能。以下是我的阅读笔记:

    一、功能整合

      1、各功能如何实现?

      离线同步:可理解为将根据一个sql查询出的数据同步到其它目标存储上;

      实时订阅:通过实时解析mysql-binlog,将数据的变动封装成事件存于消息队列,供用户订阅消费;

      实时同步:提供一些常见的订阅客户端料现,实时消费消息,将数据的变动应用于目标存储上。

    二、任务细节

      以下为各个Job进行分片后生成的Task内部具体实现细节

      1、BatchTask

      Fetcher负责抽取数据,Sinker负责写入数据,Storage为缓存层。

      2、StreamTask

      RelayLogTask负责拉取binlog;HHLTask负责解析Binlog,并将解析出的数据变更事件封装为易使用的消息体,最后存入hhl中。

      hhl的实现借鉴了Kafka,可看作一个简易版的消息队列。消息使用protobuf序列化,压缩后顺序写入文件。同时提供了指定大小的索引块。

     三、集群

      使用Master-Slave结构,如下图所示:

     

      Master这里称之为Queen;Slave这里称之为Bee。

      Queen负责作业的分片,调度;Bee负责任务的具体执行(任务由作业分片后得到)。

    个人总结:

      1、高可用

    i.Mysql:mysql的高可用由dba维护,但mysql主从切换后对应的位点会不同,此处通过监测serverId的变更来发现主从切换,主机切换后通过时间在新实例上查找对应位点;

    ii.Queen:通过zookeeper来实现Active与StandBy的切换

    iii.Bee:宕机后Queen会将该主机上运行的所有任务切换到其它机器上

      2、数据本地性
    每一台Bee都有自己的机柜,机架,机房,分组信息。作业运行时可以指定自己的喜好,任务会优先分到指定的机器分组上
      3、负载均衡
    Bee在运行时会通过心跳汇报自己负载情况,当一个任务需要调度时,Queen会在满 足数据本地性的前提下优先将任务分发到负载低的主机上。
     
     
     
    转自https://mp.weixin.qq.com/s?__biz=MzU1MzE2NzIzMg==&mid=2247485060&idx=1&sn=2d374061f2f85c453cc27d092a5354ad&chksm=fbf7b66bcc803f7dde316a4edbb40d9e6074640ef95ca7b1095b3d885433c991115ac00f1d9b&scene=21#wechat_redirect
  • 相关阅读:
    Win7 SP1 安装SQL Server 2012时提示“此计算机上的操作系统不符合 SQL Server 2012的最低要求”
    ajax jsonp跨域
    Caused by: Unable to locate parent package [json-package] for [class com.you.action.ColumnAction]
    PHP MVC自己主动RBAC自己主动生成的访问路由
    Service与Activity与交流AIDL
    SVN常见错误两项纪录
    EL表达式语言
    oracle11g ASM(修复损坏的磁盘组头asm修复2)
    如何使用iOS 8 指纹识别,代码、示例
    EXCEL Pivot table manipulate
  • 原文地址:https://www.cnblogs.com/liurx/p/11053042.html
Copyright © 2011-2022 走看看