У нас есть продукт, построенный на архитектуре клиент-сервер. Некоторые подробности об используемом технологическом стеке.
- Клиент - Java Swing
- Сервер - RMI
- База данных Java - Oracle
Клиенты находятся в разных частях мира, но сервер Java и база данных Oracle находятся на одной машине в Швеции. Из-за этого существует большая задержка в сети. Клиенты, расположенные в отдаленных местах, имеют ужасную производительность. Приложение используется для обработки файлов размером более 50 МБ. Каждая операция в целом требует более 1000 сетевых вызовов.
Исходя из вашего опыта, как вы решаете эту проблему и повышаете производительность?
РЕДАКТИРОВАТЬ: Чтобы ответить на несколько вопросов
- Файлы содержат фактические бизнес-данные, которые необходимо обработать и обновить в базе данных, которые не могут быть отправлены частично.
- Некоторые сетевые вызовы могут быть пакетными, но это потребует серьезного рефакторинга кода. Это очень старое приложение, написанное еще в 2001 году. И дизайн приложения таков, что сервер содержит все сервисы, и они сделаны повторно используемыми в коде, а бизнес-логика написана на стороне клиента. Итак, эта бизнес-логика многократно вызывает сервер и, следовательно, астрономическую цифру.
-Snehal