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

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

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

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

Коннектор riak, который я использую, — «github.com/tpjg/goriakpbc».


person joaonrb    schedule 04.02.2015    source источник


Ответы (1)


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

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

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

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

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

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

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

person Joe    schedule 04.02.2015