2013-12-06 3 views
1

Я использую архитектуру с несколькими арендаторами, используя статью 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?

Я знаю, что этот ответ зависит от большого количества дополнительной информации, просто спросите в комментариях.

+0

Ваше приложение читает тяжело или пишет тяжело? –

+0

@SamD Считать тяжелый –

+0

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

ответ

0

В большинстве случаев у вас не будет более 300 подключений в секунду. То есть, если вы добавите хорошие механизмы кэширования, такие как memcached. если у вас более 1000 подключений/сек, вы должны учитывать постоянные соединения и пулы соединений.

+0

И сколько таких источников данных я смогу работать с одинаковыми время? Существует ли у MySQL ограничение на соединения? –

+0

есть переменная max_connection, которую вы можете изменить, но с 200 подключением в секунду вы можете обслуживать тысячи пользователей. –

+0

. Org.apache.commons.dbcp.BasicDataSource поддерживает открытые соединения с сервером, в моем примере они являются 2 пользователем. Итак, мне нужно сделать одно соединение для каждого пользователя, чтобы достичь этой масштабируемости тысяч? –

 Смежные вопросы

  • Нет связанных вопросов^_^