数据传输服务DTS的应用场景(阿里巴巴)

news2024/11/26 3:57:03

数据传输服务DTS的应用场景(阿里巴巴)

数据传输服务DTS(Data Transmission Service)支持数据迁移、数据订阅和数据实时同步功能,帮助您实现多种典型应用场景。

不停机迁移数据库

  • 传输方式:数据迁移

  • 为了保证数据的一致性,传统的迁移过程需要您在迁移数据时停止向源数据库写入数据。 根据数据量和网络条件,迁移过程可能需要几个小时甚至几天的时间。 这个漫长的过程可能会对您的业务产生很大的影响。

  • DTS则可以帮助您以最小化的停机时间迁移您的数据。 在数据迁移期间,您的应用程序仍可以保持运行状态。 唯一的停机时间是当您将应用程序切换到目标数据库时。 通常,您可以将此切换窗口降低到分钟级别。 数据迁移的流程如下图所示。

  • 数据迁移过程包括三个阶段,即结构迁移、全量数据迁移和增量数据迁移。 在增量数据迁移期间,源数据库中正在进行的数据变更会实时同步到目标数据库。 迁移完成后,您可以验证迁移到目标数据库的数据和结构是否与您的应用程序完全兼容。 当验证通过后,即可将应用程序切换到目标数据库,从而实现平滑迁移。

数据异地灾备

  • 传输方式:数据同步

  • 如果您的应用程序部署在单个地域中,可能会因为断电、网络中断等不可抗因素而导致服务中断。

  • 针对这种情况,您可以在另一个地域构建灾备中心,以提高服务可用性。 DTS会在业务中心和灾备中心之间持续同步数据更新,并保持地域间副本同步。 如果主地域发生故障,您可以将用户请求切换到灾备地域。

异地多活

  • 随着业务的快速发展和用户数量的增长,如果业务部署在单个地域中,可能会面临如下问题:

    • 用户在地理位置上分布较广,地理位置较远的用户访问延迟较高,影响用户体验。

    • 单个地域底层基础设施的能力限制了业务扩展,例如供电能力,网络带宽建设能力等。

  • 为解决上述问题,您可以在同城/异地构建多个业务单元。各个业务单元之间通过DTS实现数据的双向实时同步,保障全局数据的一致性。当任何一个单元出现故障时,您只需将该单元的流量切换至其他单元即可,可实现业务的秒级恢复,有效地保障了服务的高可用性。

  • 您还可以根据业务的某个维度将业务流量分流至各个业务单元。例如,按照用户所属区域划分各单元的流量,实现用户就近访问,降低网络延迟,提升用户体验。同时,各个业务单元分布在不同的地域,可以有效解决单地域的基础设施限制业务扩展的问题。

加速全球化业务访问速度

  • 对于全球化业务,如果按照传统架构只在单个地区部署业务,那么跨境访问的用户访问服务时,访问延迟非常大,用户体验较差。为加速全球化业务访问速度,优化访问体验,您可以将架构调整如下。

  • 本方案中,所有地区用户的写请求全部路由回主业务中心。通过DTS将主业务中心的数据实时同步至次业务中心,各个地区的用户的读请求,则路由至就近的次业务中心,从而避免远距离访问,加速了全球化业务的访问速度。

助力快速搭建定制化BI系统

  • 传输方式:数据同步

  • 由于自建BI系统的复杂性,自建BI不能满足越来越高的实时性要求。阿里云提供了非常完善的BI体系,DTS可以帮助您将自建数据库实时同步至阿里云的BI存储系统(例如MaxCompute、分析型数据库或流计算等),助力您在阿里云上快速搭建满足自身业务的定制化BI系统。

数据实时分析

  • 传输方式:数据订阅

  • 数据分析在提高企业洞察力和用户体验方面发挥着举足轻重的作用,且实时数据分析能够让企业更快速、灵活地调整市场策略,适应快速变化的市场方向和消费者体验。

  • DTS提供的数据订阅功能,可以在不影响线上业务的情况下,帮助您获取实时增量数据。通过DTS提供的SDK,您可以将订阅到的增量数据同步至分析系统中进行实时分析。

