Как вычисляется размер пула подключений redis в мульти-dyno-среде при использовании конфигурации коннекторов spring cloud?
Мое приложение настроено следующим образом:
@Bean
public RedisConnectionFactory redisConnectionFactory() {
PoolConfig poolConfig = new PoolConfig(10, 200);// maxPoolSize=10
return connectionFactory().redisConnectionFactory("REDISCLOUD", new PooledServiceConnectorConfig(poolConfig));
}
План входа для REDISCLOUD указывает максимум 10 подключений Redis.
Тем не менее, у меня есть два работающих динамометра на данный момент, и у меня может быть больше двух в будущем. Означает ли это, что мое приложение может потреблять 2 соединения dynos * 10 = 20 подключений Redis в данный момент?
Если это так, то это проблема, и я не уверен, как настроить свой пул, например, если я увеличу количество работающих динамов...
Кстати проблема та же с коннекторами реляционных баз данных...
Может кто-нибудь, пожалуйста, посоветуйте?
1 ответ
Отказ от ответственности: я работаю в Redis Labs, поставщике дополнения Redis Cloud для Heroku.
Вы правы - эта настройка потребует 20 подключений, если пул каждого динамометра увеличится до максимума. Соединения с базой данных считаются "дорогим" ресурсом - как для клиента, так и для сервера. Именно поэтому пулы соединений используются приложениями... а также почему поставщики баз данных, такие как Redis Labs, должны взимать плату за них.
Один из способов преодолеть это - обновить план дополнений Redis Cloud в соответствии с вашими требованиями к подключению:) Платные планы гораздо более гибкие, и, начиная с плана 2,5 ГБ, вы получаете неограниченное количество подключений. Используя один из них, вы можете перестать беспокоиться о масштабировании: https://addons.heroku.com/rediscloud