Оптимизация пула соединений golang

Задайте вопрос об использовании golang для разработки пула соединений для помещения соединений в буферизованный канал с помощью операций get и put ‹-chan и chan ‹-conn

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

Или есть другие структуры данных, которые можно порекомендовать?

Большое спасибо!


person PoormaJin Rao    schedule 31.07.2018    source источник
comment
Так что сделайте свое первоначальное исследование, опубликуйте свой код, который вы придумали до сих пор - это не бесплатная консультационная услуга.   -  person dmitryro    schedule 31.07.2018
comment
Я хотел бы спросить о схеме оптимизации, которая не очень опытна в этой области. Это мой код: github.com /PoormaJin/grpcpool   -  person PoormaJin Rao    schedule 31.07.2018


Ответы (1)


... повлияет ли это на нормальную работу get и put при проверке

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

Я думаю, вы спрашиваете, повлияет ли это на какую-либо параллельную операцию во время этой проверки?

Я не думаю, что это произойдет, поскольку «пользователь» пула также должен установить соединение с канала, чтобы использовать соединение. Таким образом, параллельная операция не должна выполняться.

Это, конечно, зависит от того, есть ли у вас функция «Поместить», которая извлекает соединение из канала, выполняет команду, а затем отправляет его обратно на канал только после того, как все будет сделано.

person byrnedo    schedule 31.07.2018