Проблемы производительности с зависимостями внешних данных

StackOverflow https://stackoverflow.com/questions/1280918

Вопрос

У меня есть приложение, которое взаимодействует с несколькими внутренними и внешними источниками, используя службы SOAP, REST или просто хранимые процедуры базы данных.Очевидно, что производительность и стабильность — это серьезная проблема, с которой я имею дело.Даже когда конечные точки работают с максимальной эффективностью, при работе с большими наборами данных я легко вижу вызовы, занимающие десятки секунд.

Итак, я пытаюсь повысить производительность своего приложения за счет предварительной выборки данных и их локального хранения — чтобы, по крайней мере, операции чтения выполнялись быстро.

Хотя мое приложение является основным потребителем и производителем данных, некоторые данные могут меняться и вне моего приложения, и я не могу это контролировать.Если бы я использовал кеширование, я бы никогда не знал, когда сделать кеш недействительным, когда такие данные изменяются вне моего приложения.

Поэтому я думаю, что мой единственный вариант — запустить планировщик заданий, который постоянно обновляет базу данных.Я мог бы расставить приоритеты пользователей в зависимости от того, как часто они заходят в систему и используют приложение.

Я говорю о 50 тысячах пользователей и как минимум 10 конечных точках, которые ужасно медленны и иногда могут занять минуту на один звонок.Даст ли мне что-нибудь вроде Quartz нужный мне масштаб?И как мне избежать того, чтобы расписание превратилось в единую точку отказа?

Я просто ищу что-то, что не требует сложного обслуживания и ускоряет хотя бы некоторые менее сложные подсистемы, если не большинство.Какие-либо предложения?

Это было полезно?

Решение

Похоже, вам может понадобиться хранилище данных.Вы будете обновлять хранилище данных из различных источников по любому необходимому графику.Однако все транзакции, доступные только для чтения, будут поступать из хранилища данных и не потребуют немедленных вызовов различных внешних источников.

Это предполагает, что вам не нужен доступ в реальном времени к самым последним данным.Даже если вам нужны данные с точностью до последнего часа из определенного источника, это означает лишь то, что вам нужно будет обновлять данные из этого источника каждый час.

Вы не сказали, какие платформы используете.Если вы использовали SQL Server 2005 или более позднюю версию, я бы рекомендовал службы SQL Server Integration Services (SSIS) для обновления хранилища данных.Он создан именно для таких вещей.

Конечно, в зависимости от выбора вашей платформы могут быть более подходящие альтернативы.


Вот некоторые ресурсы по службам SSIS и хранилищам данных.Я знаю, что вы заявили, что не будете использовать продукты Microsoft.Я включаю эти ссылки в качестве ориентира:это те продукты, о которых я говорил выше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top