2016-08-08 2 views
0

Ich denke über eine Prozess-Infrastruktur, wo viele Arbeitsprozesse aus einem Master-Prozess hervorgebracht werden. Jeder Arbeiter führt eine lange laufende Aufgabe aus und wird getötet, nachdem er seine Aufgabe beendet hat. In 24h wird es etwa 100000 Aufgaben geben. Dies wird kein Problem sein, bis ich das Ergebnis der Aufgaben in eine Postgres-Datenbank schreiben muss, da dies zu 100000 einzelnen Datenbankverbindungen pro Tag führen würde.Ruby Multi Prozess Postgreß Verbindungen

Also meine Frage ist: Gibt es eine Möglichkeit, so etwas wie einen Verbindungspool im Master-Prozess zu behandeln und die Verbindung zum Kindprozess zu übergeben? Und wird es möglich sein, dass das Kind nicht die Verbindung zu schließen, bis es fertig ist (weil der Besitzer des Prozesses ist der Master-Prozess)

Antwort

0

PostgreSQL mindestens zwei häufig verwendete Verbindung Fahrgemeinschaften:

pgbouncer - https://pgbouncer.github.io/features.html

und

pgpool - http://www.pgpool.net/mediawiki/index.php/Documentation

die beide ihre eigenen Feature-Sets haben. Bewerten Sie beide und sehen Sie, welche für Sie am besten geeignet sind. Zum Beispiel möchten Sie vielleicht das Transaktionspooling von pgbouncer verwenden, so dass Sie nur eine Verbindung herstellen, während einer der Kinderarbeiter gerade arbeitet. Sobald dieser Vorgang abgeschlossen ist, wird die Verbindung wieder in den Pool freigegeben. Es scheint, als würden Sie mehrere Verbindungspools benötigen, um diese Menge an Nebenläufigkeit zu bewältigen.

Verwandte Themen