首页 > 解决方案 > 在休息时传输大量数据

问题描述

我目前正在开发两台服务器之间的休息服务。X 应用程序向 Y 发送一个对象,但该对象包含成百上千个子对象。X 应用程序收集所需的数据然后转换为 dto 并将此 dto 发送给 Y 应用程序。

例如;

        A
       / \
      B   B
     /     \
    C       C
   /\       /\
  D  E     D  E

我的问题是;

  1. 在休息时传输所有这些数据是否可靠?
  2. Y 应用程序使用 Hibernate。Hibernate 在插入数据之前运行选择查询,这会导致大量工作负载。我怎样才能防止这种情况?
  3. 在我看来,将所有这些数据交织在一起是脆弱的,并不真正可靠。我能做些什么?

您认为完成我想要实现的整个过程的最佳方法是什么?

标签: javaspringhibernaterest

解决方案


就 REST 上的海量数据而言,我提供以下方法。

  1. 正如 Boris Sir 所建议的,您可以在 Rest 中采用 Reactive Stream 概念。
  2. 如果数据有点大,不建议将所有数据都以 Json 或 Xml 形式发送。您可以将限制条件作为参数,以便根据限制发送数据。考虑一种情况,您正在向 github 查询所有现有存储库,并且每个存储库可能有多个文件,在这种情况下,您可以使用 limit 作为请求参数。
  3. 如果您认为要通过 Rest 发送的数据很大或中等大小但不会过大,您可以在通过 Rest 发送数据时使用 gzip 压缩(Accept-Encoding: gzip,deflate , Content-Encoding: gzip)。

除了我看到你有数据的分层模型之外,最好有分类和每个类别的单独休息端点有限制。更具体地说,如果A是一种类别,则获取具有一定限制的A类别类型的所需数据,其他类似。


推荐阅读