Nginx olay döngüsü
HTTP, WebSocket ve engellemeyen veritabanı G/Ç işlemleri Nginx’in olay döngüsünü paylaşır.
SQL odaklı arka uç Alfa
PostgreSQL işlevlerini HTTP üzerinden sunan ve WebSocket üzerinden değişiklik bildirimleri ileten bir Rust Nginx modülü.
GitHubHTTP, WebSocket ve engellemeyen veritabanı G/Ç işlemleri Nginx’in olay döngüsünü paylaşır.
Hazırlanmış ifadeler ve işlem hattı, yinelenen işi ve veritabanına gidiş dönüşleri azaltır.
PostgreSQL’in JSONB yanıt metni değiştirilmeden aktarılır. Çıktı doğrulamasını kapatmak, yanıt JSON’unun ayrıştırılmasını da önler.
Yamalı libpq derlemesi, uygun isteklerde gövdenin Rust ve libpq içine kopyalanmasını ortadan kaldırır. Otomatik tampon ödünç alma, şifrelenmemiş veritabanı bağlantılarındaki uygun büyük isteklere uygulanır. Standart derlemeler kopyalamaya devam eder.
Yukarıdaki test kopyalanan tamponlar kullandı. Yanıtlar ve TLS hâlâ kopyalama içerir.
# HTTP endpoints
pgxio_endpoint list_tasks
web.list_tasks read_only;
pgxio_endpoint create_task
web.create_task;
# WebSocket subscription authorization
pgxio_stream tasks
web.authorize_tasks;SQL işlevleri JSON alır ve döndürür. Sorguları, iş kurallarını ve yetkilendirmeyi yönetir.
API’nizin sunduğu işlevleri tanımlayın. pgxio JWT’leri doğrular ve her işlevi bir işlem içinde çağırır.
Yetkilendirilmiş WebSocket abonelikleri değişiklikleri bildirir. İstemciniz güncel anlık görüntüyü HTTP üzerinden yeniden alır.
Abonelikler kalıcı bir olay günlüğü değil, değişiklik sinyalleri iletir. Yeniden bağlanınca istemciler yeniden abone olur ve güncel bir anlık görüntü alır.
Bu komutları mevcut bir pgxio kaynak kopyasından çalıştırın. Docker Compose ve Python 3.9 veya üzeri gerekir.
Dahil edilen geliştirme ortamı localhost üzerinde dinler. pgxio alfa yazılımıdır; bu yapılandırma yerel denemeler içindir.
bin/pgxio init
bin/pgxio up
TOKEN=$(bin/pgxio token alice)
curl http://localhost:8080/v1/create_task \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"title":"Hello from pgxio"}'
curl http://localhost:8080/v1/list_tasks \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{}'