- Warum Postgres-Queues gut sind, aber nicht zum Mainstream gehören: wegen der verbreiteten Annahme, dass andere Queue-Technologien eine größere Skalierbarkeit bieten
- Unternehmen wie webapp.io haben sich für Postgres-Queues entschieden, weil sie betriebliche Einfachheit, Wartbarkeit und Vertrautheit höher gewichten als Skalierbarkeit
- Bestandteile der Postgres-Queue-Technologie
- Benachrichtigen und Empfangen neuer Jobs (pub/sub) sowie gegenseitiger Ausschluss (
row locks)
- Diese beiden Funktionen sind seit Postgres 9.5 verfügbar, das 2016 veröffentlicht wurde
- Der Autor widerspricht der in der Branche verbreiteten Ansicht, die Nutzung von Postgres auf diese Weise sei ein „Hack“, und argumentiert, dass Postgres keine zweitklassige Queue-Technologie ist
- Für Queue-Tools zur Verarbeitung lang laufender Jobs wurden bislang Redis, Apache Kafka, RabbitMQ und Amazon SQS gewählt
- Kritik an der Besessenheit der Tech-Branche von „Scale“ und daran, dafür Einfachheit, Wartungsfreundlichkeit und eine geringere kognitive Last für Entwickler zu opfern
- Der Autor schlägt vor, bei technischen Entscheidungen auch Technologien zu berücksichtigen, die man bereits nutzt und gut versteht
- Empfohlen wird die Wahl bereits eingesetzter und gut verstandener „langweiliger Technologie“
- Einführung des Konzepts, sich einen „Ausweg offen zu halten“: Der Anwendungscode zur Job-Verarbeitung sollte von der Queue unabhängig sein
- Abschließend ermutigt der Autor andere, Postgres-Queue-Technologie in Betracht zu ziehen und „langweilige Technologie“ als Standardwahl zu setzen
1 Kommentare
Hacker-News-Kommentare
SELECT FOR UPDATE SKIP LOCKEDist ein einfacher Ansatz, der mit allen ORM-/Query-DSL-Frameworks funktioniert.LISTEN/NOTIFYist, dassLISTENeine Session-Funktion ist und daher nicht mit Connection Pooling auf Statement-Ebene kompatibel ist.SKIP LOCKEDfür VACUUM, verzögerte Jobs, Retries, Status-Updates und „at least once“ umzusetzen.