В конце 2017 года Proxool, BoneCP, C3P0, DBCP в настоящее время в основном не функционируют. HikariCP (созданный в 2012 году) кажется многообещающим, удаляет двери из всего остального, о чем я знаю. http://www.baeldung.com/hikaricp
Proxool имеет ряд проблем: - при большой нагрузке может превышать максимальное количество подключений и не возвращаться ниже max - может управлять чтобы не возвращаться к минимальным соединениям даже после истечения срока действия соединений. Может заблокировать весь пул (и все потоки сервера / клиента), если у него возникли проблемы с подключением к базе данных во время потока HouseKeeper (не использует .setQueryTimeout) - поток HouseKeeper при подключении блокировка пула для его процесса, запрашивает поток Prototyper для воссоздания соединений (sweep), что может привести к условию / блокировке гонки. В этом методе последний параметр всегда должен быть развернут: false во время цикла, только подметать: true под ним. - HouseKeeper нуждается только в одиночной прокрутке PrototypeController в конце и имеет больше [упомянутых выше] - поток HouseKeeper проверяет проверку соединений, прежде чем видеть, какие соединения могут быть истекли [некоторый риск тестирования истекшего соединения, которое может быть нарушено / завершено с помощью других тайм-аутов до DB в брандмауэре и т. Д.] - проект имеет незавершенный код (свойства, которые определены, но не действуют). Максимальный срок службы соединения по умолчанию, если он не определен, составляет 4 часа (чрезмерный) - поток HouseKeeper запускается каждые пять секунд на пул (избыток) Вы можете изменить код и внести эти улучшения. Но поскольку он был создан в 2003 году и обновлен в 2008 году, ему не хватало почти 10 лет усовершенствований Java, которые используют такие решения, как hikaricp.
Это не совсем правильный подход. Правильный подход заключается в создании сервисов kubernetes типа LoadBalancer:
вида: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
type: LoadBalancer
, который создаст балансировщик нагрузки и публичный IP-адрес для вас. Тема немного сложна, чтобы просто перейти по ней, но в основном kubernetes будет управлять этими внешними конечными точками для вас, вам нужно только объявить действительные примитивы kubernetes. Вы можете создать их заранее, но это действительно бессмысленно. Просто позвольте kubernetes делать тяжелую работу.
Чтение:
https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer