Во время разработки нашей продукции мы столкнулись с проблемой большого объема памяти с использованием архитектуры Vaadin по умолчанию.
Архитектура Vaadin основана на компонентах, управляемых событиями. Использование компонентов довольно просто для создания тесно связанного приложения. Причина в том, что компоненты структурированы в иерархию. Это похоже на пирамиду. Более крупное приложение построено; большая пирамида хранится в сеансе для каждого пользователя.
Чтобы значительно сократить выделение памяти, мы создали подход на основе страниц для приложения с комплексной моделью событий на заднем плане с использованием старого управления государственными школами. Он основан на нотации Statechart в формате XML.
В результате сеанс хранит только посещенные страницы во время рабочего процесса пользователя, описанные в конфигурации Statechart. Когда пользователь заканчивает рабочий процесс, все страницы освобождаются для сбора сборщиками мусора.
Чтобы увидеть разницу, мы провели несколько тестов для сравнения памяти, выделенной для пользователя, работающего с приложением.
Приложение, разработанное:
- с сильносвязанным подходом потребляет от 5 до 15 Мб динамической памяти для каждого пользователя
- с рыхлой связью подхода - до 2 Мб
Мы вполне довольны с результатами, поскольку позволяет масштабировать большую систему с использованием 4 ГБ оперативной памяти до 1000-1500 одновременных пользователей на сервер.
Почти забыл. Мы использовали библиотеку Lexaden Web Flow. Это с лицензией Apache.
Сколько пользователей будет использовать приложение? –
Более 20 000 одновременных пользователей –