Как я могу использовать пул соединений Riak с Beego Framework

Я разрабатываю бэкэнд, используя Beego и Riak. Я ищу способ поддержать пул соединений riak, но я не могу найти ничего в документации, кроме связанной с SQL.

Я действительно новичок в языке Go (начал изучать 2 дня назад), и я не знаю, является ли пул соединений выбором записи. Как я понимаю, каждое приложение Go должно быть разработано так, чтобы оно работало независимо, обеспечивая легкую масштабируемость. Если это так, напишите, возможно, одно соединение должно быть лучшим выбором. Если это так, то какую наилучшую практику я могу использовать?

Я заранее извиняюсь, если мой вопрос кажется нубийским, но с моим фоном Django я не привык управлять соединениями БД.

Разъем riak, который я использую, это "github.com/tpjg/goriakpbc"

1 ответ

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

Каждый раз, когда устанавливается соединение TCP, происходит трехстороннее рукопожатие:

  1. клиент -syn-> сервер
  2. клиент <- syn-ack- сервер
  3. клиент -ack-> сервер

Обычно это занимает очень мало времени и пропускной способности сети и создает запись в таблице conntrack на каждой машине. Если ваше приложение открывает новое соединение с сервером для каждого запроса и будет отправлять много тысяч запросов в секунду, вы можете переполнить таблицу conntrack, блокируя новые соединения, пока не закроются некоторые предыдущие соединения; или служебный трафик создания соединений может ограничить количество запросов, которые вы можете обрабатывать в секунду.

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

Вы можете обнаружить, что если ваше приложение не генерирует достаточный объем трафика, усилия, необходимые для разработки приложения для использования пула соединений, перевешивают любые преимущества, полученные при использовании пула.

Нет правильного или неправильного ответа, это будет сильно зависеть от вашего варианта использования, объема запросов и сетевых возможностей.

Другие вопросы по тегам