Что мы можем сделать, чтобы ускорить обработку XML?

2

Мы работаем над внутренней корпоративной системой, которая имеет веб-интерфейс как один из его интерфейсов.

Интерфейс (Java + Tomcat + Apache) обменивается информацией с внутренним сервером (проприетарной системой, написанной на языке COBOL) через веб-службы SOAP.

В результате мы передаем большие XML файлы взад и вперед.

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

Как мы можем сделать эту настройку XML более эффективной?

Приветствуются любые советы или приемы.

  • 1
    ximpleware.com (страница vtd-xml.sf.net) содержит вредоносные программы по мнению Google, я бы был осторожен с этими ссылками, вероятно, скомпрометированной установкой WordPress
Теги:
performance
web-services
parsing

6 ответов

8
Лучший ответ

Профилирование!

Сделайте правильное профилирование вашей системы под нагрузкой - информации на самом деле недостаточно.

Вам нужно выяснить, где идет время и что такое бутылочки (пропускная способность сети, процессор, память и т.д.). Только тогда вы поймете, что с этим делать - многие оптимизации - это просто компромиссы (например, кэширование приносит в жертву память для улучшения производительности в другом месте).

Единственное, что я могу думать о работе, это убедиться, что вы используете HTTP-сжатие с помощью веб-сервисов. XML обычно можно уплотнять до доли его нормального размера, но опять же это поможет, если у вас есть Циклы ЦП для резервного копирования.

  • 1
    +1 за разумный подход. Нет особого смысла в оптимизации, когда вы не знаете, куда уходит время обработки.
  • 0
    Обычно вы удивляетесь тому, куда на самом деле уходит время ..
3

Вы можете сжать передачу, если оба конца могут ее поддерживать, и вы можете попробовать разные синтаксические анализаторы, но поскольку вы говорите, что SOAP не так много вариантов. SOAP все равно раздувается.

3

Я собираюсь выйти на конечность здесь и предложить GZIP Compression, если вы считаете, что это связано с проблемами пропускной способности. (вы упомянули XML-транспорт). Да, это увеличит время вашего процессора, но это может ускорить работу на транспорте.

Здесь первый хит Google по сжатию GZIP в качестве отправной точки. Он описывает, как он работает на Apache.

2

Сначала убедитесь, что ваши синтаксические методы эффективны для больших документов. StAX - хороший инструмент для анализа больших документов.

Кроме того, вы можете взглянуть на бинарный XML. Они обеспечивают более эффективный транспорт, но также помогают в анализе.

  • 0
    ни одно из ваших предложений не совместимо с SOAP
  • 0
    SOAP - это просто XML. Сказать, что это не совместимо, смешно. Axis2 использует StAX: ws.apache.org/axis2 Просто выполните поиск в Google, и вы найдете другие примеры.
Показать ещё 2 комментария
1

Проверьте, читает ли ваше приложение во всех XML-документах как дерево DOM. Они могут быть ОЧЕНЬ большими, и часто вы можете сделать это с помощью простой проверки событий SAX или программы XSLT на основе SAX (которую можно скомпилировать для быстрой обработки).

Это очень заметно в профилировщике, таком как visualvm в Sun Java 6 JDK

1

Попробуйте StAX. Он выполняет хорошо и имеет красивый, сжатый синтаксис.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню