İstifadəçilər mesajları real-time görmür, bildirişlər gecikir, onlayn chat yavaşlayır? REST bunun üçün uyğun deyil — WebSocket və ya SSE lazımdır. İkitərəfli rabitə kanalı, ani çatdırılma, Redis Pub/Sub vasitəsilə ölçeklənmə. REST-in aciz qaldığı yerdə işləyir.

Nə təklif edirik

Real-time API inkişafı — məlumatların ani çatdırıldığı sistemlərin yaradılmasıdır. Chatlar, bildirişlər, birgə redaktə, birja kotirovkaları, onlayn oyunlar — mesaj çatdırılma sürətinin vacib olduğu istənilən ssenari.

  • WebSocket — TCP üzərində tam ikitərəfli rabitə kanalı. Minimum gecikmə, yenidən qurulma tələb etməyən daimi əlaqə

  • Server-Sent Events (SSE) — serverdən brauzerə birtərəfli hadisə ötürülməsi üçün yüngül protokol. Bildirişlər və yeniləmə lentləri üçün

  • Ölçeklənmə — üfüqi ölçeklənmə üçün Redis Pub/Sub və ya RabbitMQ vasitəsilə WebSocket. Tək qovşaqda minlərlə eyni vaxtda əlaqə.

  • Təhlükəsizlik — WSS (WebSocket Secure), əlaqə qurarkən autentifikasiya, daxil olan mesajların validasiyası

WebSocket · SSE · Pub/Sub · Redis · WSS

Real-time istifadə ssenariləri

Real-time — geniş spektrli tapşırıqlardır. Sadə bildirişlərdən çoxistifadəçili birgə işə qədər. Xüsusi ssenariyə uyğun protokol seçirik.

Chatlar və messencerlər

Mesajların ani çatdırılması üçün WebSocket. Status dəstəyi: onlayn, offlayn, yazır. Mesaj tarixçəsi, fayllar, reaksiyalar. Qrup və şəxsi chatlar.

Bildirişlər və xəbərdarlıqlar

Brauzerə yüngül hadisə çatdırılması üçün SSE. WebSocket vasitəsilə Push bildirişləri. Növ, prioritet, istifadəçi üzrə filtrləmə. Zəmanətli çatdırılma.

Real-time birgə iş

Birgə redaktə üçün Operational Transform. Kursor sinxronizasiyası üçün WebSocket. Münaqişələrin həlli üçün OT alqoritmləri və ya CRDT.

Real-time — istifadəçinin «niyə səssizlik» düşünməyə macal tapmadan mesajı almasıdır. Gecikmənin saniyələrlə deyil, millisaniyələrlə ölçüldüyü sistemlər qururuq.

WebSocket SSE Redis Pub/Sub RabbitMQ Socket.IO WSS Node.js Python Docker

Tam Real-time inkişaf dövrü

Real-time sistemlər təkcə WebSocket deyil. Minlərlə eyni vaxtda əlaqəyə davam gətirən və hər mesajın çatdırılmasını zəmanətə alan arxitektura layihələndiririk.

  • Əlaqə Arxitekturası — WebSocket vs SSE vs long-polling. Tapşırığa uyğun protokol seçirik. Qrup yayımı üçün otaqlar və kanallar layihələndiririk.

  • Ölçeklənmə — Qovşaqlar arasında mesaj mübadiləsi üçün Redis Pub/Sub. Paylaşılmış vəziyyətlə WebSocket serverlərinin üfüqi ölçeklənməsi.

  • Node.js-də Real-time — Socket.IO və ya ws ilə Node.js-də WebSocket serverləri. REST API və mövcud backend ilə inteqrasiya.

  • Çatdırılma zəmanətləri — at-most-once, at-least-once, exactly-once. Qəbul təsdiqi, əlaqə itkisində yenidən göndərmə.

  • Monitorinq — aktiv əlaqələrin sayı, bant genişliyi, gecikmələr. Real-time metrikalar üçün Prometheus + Grafana.

  • REST + WebSocket hibrid — sorğu-cavab üçün REST və push bildirişləri üçün WebSocket. Müasir tətbiqlər üçün optimal arxitektura.


Redis Pub/Sub ilə WebSocket — sərhədsiz ölçeklənmə

Redis Pub/Sub WebSocket serverlərinin üfüqi ölçeklənməsinə imkan verir. Bir qovşaqda göndərilən mesaj Redis vasitəsilə ani olaraq bütün digər qovşaqlara çatdırılır. Minlərlə əlaqə — tək növbə.

Nəyi bizdən Real-time inkişafı seçirlər

Real-time API sifariş edin — məlumatların ani çatdırıldığı, əlaqələrin etibarlı olduğu və ölçeklənmənin arxitekturaya daxil edildiyi bir sistem əldə edin.

Zəmanətli çatdırılma

At-least-once və exactly-once semantikasını tətbiq edirik. Müvəqqəti əlaqə itkisində belə mesaj çatacaq — təsdiq növbəsi və təkrar cəhd mexanizmi.

Ölçeklənmə

Redis Pub/Sub, WebSocket serverlərinin üfüqi ölçeklənməsi. Tək instansda minlərlə eyni vaxtda əlaqə, klasterdə milyonlar.

Əlaqə monitorinqi

Grafana panelləri: aktiv əlaqələr, bant genişliyi, gecikmələr. Əlaqə keyfiyyəti azaldıqda Telegram-da xəbərdarlıqlar.

WebSocket qoşulma nümunəsi:
const ws = new WebSocket("wss://api.example.com/ws");

ws.onmessage = (event) => {
  // Polling olmadan ani bildiriş alma
  showNotification(JSON.parse(event.data));
};

ws.onclose = () => ws.reconnect(); // Avtomatik yenidən qoşulma

Real-time — istifadəçinin gözləməməsidir. Gecikmənin millisaniyələrlə ölçüldüyü və əlaqə itkisində belə mesaj çatdırılmasının zəmanətli olduğu sistemlər qururuq.

Danışaq

Hər hansı sorğu və ya əməkdaşlıq imkanları üçün bizimlə əlaqə saxlamaqdan çəkinməyin.

Layihəni müzakirə et