Я использую архитектуру с несколькими арендаторами, используя статью Dynamic DataSource Routing, но динамически создавая новые источники (источники данных) (при регистрации пользователей).Масштабируемость подхода multi-tenant с использованием MySQL и Spring
Все работает нормально, но я беспокоюсь об изменчивости. Приложение читается тяжело, и сегодня у нас есть 10 арендаторов, но мы откроем приложение для публики, и это число увеличится.
Каждый пользователь источник данных создается с помощью следующего кода:
BasicDataSource ds = new org.apache.commons.dbcp.BasicDataSource();
ds.setDriverClassName(Driver.class.getName());
ds.setUsername(dsUser);
ds.setPassword(dsPassword);
ds.setPoolPreparedStatements(true);
ds.setMaxActive(5);
ds.setMaxIdle(2);
ds.setValidationQuery("SELECT 1+1");
ds.setTestOnBorrow(true);
Это означает, что он создает, по меньшей мере 2 и максимум 5 подключений для каждого пользователя.
Сколько соединений и схем поддерживает эта архитектура с помощью сервера MySQL (4 процессора 2.3Mhz/8GB Ram/80GB SSD) и как я могу улучшить его, изменив параметры источника данных или конфигурацию mysql?
Я знаю, что этот ответ зависит от большого количества дополнительной информации, просто спросите в комментариях.
Ваше приложение читает тяжело или пишет тяжело? –
@SamD Считать тяжелый –
, тогда вы всегда можете масштабировать по горизонтали и добавлять считывающие устройства для обработки большего количества параллелизма. Посмотрите на главную ведомую репликацию в mysql –