Projekt Connection-Pool
🚀

Projekt Connection-Pool

notion image

Biblioteka Connection-Pool to moja własna implementacja mechanizmu zarządzania połączeniami do bazy danych, która oferuje efektywny sposób reużywania połączeń. Projekt skupia się na zapewnieniu stabilnej i wydajnej komunikacji z bazą danych poprzez dynamiczne zarządzanie pulą połączeń, co pozwala na optymalizację zasobów serwera.

notion image

Connection pool to mechanizm pozwalający na efektywne zarządzanie zasobami sieciowymi w aplikacjach. W momencie uruchomienia program tworzy określoną liczbę połączeń, które są stale dostępne do użytku. Jeśli aplikacja wymaga więcej połączeń, można dynamicznie tworzyć dodatkowe. Gdy zapotrzebowanie na połączenia spada, nadmiarowe są zamykane i usuwane, co pozwala na oszczędność zasobów serwera. Link do repo:

Connection-Pool-Library
jakubBoneUpdated Oct 21, 2024
 

🚀 System zarządzania połączeniami do bazy danych

  • Klasa DatabaseConnection odpowiedzialna za ustanawianie połączeń z bazą danych, zarządzanie parametrami połączeń (użytkownik, hasło, URL, itp.), logowanie informacji o stanie połączeń oraz obsługę błędów podczas nawiązywania i zamykania połączeń.

🚀 Pula połączeń

  • Klasa ConnectionPool zarządza pulą połączeń do bazy danych. Na starcie aplikacji inicjalizowana jest określona liczba połączeń minPoolSize, kontrolowana jest maksymalna liczba połączeń maxPoolSize oraz zapewniona jest synchronizacja i bezpieczeństwo wielowątkowe za pomocą mechanizmów takich jak Semaphore i Lock.

🚀 Obsługa zapytań o połączenia i ich zwalnianie

  • Klasa ConnectionPool udostępnia metody getConnection() i releaseConnection(), umożliwiające pobieranie i zwracanie połączeń z/do puli. W przypadku braku dostępnych połączeń, jeżeli liczba połączeń w puli nie przekracza maxPoolSize, tworzone są nowe połączenia.

🚀 Mechanizm usuwania nieaktywnych połączeń

  • Metoda removeIdleConnection() oraz harmonogram startConnectionRemovalScheduler() pozwalają na regularne sprawdzanie puli i usuwanie nieaktywnych połączeń, które przekraczają minimalny rozmiar puli minPoolSize. Dzięki temu zasoby są zwalniane i nieużywane połączenia są eliminowane.
notion image

Dołączony film to symulacja, w której wiele równoległych wątków wykonuje operacje na połączeniach przez ustalony czas. Widać tutaj, jak pula połączeń obsługuje liczne równoczesne operacje, oraz jak połączenia są pobierane i zwracane do puli. Film dostarcza praktycznego wglądu w działanie puli połączeń pod obciążeniem, podkreślając jej wydajność i stabilność w realistycznych scenariuszach użytkowania.

 
Video preview