13 Punkte von GN⁺ 2024-07-01 | 3 Kommentare | Auf WhatsApp teilen
  • Ein Drop-in-Service, der SQS direkt ersetzen kann und die Developer Experience deutlich verbessert
  • Bietet eine funktionale UI, Sichtbarkeit, Nachverfolgung, Message Scheduling und Rate Limiting
  • Eine private SQS-Instanz kann in jeder Cloud betrieben werden
  • Wird als einzelnes Go-Binary bereitgestellt und kann mit bestehenden SQS-Clients verwendet werden
  • Die UI läuft auf :3000, der SQS-kompatible Server auf :3001
  • Kompatibel mit SQS-Clients aller Sprachen
    • Python
      • import boto3  
        # Es muss nur endpoint_url geändert werden  
        sqs = boto3.client("sqs", ..., endpoint_url="http://localhost:3001";)  
        sqs.send_message(QueueUrl="...", MessageBody="hello world")  
        
      • Funktioniert auch reibungslos mit Celery
      • app = Celery("tasks", broker_url="sqs://...@localhost:3001")  
        

Meinung von GN⁺

  • SmoothMQ erweitert die Funktionen von SQS und bietet Entwicklern eine bessere Erfahrung
  • Da sich eine private Instanz ohne Cloud-Bindung betreiben lässt, ist die Lösung sehr flexibel
  • Bestehende SQS-Clients können unverändert weiterverwendet werden, wodurch die Umstellungskosten gering bleiben
  • Über die UI lassen sich Queues und Messages einfach verwalten, was die Betriebseffizienz erhöht
  • Bei der Einführung neuer Technologien sollte die Kompatibilität mit bestehenden Systemen ausreichend berücksichtigt werden

3 Kommentare

 
aer0700 2024-07-02

SQLite und Postgres wird man wohl auch in 10 Jahren noch verwenden. Bei Redis dachte ich das auch, aber inzwischen bin ich mir da nicht mehr so sicher.

 
superwoou 2024-07-02

Was verwendet man heutzutage statt Redis?

 
GN⁺ 2024-07-01
Hacker-News-Kommentare
  • Die Idee ist großartig, k8s-, kubernetes-, cloud-native-, self-hosted- und edge-enabled-Technologien günstig nutzbar zu machen

    • Hat rq und minio mehrere Jahre auf k8s verwendet und richtet den Blick in letzter Zeit auf SQLite als Alternative
    • Betont die Bedeutung der persönlichen Cloud und hält es für unangemessen, zu vieles in der öffentlichen Cloud zu erledigen
    • BTLE-Sensoren können problemlos direkt mit der Apple Watch kommunizieren
    • Der Umweg über die Cloud habe keinen Vorteil gebracht, und das müsse in der nächsten Generation von Tools korrigiert werden
  • Es wird darauf hingewiesen, dass SQLite auf einem einzelnen Server läuft und in den meisten Fällen funktioniert, aber nicht zu 100 % zuverlässig ist

    • Wenn der Queue-Server abstürzt, ist es wahrscheinlich, dass SQS weiter funktioniert
    • Im besten Fall kann es funktionieren, wird aber nicht die gleiche Zuverlässigkeit wie SQS bieten
  • Abgesehen von Skalierung und Benchmarks ist es ein nützliches Tool für Feature-/Unit-Tests, die SQS verwenden

  • Zielt auf ein gehostetes Queue-System ab und will günstiger als SQS sein, ohne dabei Leistung zu opfern

    • Wie Backblaze und Minio im S3-Bereich erfolgreich waren, soll das auch im Bereich der Queue-Systeme gelingen
  • Jemand schreibt gern AWS-API-kompatible Dienste und erwähnt das Projekt Dyna53

  • Mit LocalStack kann man SQS und viele AWS-Services für Tests/Entwicklung verwenden; es ist gut dokumentiert und Open Source

  • Es gefällt, wenn Projekte einfache self-hosted Alternativen zu populären Services bauen

    • Es dürfte mit Litestream ohne größere Probleme funktionieren und wäre ohne Anpassungen am Backend-Storage ein großartiges temporäres Queue-System
  • Ein schneller Vorschlag zur Projektstruktur:

    • Es wird vorgeschlagen, alle Structs aus dem Verzeichnis models/ in das Root-Verzeichnis zu verschieben
    • Dadurch können Nutzer des Pakets kurze und saubere Namen wie q.Message und q.Queue verwenden, und Namenskonflikte werden vermieden, falls Nutzer ein eigenes Paket models haben
  • ElasticMQ wird erwähnt; es wird genutzt, um SQS in Docker-Umgebungen zu simulieren

  • Es wird gefragt, warum die Unterstützung für Fremdschlüssel deaktiviert wird, obwohl sie im Datenbankschema weiterhin verwendet werden

    • Der Kommentar TODO: check for errors und Stellen, die das Prüfen von Fremdschlüssel-Constraints zu deaktivieren scheinen, lassen zögern, es auszuprobieren