Vòng lặp sự kiện Nginx
HTTP, WebSocket và I/O cơ sở dữ liệu không chặn dùng chung vòng lặp sự kiện của Nginx.
Backend lấy SQL làm trọng tâm Alpha
Mô-đun Rust cho Nginx cung cấp hàm PostgreSQL qua HTTP và thông báo thay đổi qua WebSocket.
GitHubHTTP, WebSocket và I/O cơ sở dữ liệu không chặn dùng chung vòng lặp sự kiện của Nginx.
Câu lệnh chuẩn bị sẵn và xử lý theo đường ống giảm công việc lặp lại và số lượt trao đổi với cơ sở dữ liệu.
Văn bản phản hồi JSONB của PostgreSQL được chuyển nguyên vẹn. Tắt kiểm tra đầu ra cũng tránh việc phân tích JSON phản hồi.
Bản dựng với libpq đã vá loại bỏ việc sao chép thân yêu cầu vào Rust và libpq cho yêu cầu đủ điều kiện. Tự động mượn bộ đệm áp dụng cho yêu cầu lớn phù hợp qua kết nối cơ sở dữ liệu không mã hóa. Bản dựng tiêu chuẩn vẫn sao chép.
Phép đo trên dùng bộ đệm được sao chép. Phản hồi và TLS vẫn cần sao chép.
# 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;Hàm SQL nhận và trả về JSON. Chúng xử lý truy vấn, quy tắc nghiệp vụ và phân quyền.
Khai báo các hàm mà API cung cấp. pgxio kiểm tra JWT và gọi từng hàm trong một giao dịch.
Đăng ký WebSocket được cấp quyền báo hiệu thay đổi. Máy khách lấy lại ảnh chụp trạng thái hiện tại qua HTTP.
Đăng ký gửi tín hiệu thay đổi, không phải nhật ký sự kiện bền vững. Khi kết nối lại, máy khách đăng ký lại và lấy ảnh chụp trạng thái mới.
Chạy các lệnh này từ bản mã nguồn pgxio hiện có. Cần Docker Compose và Python 3.9 trở lên.
Môi trường phát triển đi kèm lắng nghe trên localhost. pgxio là phần mềm alpha; cấu hình này dành cho việc tìm hiểu cục bộ.
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 '{}'