轻量级缓存更新策略

  • 传输方式:数据订阅

  • 为提高业务访问速度,提升业务读并发,通常的做法是在业务架构中引入缓存层,让业务所有读请求全部路由到缓存层,通过缓存的内存读取机制来提升业务读取性能。由于缓存中的数据不能持久化 ,一旦缓存异常退出,那么内存中的数据将会丢失。

  • DTS提供的数据订阅功能,可以帮助您异步订阅数据库的增量数据,并更新缓存的数据,实现轻量级的缓存更新策略。

  • 该架构具有以下优势:

    • 更新路径短,延迟低

      业务完成更新数据库后直接返回,不需要关心缓存失效流程,整个更新路径短、延迟低。

    • 应用简单可靠

      应用无需实现复杂双写逻辑,只需启动异步线程监听增量数据,更新缓存数据即可。

    • 应用更新无额外性能消耗

      数据订阅通过解析数据库的增量日志来获取增量数据,不会对业务和数据库性能造成影响。

业务异步解耦

  • 传输方式:数据订阅

  • 电商行业涉及下单系统、卖家库存、物流发货等多个业务逻辑。如果将这些逻辑全部在下单流程中,需要全部变更完成后,才能返回下单结果。这种业务逻辑存在如下问题:

    • 下单流程和耗费的时间较长,用户体验差。

    • 系统稳定性差,任何一个下游发生故障,将直接影响整个业务系统的可用性。

  • 为提升核心应用用户体验和稳定性,您可以通过DTS提供的数据订阅,将深耦合业务优化为通过实时消息通知实现的异步耦合,让核心业务逻辑更简单可靠,具体调整为:

  • 该场景中,买家下单系统只要完成下单操作,就直接返回,底层通过DTS的数据订阅实时获取订单系统的变更数据,业务通过SDK订阅这些变更数据,并触发库存、物流等下游业务逻辑,实现了整个业务系统的简单可靠。

  • 该应用场景在阿里巴巴内部得到了广泛的应用,例如淘宝订单系统每天有上万个下游业务,通过数据订阅获取订单系统的实时数据更新,触发自身的变更逻辑。

横向扩展读能力

  • 传输方式:数据同步

  • 对于有大量读请求的应用场景,单个数据库实例可能无法承担全部的读取压力。您可以借助DTS的实时同步功能构建只读实例,将读请求分流至这些只读实例中,实现读能力的弹性扩展,分担主数据库实例的压力。

用于数据仓库的任务调度

  • 传输方式:数据迁移

  • 对于每天处理大量事务数据的大型在线应用程序,您可能需要采用“次日仓库策略”,定期将数据传输到数据仓库。 例如,您希望将迁移安排在业务低峰期,以便将当天的事务数据传输到数据仓库。 通过该部署,您的分析系统可以处理一天前的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/403179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【17】组合逻辑 - VL17/VL19/VL20 用3-8译码器 或 4选1多路选择器 实现逻辑函数

VL17 用3-8译码器实现全减器 【本题我的也是绝境】 因为把握到了题目的本质要求【用3-8译码器】来实现全减器。 其实我对全减器也是不大清楚,但是仿照对全加器的理解,全减器就是低位不够减来自低位的借位 和 本单元位不够减向后面一位索要的借位。如此而已,也没有很难理解…

Python3简单实现图像风格迁移

导语T_T之前似乎发过类似的文章,那时候是用Keras实现的,现在用的PyTorch,而且那时候发的内容感觉有些水,于是我决定。。。好吧我确实只是为了写点PyTorch练手然后顺便过来水一篇美文~~~利用Python实现图像风格的迁移!&…

Python实现性能测试(locust)

一、安装locustpip install locust -- 安装(在pycharm里面安装或cmd命令行安装都可)locust -V -- 查看版本,显示了就证明安装成功了或者直接在Pycharm中安装locust:搜索locust并点击安装,其他的第三方包也可以通过这种方式二、loc…

JavaScript Math(算数)对象

