Wir versuchen, unsere monolithische Anwendung in eine Micro-Services-basierte Architektur umzuwandeln. Wir verwenden Postgresql als eine unserer Datenbanken in der monolithischen Anwendung mit BoneCP für das Verbindungs-Pooling.
Wenn dieser Monolith auf mehrere unabhängige Micro-Services aufgeteilt wird, wobei jeder in einer anderen JVM ausgeführt wird, kann ich über zwei Optionen für das Verbindungs-Pooling nachdenken
In unserem Fall werden sich die meisten Mikro-Dienste (mindestens 50) mit demselben Postgres-Server verbinden, obwohl die Datenbank unterschiedlich sein kann. Also, wenn wir mit Option 1 gehen, gibt es eine höhere Chance, zu viele inaktive Verbindungen zu schaffen. Der Verkehr zu den meisten unserer Dienste ist sehr moderat und der Grund für den Wechsel zu Micro-Service ist für einfachere Bereitstellung, Skalierung usw.
Hat jemand mit einem ähnlichen Problem konfrontiert, als er die Micro-Services-Architektur übernommen hat? Gibt es einen besseren Weg, dieses Problem in der Mikro-Service-Welt zu lösen?
Ich sehe nicht, wie pgbouncer irgendwelche der Probleme lösen wird, die Sie mit dem ersten Ansatz haben würden. Es gibt viele Gründe, pgbouncer zu verwenden, aber ich denke nicht, dass sie hier wirklich anwendbar sind.
Nach meiner Erfahrung sind Leerlaufverbindungen möglicherweise ein Problem, aber sie werden wahrscheinlich nicht in dem Umfang sein, über den Sie sprechen. Ich meine, wir sprechen nicht Hunderte von Leerlauf-Verbindungen richtig?
Noch kritischer ist, dass eine Schlüsselfrage, die ein Microservices-Ansatz Ihnen geben könnte, die Fähigkeit ist, dbs auf andere Server zu verschieben. Wenn Sie dies tun, ist es schwieriger, Ihren Verbindungspool zentral zu verwalten.
Pro-Service-Pool ist in der Regel flexibler und macht Ihre Infrastruktur auch ein wenig flexibler.
Tags und Links database postgresql connection-pooling jdbc microservices