数据传输服务(Data Transmission Service,简称DTS)支持多种数据传输方式,包括数据迁移、数据同步及数据订阅。 您可以根据使用场景选择最适合的数据传输方式。

业务不停服迁移

传输方式:数据迁移

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

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

数据迁移流程

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

数据异地灾备

传输方式:数据同步

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

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

Geo-redundancy

异地多活

传输方式:数据同步

随着业务的发展,如果在单个地域中部署应用程序,您可能会遇到以下问题:

  • 访问应用程序的用户在地理位置上分布较广。 地理位置较远的用户访问延迟较高,体验较差。
  • 可扩展性受限于单个地域中基础设施的能力,例如网络带宽。

为了应对这些挑战,您可以在同一个城市或不同的城市建立多个业务单元。 各个业务单元之间通过DTS实现数据的双向实时同步,以保持地域间副本同步。 如果一个业务单元发生故障,您只需要将流量切换到其他业务单元即可。 应用程序可以在几秒钟内恢复。 通过这种方式,您可以基于多个业务单元的冗余来实现更高的可用性。

您还可以跨业务单元分配流量。 例如,您可以将每个业务单元的流量重定向到离用户最近的服务器。 这样可以降低网络延迟,提升用户体验。

Active geo-redundancy

与BI系统集成

传输方式:数据同步

阿里云提供完善的BI产品体系。 您需要将应用程序集成到阿里云的BI存储系统,从而充分利用基于云的BI功能。 DTS可以帮助您将自建数据库实时同步到阿里云的BI存储系统,如MaxCompute。

数据实时分析

传输方式:数据订阅

数据分析对于提高企业洞察力和用户体验至关重要。 凭借分析实时数据的能力,企业可以调整营销策略,适应不断变化的市场,满足更高的用户需求。

通过DTS的数据订阅功能,您可以在不影响线上业务的情况下获取增量数据。 您可以使用标准的Kafka客户端SDK将订阅的增量数据流式传输到分析系统,以便对最新的事务数据进行分析。

Realtime Analytics

轻量级缓存更新

传输方式:数据订阅

为了提高应用程序的响应时间,一种常用的策略是引入缓存层,通过缓存层的内存读取机制提高并发读取请求的性能。 所有读取请求都被定向到读取处理程序。 通过内存读取机制,读取处理程序能够以更好的性能处理读取请求。

DTS提供的数据订阅功能,可以帮助您订阅主数据库的数据变更,并实时更新缓存的数据,以实现轻量级的缓存更新。

Simple Cache

该架构具有以下优势:

  • 低延迟写入

    写入请求在更新提交到数据库后立即完成。 缓存更新操作在并行进程中处理。 应用程序不必等待缓存更新。

  • 简化的应用程序逻辑

    应用程序不必将相同的更新写入两个副本。 相反,它只需要订阅更新流,在并行进程中相应地更新缓存。

  • 数据库上无额外性能开销

    DTS从重做日志中检索数据更新。 此过程不会干扰读/写数据库的正常事务,也不会产生性能开销。

业务解耦和异步处理

传输方式:数据订阅

典型的网上购物系统包括订单管理、库存管理和物流管理等组件。 在同步处理模型中,所有在相应组件中需要执行的依赖操作必须与下单操作集成。 这意味着用户必须等到所有更新都提交后才能确认订单。 同步处理模型有以下问题:

  • 下单操作需要很长时间才能完成。
  • 由于多个操作集成到一个步骤中,任何组件中的单个故障都可能使整个功能失败。

要解决这些问题,您可以部署一个具有解耦组件的系统,其中每个事务都会触发对相应组件数据库的异步更新。 使用DTS的数据订阅功能,各个组件都可以订阅数据更新并相应地进行后续处理。 该架构将核心组件与其他组件分离,使核心组件能够更稳定地运行。

下图显示了解耦组件之间的异步处理逻辑。

Decoupling

该场景中,订单管理组件会在用户下单后立即返回结果。 DTS的数据订阅模块获取数据更新,并以“发布/订阅流”的形式传输这些数据更新。 其他组件可以使用标准的Kafka客户端订阅数据更新,然后进行后续处理,如库存更新和发货处理。

该架构已经应用到阿里巴巴集团内的各种业务。 每天,数以万计的应用通过DTS的数据订阅功能订阅淘宝订单管理系统的数据更新,并行完成后续处理。

横向扩展读能力

传输方式:数据同步

为了处理大量并发读取请求,您可以将工作负载分配给多个只读数据库实例。 为此,您可以使用DTS的数据同步功能将数据实时同步到只读实例。 该横向扩展架构可以帮助您处理超高并发读取的工作负载。

用于数据仓库的任务调度

传输方式:数据迁移

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