Math(算数)对象的作用是:执行常见的算数任务。在线实例round()如何使用 round()。random()如何使用 random() 来返回 0 到 1 之间的随机数。max()如何使用 max() 来返回两个给定的数中的较大的数。(在 ECMASCript v3 之前&#xf…

站外seo优化有用吗?值得投入时间和精力吗?

随着互联网的普及和竞争的激烈化,SEO(Search Engine Optimization,搜索引擎优化)已经成为各种网站推广的必备技能。 而站外SEO优化就是指通过在其他网站上增加链接和引用等方式,来提高自己网站的搜索引擎排名和曝光度…

【6G 新技术】6G数据面介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

window.onresize的详细使用

最近做的项目老是涉及到大小屏切换,但是因为屏幕宽高不一样的原因,老是要计算表格高度 window.onresize:监听window窗口变化,当窗口大小发生变化时,会触发此事件 含义 MDN中的定义是这样子的: 文档视图调…

GitHub与PicGo搭建免费稳定图床并实现Typora内复制自动上传

本文介绍基于Github平台与PicGo工具,构建免费、稳定的图床,并实现在Typora内撰写Markdown文档时,粘贴图片就可以将这一图片自动上传到搭建好的图床中的方法。 1 配置GitHub 首先,我们需要配置Github,创建一个仓库从而…

mysql 查询一个表的数据,并修改部分数据,再插回原来的表中,复制某个用户的数据给另一个用户

mysql 查询一个表的数据,并修改部分数据,再插回原来的表中,复制某个用户的数据给另一个用户 一、需求 我有一表日记的表,表中盛放着所有用户的日记数据。 在做演示项目的时候,我需要将一个用户的数据复制给另一个用户…

PlotNeuralNet + ChatGPT创建专业的神经网络的可视化图形

PlotNeuralNet:可以创建任何神经网络的可视化图表,并且这个LaTeX包有Python接口,我们可以方便的调用。 但是他的最大问题是需要我们手动的编写网络的结构,这是一个很麻烦的事情,这时 ChatGPT 就出来了,它可…

JavaScript学习笔记(3.0)

数组是一种特殊类型的对象。在JavaScript中对数组使用typeof运算符会返回“object”。 但是&#xff0c;JavaScript数组最好以数组来描述。 数组使用数字来访问其“元素”。比如person[0]访问person数组中的第一个元素。 <!DOCTYPE html> <html> <body>&l…

【JavaEE进阶】——第一节.Maven国内源配置

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 操作步骤 1.打开项目配置界面&#xff08;当前项目配置&#xff09; 2.检查并配置国内源 3.再次打开项目配置界面&#xff08;新项目配置&#xff09; 4…

Android RecyclerView的notify方法和动画的刷新详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 本篇讲解了RecyclerView关于通知列表刷新的常用的notify方法。和Recy…

综合练习7 摄氏度转华氏温度(“\t“的使用,循环语句)

综合练习7 摄氏度转华氏温度 使用do…while循环&#xff0c;在控制台输入摄氏温度与华氏温度的对照表。 对照表从摄氏温度-30℃到50℃&#xff0c;每行间隔10℃&#xff0c;运行如下&#xff1a; 摄氏温度&#xff1a;-30℃ 华氏温度&#xff1a;-22.0℉ 摄氏温度&#xff1a;…

【专项训练】动态规划-3

动态规划:状态转移方程、找重复性和最优子结构 分治 + 记忆化搜索,可以过度到动态规划(动态递推) function DP():# DP状态定义# 需要经验,需把现实问题定义为一个数组,一维、二维、三维……dp =[][] # 二维情况for i = 0...M:

自动化测试的定位及一些思考

大家对自动化的理解&#xff0c;首先是想到Web UI自动化&#xff0c;这就为什么我一说自动化&#xff0c;公司一般就会有很多人反对&#xff0c;因为自动化的成本实在太高了&#xff0c;其实自动化是分为三个层面的&#xff08;UI层自动化、接口自动化、单元测试&#xff09;&a…

井字棋--课后程序(Python程序开发案例教程-黑马程序员编著-第7章-课后作业)

实例2&#xff1a;井字棋 井字棋是一种在3 * 3格子上进行的连珠游戏&#xff0c;又称井字游戏。井字棋的游戏有两名玩家&#xff0c;其中一个玩家画圈&#xff0c;另一个玩家画叉&#xff0c;轮流在3 * 3格子上画上自己的符号&#xff0c;最先在横向、纵向、或斜线方向连成一条…

【Leetcode】【简单】35. 搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入:…

MSP430F5529单片机入门学习笔记1

本笔记整理自B站教程MSP430F5529单片机学习视频汇总基于库函数的开发—GPIO库函数右边部分写错了&#xff0c;看的时候注意基于库函数的开发—GPIO实践操作LED交替闪烁#include <msp430.h> /** EXP-GPIO-01.C** Created on: 2023年3月10日* Author: ASUS*/#include…

webRtc概念

webRtc概念 以下的文档整理来自此链接 文档整理了一系列实现web通用接口的ECMAScript APIs &#xff0c;这些接口是为了支持浏览器或者一些其他实现了实时交换协议的设备进行媒体信息和程序数据交换。 1、实现点对点通信的规范&#xff1a; NAT穿透实现与远端节点链接比如&a…