Соединение с БД - это, по сути, соединение TCP под капотом, которое однозначно идентифицируется парой сокетов в участвующих хостах.Здесь сокет означает комбинацию сетевого адреса (IP) и адреса хоста (порта).
Когда установлено соединение TCP, все эти данные сохраняются в обеих конечных точках в структуре данных, называемой TCB.Таким образом, вы не можете просто перенести TCP-соединение с одного хоста на другой.
Есть некоторые исследования миграции TCP-соединения, например this .Тем не менее, главная цель здесь - это производительность , а не (как в пуле подключений за счет экономии времени трехстороннего рукопожатия TCP во время установления соединения), но позволить существующим соединениям продолжаться и не разрываться из-за изменения IP-адреса.из-за мобильности или аварийного переключения.
Если вы ссылаетесь на связанный документ выше, основная концепция состоит в том, чтобы снова выполнить трехстороннее рукопожатие, чтобы создать новое соединение с новым IP.Единственное отличие состоит в том, что во время установления связи некоторые дополнительные управляющие данные будут передаваться для обновления TCB новыми данными хоста, так что текущие передачи данных могут продолжаться без прерывания из-за изменения IP-адреса.
Таким образом, вы не можете простоперенести соединение БД с одного хоста на другой, потому что хосты имеют разные IP-адреса.Вышеупомянутая статья, которую я связал, находится в черновом вариантеДаже если это будет реализовано, это не поможет вашему делу, потому что, как я уже сказал, миграция снова потребует квитирования, чего вы и хотите избежать в пуле соединений.
Если вы каким-либо образом перенесете источник данных с одного хостадругому, а затем попытаться заимствовать у него соединение, проверка соединения, которую источник данных делает перед возвратом соединения, не будет выполнена, и это будет продолжаться до тех пор, пока все соединения не будут исчерпаны, а затем будет создано новое соединение для этого конкретного хоста.Таким образом, в конечном итоге вы ничего не получите от этого.
Наконец, идея размещения всех пулов соединений в одном микросервисе (хотя по своей сути ошибочна из-за упомянутых выше фактов), кажется, идет вразрез с микросервисом.основанная архитектура.Это создаст узкое место, и любая проблема с этим микросервисом разрушит всю вашу инфраструктуру.В архитектуре микросервиса мы хотим локализовать проблемы, а не распространять их.Ваши отдельные микросервисы должны быть максимально автономными, и такие схемы, как переборка и автоматический выключатель, помогут вам в этом.