【问题标题】:Large Data transfer from one Service to another从一项服务到另一项服务的大数据传输
【发布时间】:2021-05-30 19:23:33
【问题描述】:

在我的一次采访中,有人问我一个问题,当您需要将位于一个数据库中的数百万数据传输到另一个服务时,您将如何有效地设计一个系统?

在不影响可扩展性和吞吐量的情况下,最有效的设计方式应该是什么?

【问题讨论】:

    标签: java microservices event-sourcing system-design


    【解决方案1】:

    我会说更多的是检查思维方式,然后寻找生产就绪的解决方案。

    作为一名顾问,我会从“视情况而定”开始。 :)

    首先 - 需要更多细节。它到底有多大?该操作多久发生一次?它有多重要?有人可以访问服务器吗?

    万一真的大事-https://aws.amazon.com/snowmobile/

    如果这种情况发生一次,并且可以访问两个服务器 - 也许是简单的解决方案 - 有人可以复制吗?

    但我的假设是这个问题是关于用 Java 做的。 TCP / TLS 在安全性、数据完整性方面是否足够好?对我来说没关系,但问题是展示思维方式......下一步是实际处理。这将需要一些时间 - 如何知道我们是同步的?我们可以使用关系数据库,这是一个有点旧的解决方案,但是......广泛使用,经过良好测试。然后使用序列化隔离启动事务将完成这项工作。还有一个问题是如何重新启动整个操作?除此之外,持久的事务对于 DB 来说并不完美。所以,如果有可能使用队列 - 我会使用它。这有点复杂,需要更多资源,但如果该操作至关重要,和/或经常发生?

    【讨论】:

      【解决方案2】:

      涉及许多因素,但是考虑到您正在谈论将数据从数据库移动到服务,我们正在谈论服务。所以在这里我会做什么:- 通过引入队列机制来设计异步进程或框架。该框架将能够根据使用情况进行扩展和缩减。在应用程序和从中传输数据的主机系统之间引入一个集成层。让它成为 AWS SQS / Google PUBSUB 之类的。让您托管系统将其数据流式传输给它,然后让您的框架从那里提取数据并将其异步移动到服务中。根据负载等扩展您的服务。

      【讨论】:

        猜你喜欢
        • 2016-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        • 2020-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多