精华内容
下载资源
问答
  • ES数据同步方案
    千次阅读
    2021-02-04 01:06:52

    当业务量上升后,由于mysql对全文检索或模糊查询支持的能力不强,在系统中查询的地方,往往会出现慢sql等,拖累系统其他模块,造成性能低下。

    随着ES使用普及率的升高,ES是mysql的一个有效补充。我们可以将数据发送到搜索引擎(如ES)上,由搜索引擎来提供专业的服务。

    接下来,就结合工作中实际用到的场景,对数据从mysql到es的同步进行一些分析。

    在实践中我总结出了以下几种方式。

    第1种:同步双写

    这是一种最为简单的方式,在将数据写到mysql时,同时将数据写到ES,实现数据的双写。

    优点:

    业务逻辑简单。

    缺点:

    硬编码:有需要写入mysql的地方都需要添加写入ES的代码;业务强耦合;存在双写失败丢数据风险;性能较差:本来mysql的性能就不是很高,再加写一个ES,系统的性能必然会下降。说明:

    上面第3点讲到的双写失败风险,包括以下3种:

    ES系统不可用;应用系统和ES之间的网络故障;应用系统重启,导致系统来不及写入ES等。针对这种情况,有数据强一致性要求的,就必须双写放到事物中来处理,但是一旦用上事物,则性能下降更加明显。

    第2种:异步双写(MQ方式)

    针对第一种同步双写的性能和数据丢失问题,可以考虑引入MQ,从而形成了异步双写的方案,如下图所示:

    由于MQ的性能基本比mysql高出一个数量级,所以性能可以得到显著的提高。

    优点:

    性能高;不存在丢数据问题。缺点:

    硬编码问题:依然存在业务强耦合:依然存在复杂度增加:系统中增加了mq的代码,;可能存在时延问题:程序的写入性能提高了,但是由于MQ的消费可能由于网络或其它原因导致用户写入的数据不一定可以马上看到,造成延时。第3种:异步双写(Worker方式)

    上面两种方案中都存在硬编码问题,也就是有任何对mysq进行增删改查的地方要么植入ES代码,要么替换为MQ代码,代码的侵入性太强。

    如果对实时性要求不高的情况下,可以考虑用定时器来处理,具体步骤如下:

    数据库的相关表中增加一个字段为timestamp的字段,任何crud操作都会导致该字段的时间发生变化;原来程序中的CURD操作不做任何变化;增加一个定时器程序(京东内部叫Worker),让该程序按一定的时间周期扫描指定的表,把该时间段内发生变化的数据提取出来;逐条写入到ES中。入下图所示

    优点:

    不改变原来代码,没有侵入性、没有硬编码;没有业务强耦合;不改变原来程序的性能;Worker代码编写简单不需要考虑增删改查。缺点:

    时效性较差,由于定时器工作周期不可能设在秒级,所以实时性没有上面2中好;对数据库有一定的轮询压力,一种改进方法是将轮询放到压力不大的重库上。第4种:Binlog 同步方式:

    上面三种方案要么有代码侵入,要么有硬编码,要么有时延,第4中方案,可以利用mysql的binlog来进行同步

    具体步骤如下:

    1) 读取mysql的binlog日志,获取指定表的日志信息;

    2) 将读取的信息转为MQ;

    3) 编写一个MQ消费程序;

    4) 不断消费MQ,每消费完一条消息,将消息写入到ES中。

    优点:

    没有代码侵入、没有硬编码;原有系统不需要任何变化,没有感知;性能高;业务解耦,不需要关注原来系统的业务逻辑。缺点:

    构建Binlog系统复杂;也像方案二,存在MQ延时的风险

    更多相关内容
  • 系统数据同步方案

    千次阅读 2019-01-24 23:21:58
    一.RabbitMQ分布式集群架构 ...RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovel cluster: 不支持跨网段,用于同一个网段内的局域网 可以随意的动态增加或者减少 节点之间需要...

     

    一.RabbitMQ分布式集群架构

    设计集群的目的

    • 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行
    • 通过增加更多的节点来扩展消息通信的吞吐量

    1 集群配置方式

    RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovel

    • cluster:
    • 不支持跨网段,用于同一个网段内的局域网
    • 可以随意的动态增加或者减少
    • 节点之间需要运行相同版本的RabbitMQ和Erlang
    • federation:应用于广域网,允许单台服务器上的交换机或队列接收发布到另一台服务器上交换机或队列的消息,可以是单独机器或集群。federation队列类似于单向点对点连接,消息会在联盟队列之间转发任意次,直到被消费者接受。通常使用federation来连接internet上的中间服务器,用作订阅分发消息或工作队列。
    • shovel:连接方式与federation的连接方式类似,但它工作在更低层次。可以应用于广域网。

    2 节点类型

    • RAM node:内存节点将所有的队列、交换机、绑定、用户、权限和vhost的元数据定义存储在内存中,好处是可以使得像交换机和队列声明等操作更加的快速。
    • Disk node:将元数据存储在磁盘中,单节点系统只允许磁盘类型的节点,防止重启RabbitMQ的时候,丢失系统的配置信息。

     

     

     

    二.数据同步技术架构

     

    展开全文
  • java数据实时同步系统

    2015-01-30 14:39:09
    java数据实时同步系统,把远程数据库数据实时同步到本地数据库
  •  JD_databus是为满足多数据中心项目的mysql在数据中心间复制的需求所产生的。最开始JD_databus是在LinkedIn的databus的基础上开发的,本次设计考虑到可维护性、代码的简洁、需求的快速迭代,决定重新开发。设计和...

    目录

    介绍

    特性

    架构总述


    介绍

           JD_databus是为满足多数据中心项目的mysql在数据中心间复制的需求所产生的。最开始JD_databus是在LinkedIn的databus的基础上开发的,本次设计考虑到可维护性、代码的简洁、需求的快速迭代,决定重新开发。设计和开发过程中参考了Databus、Canal/Otter的一些好的思路,对于Binlog解析部分则直接使用了她的dbsync模块。

    特性

    • 基于MySQL的ROW Binlog进行双向复制,可以实现MySQL的双主、多主模式;
    • 自动负载均衡、故障切换;
    • 基于Binlog日志位置或时间点回滚/重做;
    • 可指定跳过阻塞复制的SQL;
    • 可批量合并SQL、优先并行入库,失败自动降级为串行入库;
    • 复制延迟监控报警;
    • 内置丰富的可视化节点状态、metrics;
    • 和UMP、JONE集成;

    架构总述

    Pipeline

    复制管道由SDBI(源数据库实例)、RS(Relay Server,缩写下同)、RC(Replicator Client,缩写下同)、TDBI(目标数据库实例)这四个组件组成。RS通过mysql的复制协议拉取SDBI的binlog增量变更事件,RC通过自定义RPC协议从RS拉取事件,然后使用JDBC协议写入TDBI。

    Group

    若干同类pipeline的集合。最主要用于在多数据中心时区分pipeline的方向。方向之所以重要是因为跨数据中心时要优先考虑将RS和SDBI就近部署、RC和TDBI就近部署。

    Scheduler

    调度器将一个Group范围内的各个pipeline分配到可用的Relay Containers和Replicator Containers。一个Group下只有一个Active的调度器实例。目前默认基于Zookeeper来实现调度器的Active/Standby。

    Checkpoint Store

    RC拉取并处理完事件后ACK给RS,后者会将本管道SDBI的合适的事件位置(事务头尾、DDL事件前后)写入Checkpoint Store,以便故障重启时自身或其他RS从该位置继续拉取增量事件。目前默认在Zookeeper上存放。

    Domain

    同一业务域的多个group的集合。在Jingobus管理系统中,业务域会关联起JONE中的应用,获取到应用负责人和成员信息。业务域可以有自己独立隔离的Meta Service/Metrics Service/Coordinator/Config Service,也可以使用公共的服务。

    Meta Service

    元数据服务为RS/RC提供相关Pipeline的元数据信息,比如SDBI、TDBI等连接信息,以及库表的Schema信息(Schema服务第二期未实现,TODO)。

    Metrics Service

    Metrics Service为各个管道的性能指标提供存储、查询、统计服务。目前采用了Kairosdb(+Cassandra)这个时间序列数据库来实现。

    Monitor Service

    Monitor Service通过worker定期扫描各个管道的关键性能指标(复制延迟、心跳时间),超过阈值则报警。目前默认使用UMP的自定义报警发送给业务域相关人员,只需要在业务域中配置相应的UMP自定义报警Key即可。

    Coordinator

    目前通过Zookeeper来实现Group范围内Relay Containers/Replicator Containers的注册、故障切换、负载均衡。

    Config Service

    为 Relay Containers/Replicator Containers提供统一配置服务。(二期未实现,考虑集成交易的TPConfig,TODO)

    Relay Container

    最小部署单元(进程)。一个Relay Container为一个Group服务,启动后在Coordinator上注册,被Scheduler分配/取消一个Pipeline后,则内部启动/停止一个RS,并注册/反注册到Coordinator上。

    Replicator Container

    最小部署单元(进程)。一个Replicator Container为一个Group服务,启动后在Coordinator上注册,被Scheduler分配一个Pipeline后,则内部启动一个RC,从Coordinator上发现相应的RS,并将RC注册到Coordinator上。

    Metrics Reporter

    Relay Container/Replicator Container通过dropwizard的metrics库采集的各种性能指标,通过Metrcis Reporter定期上报给Metrics Service。目前直接采用Http协议。

    Restful Interface

    Relay Container/Replicator Container通过内置的http server(使用vertx)暴露Restful API供管理端调用,查看相关pipeline上RS/RC的各种实时状态,或重启、回滚等操作。

    RR

    在双向复制中,Relay Container和Replicator Container经常成对出现,为简化部署,RR组合了Relay Container和Replicator Container的功能,作为另一种最小部署单元。

    展开全文
  • 系统同步数据方案(ETL的Kettle)

    千次阅读 2020-05-13 17:44:46
    一、工具准备 Kettle下载。这个软件虽然是开源的,但是资源非常少,国内下载速度也慢。之前是先下载的8.1版本,... 在id角标记录表取上次已经同步到的id,从正式表筛选此id之后的数据输出到临时表,然后再由临时...

    一、工具准备

    Kettle下载。这个软件虽然是开源的,但是资源非常少,国内下载速度也慢。之前是先下载的8.1版本,今天下载的最新版本9.0。以下验证是在8.1版本上面验证的。

    二、简单使用与可行性验证

    1. 转换

    转换使用主要是验证了数据库表的输入、输出,实现数据转存。

     

    设置变量

     

    2.作业

    设计了一个增量插入同步的作业,异常发送邮件。

     

    三、详细设置

    设计思路:

             在id角标记录表取上次已经同步到的id,从正式表筛选此id之后的数据输出到临时表,然后再由临时表同步到目标数据库的表,同步完成后在id角标记录表插入已经同步到的id记录。

    这个根据id值增量插入同步的作业依赖3个转换,这里我就按照设计顺序,截取每个点的配置图让大家看明白。

             START

            

             建id角标标初始角标数据:

            

    转换设置id角标到变量:

            

             它包含的转换配置截图:

            

            

    删除转储临时表上次的转储数据:

     

    正式通行数据到临时通行数据:

     

             它包含的转换的配置如下:

            

     

             如果字段不一致,就执行输入字段映射。

    临时通行数据到目标通行数据:

             它包含的转换配置如下:

             字段不一致,可以自行输入字段映射。

    插入数据同步id角标记录:

    发送邮件:

             这里我设置了带附件,不过邮件里并没有发现带附件,有这块的需求可以进一步研究。

    成功:

             这个节点没有任何配置

    最后说下各节点之间的连线,光标放在线上点击右键有相关属性设置。线上的勾/叉也是可以点击的,分别表示条件真假。

    四、测试效果

    日志的级别很多,有一个非常详细,在测试自己写的这个作业的时候,可以看。

    作业度量,每一个节点执行的结果也很清楚。

    另外,作业链路上每一个执行通过的节点都会打钩,没有通过报错的就会是叉。

    收到的邮件:

    邮件配置,还是可以设置的很详细的,可以自己测试。

    五、总结

    1. 使用kettle数据库增量同步可行
    2. 多表数据同步,需要多个作业运行,数据量大的情况,数据库的压力需要考虑
    3. 查看了门禁业务系统的数据表,表字段id是字符串,有数字也有uuid不适合做增量数据筛选,但是有更新时间字段,可以使用更新时间作为增量筛选条件。(现在大家明白为啥会要求表有更新时间字段,同时更新要设置时间值了吧?方便别人也方便自己)
    4. 同步出现异常的补偿机制需要制定,提前预估规避风险

        5、软件开源,新版本资料偏少,老版本功能不够,后期维护需要考虑(感觉维护成本比代码方式高)

     

     

    展开全文
  • 问题:传统数据同步方式为周期全量数据同步,但随着业务发展数据量的急剧增加,周期全量同步的效率太低了。 解决方案:每个周期只同步增量数据,然后与上一个同步周期获取的全量数据进行合并,获取最新版本的全量...
  • mysql与ElasticSearch数据同步方案

    千次阅读 2020-08-09 12:22:09
    同步方案 首先,要把mysql数据导入ES,(怎么导入这里不再讲解,网上资料比较) 方案一 监听mysql的binlog,分析binlog将数据同步到ES集群中 优点:业务与ES数据耦合度低,业务逻辑中不需要关心ES数据的写入。 缺点...
  • 两个系统之间数据同步

    千次阅读 2020-05-23 21:50:40
    本文所讨论的数据同步是指分别部署的系统之间的数据同步数据同步可分为三类:实时同步、定时同步、手动同步。 同步方案可分为:数据库同步、读写文件同步、直接调用接口同步。 2.数据同步 同步讲究数据...
  • 项目开发阶段遇到一个需求,描述大致就是同一个用户在A系统数据库保存的数据信息与在B系统数据库保存的数据信息要保持同步。当A系统用户修改了个人信息,A系统后台在将用户修改后的信息入库的同时也会向B系统发送...
  • 不同业务场景下数据同步方案设计

    千次阅读 2018-09-06 23:41:09
    企业开发实践中通常需要提供数据搜索的功能,例如,电商系统中的商品搜索、订单搜索等。通常,搜索任务通常由搜索引擎担当。如Elasticsearch。而我们的原始数据为了安全性等问题通常存储在关系型数据库中。在搜索...
  • SyncNavigator是一款功能强大的数据库同步软件,适用于SQLSERVER, MySQL,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据库同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用...
  • 上海立邦TU报销系统,是上海立邦集团针对内部的报销的业务,编写的一套系统,此系统主要特点是和Web、SAP和Notes等系统实现无缝对接,从而完成整体业务的流转,目前立邦已经存在SAP报销系统、Notes系统,情况如下: ...
  • 1、 早期关系型数据库之间的数据同步 1)、全量同步 比如从oracle数据库中同步一张表的数据到Mysql中,通常的做法就是 分页查询源端的表,然后通过 jdbc的batch 方式插入到目标表,这个地方需要注意的是,分页...
  • 一、早期关系型数据库之间的数据同步二、大数据时代下的数据同步三、总结一、早期关系型数据库之间的数据同步1)、全量同步比如从oracle数据库中同步一张表的数据到Mysql中,通常的做法就...
  • 王者荣耀的数据同步方案_DDS

    千次阅读 2022-01-07 13:33:37
    之前说到ctk用于一个大型软件内部各模块之间的数据交互,这一篇讲述在大系统场景下,各分系统如何进行数据同步。这里我们用到了DDS数据分发服务器 那什么是DDS服务器呢? 直接数字式频率合成器DDS(Direct Digital ...
  • 数据同步与分发实现

    千次阅读 2020-11-25 14:12:38
    近期工作主要是为某装备制造企业的主数据治理项目做准备,熟悉主数据治理方案中数据的同步分发以及数据初始化全过程,以组织主数据为案例在本地搭建整套组织主数据功能模型、数据同步流程、分发流程以及数据初始化...
  • 终端同步方案

    千次阅读 2019-07-24 16:57:40
    一、终端同步的含义 1指用户在个终端切换时可获得一致性体验,不丢失上下文, 2 如果用户个终端同时在线要能做到实时同步。 案例:apple的Handoff;qq消息终端自动同步;有道云的同步等 二、系统目标 1...
  • 随着业务的发展,公司的整体架构方向向...在某些复杂的业务场景下,基于原表(未分库前的商品信息)的一次join操作,在新的表结构下需要做次跨库join。基于此场景,最终确定了技术方案: 对于简单的跨库join操...
  • DataX 数据全量,增量同步方案

    万次阅读 热门讨论 2019-04-26 23:38:42
    增量更新总体思路:从目标数据库读取一个最大值的记录,可以是DataTime 或者 RowVersion 类型,然后根据这个最大值对源数据库要同步的表进行过滤,然后再进行同步即可。 由于DataX 支持多种数据库的读写,一种...
  • 数据同步系统

    千次阅读 2018-06-09 05:47:28
     数据同步是在数据节点之间进行。同步是节点表之间的数据的提取,转换,写入过程。数据在节点之间的同步,不要求强一致性,只需要保证最终一致性。 数据节点标识,命名,存储:对每个数据节点,全局唯一dsid编码和...
  • Redis与数据库数据同步解决方案

    万次阅读 多人点赞 2017-10-11 16:43:06
    本文转自:http://3gods.com/2016/06/23/Redis-Sync-DB.html ... 数据库同步到Redis 我们大多倾向于使用这种方式,也就是将数据库中的变化同步到Redis,这种更加可靠。Redis在这里只是做缓存。 ...方案1 做...
  • 数据同步流程方案记录

    千次阅读 2016-10-27 15:04:35
    需求:服务器一份数据个客户端使用。客户端可以增删查改,尽可能得在最短的时间内使所有客户端数据一致。1.方案一给每一条数据加入时间戳这一字段,通过时间戳判断哪一条数据是最新的。同步时取客户端最大的...
  • 大数据之路——数据同步

    千次阅读 2021-11-11 10:13:27
    三、数据技术篇—— 数据同步3.1 数据同步基础 @3.1.1 直连同步3.1.2 数据文件同步3.1.3 数据库日志解析同步3.2 数据仓库同步方式3.2.1 批量数据同步3.2.2 实时数据同步3.3 同步遇到的问题3.3.1 分库分表3.3.2 增量...
  • “游戏数据同步方案

    千次阅读 2016-12-01 17:39:58
    “游戏数据同步方案” 首先我们介绍实时对战手游中最难解决的技术问题——弱网络下的同步问题。 通过对玩家的游戏数据进行观察,发现玩家的游戏环境存在很大差异,不同玩家会使用不同的2G/3G/4G/...
  • Mysql数据同步ES

    千次阅读 2021-12-08 10:41:01
    有人说加索引,加索引确实可以提升查询速度,但是索引也是成本,MySQL 中加个索引最终在执行 SQL 的时候它只会选择成本最低的那个索引,如果没有索引满足搜索条件,就会触发全表扫描,出现慢sql等性能低下,而有些...
  • APP开发实战10-APP数据同步方案

    千次阅读 2016-05-11 22:07:32
    3.3数据同步方案 3.3.1 文件的同步 通常图片都需要在APP端做缓存处理,所以从服务器端返回图片链接的时候,一定要同时返回图片最新修改的时间戳。APP根据本地存储图片的时间戳和从服务器获取的时间戳对比,判断...
  • mysql数据同步es方案思考

    千次阅读 2019-01-23 20:15:37
    大体方案 1. 双写 优点: 简单,灵活 缺点: a. 业务代码耦合严重. b. 如何保证双写成功? c. 同步双写会增加响应时间 2. 消息队列 优点: 简单 缺点: a. 业务代码耦合 b. 需要保证写入MQ成功 c. 需要保证...
  • 数据同步方案

    千次阅读 2016-12-06 22:02:38
    作为业务系统的开发设计人员,数据及数据同步是非常重要的工作之一。
  • Java线程的同步优化的6种方案

    万次阅读 2020-06-24 17:44:34
    Java中可以使用锁来解决线程的同步问题,保障了数据的一致性,但也会代理很问题,本章总结了线程同步的几种优化方案:包括读写锁、写时复制机制、锁细化等方案

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 388,649
精华内容 155,459
关键字:

多系统数据同步方案