java - 如何提高客户端-服务器架构应用程序的性能?

标签 java performance client-server rmi

我们有一个基于客户端-服务器架构的产品。有关所使用的技术堆栈的一些详细信息。

  • 客户端 - Java Swing
  • 服务器 - RMI
  • Java 数据库 - Oracle

客户端位于世界不同地方,但java服务器和oracle数据库位于瑞典的同一台机器上。因此,存在大量网络延迟。位于遥远地点的客户端的性能很差。该应用程序用于处理大小超过50MB的文件。每个操作一般需要大约超过 1000 次网络调用。

根据您的经验,您如何解决这个问题并提高性能?

编辑:回答几个问题

  1. 文件包含需要处理和更新到数据库的实际业务数据,不能部分发送。
  2. 一些网络调用可以批量处理,但这需要对代码进行重大重构。这是一个非常古老的应用程序,编写于 2001 年。应用程序的设计是这样的,服务器保存所有服务,并且它们可以跨代码重用,业务逻辑写在客户端。因此,该业务逻辑多次调用服务器,因此是一个天文数字。

-斯内哈尔

最佳答案

减少往返次数

单次操作 1000 次往返是一个天文数字。您绝对不应该看到这些数字。

尽管如此,50MB 文件仍然存在问题。在这种情况下,您要么需要找到一种方法来提高传输效率(仅传输两个相似文件之间的增量?),要么采用某种缓存。

WAN 流量正在扼杀您的应用程序,听起来您需要进行重大重构。

关于java - 如何提高客户端-服务器架构应用程序的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792807/

相关文章:

java - 查找 Java 服务器时间和客户端时间

java - 使用 Voiceover 实用程序在 MAC 的 JCombobox 中打开弹出窗口的 Control-Option-Space 键

java - 将图像按钮与 TextView XML 对齐

c - 提取设置为 1 的位索引的最有效方法

c++ - 什么时候在不牺牲正确性的情况下有意识地利用未指定的行为会带来好处?

java - 套接字编程服务器套接字超时

java - 基于 sun 检查全局创建检查配置

java - 将操作系统从 linux 更改为 windows 时的 InputStream 空指针

css - 在 SASS/SCSS 中过度嵌套选择器在实践中有多糟糕?

java - 将应用程序从控制台获取到 GUI