Jak skalować websockety?

0

Mój pomysł na pracę dyplomową na podyplomówce Big Data o streamowaniu danych zaczyna się komplikować.
Nie pomyślałem wcześniej o tym jak będę skalował tę aplikację, a o to przecież chodzi w tym całym Big Data.

W skrócie aplikacja będzie robić to:

O ile Apache Kafka czy Postgres umie działać na klastrach, więc się skaluje o tyle Springowe Websockety nie.
Potrzebuję jakiegoś brokera STOMP? ActiveMQ? RabitMQ z biblioteką do STOMP?
No, bo na front streamować z Kafki to chyba słabe rozwiązanie?

1

Jakiś broker wiadomości, może być RabbitMq albo Redis. Chociaż masz już tam Kafkę, to nie wiem po co dokładać.

A dlaczego websocket, a nie np. HTTP/2 push albo SSE? Jak będziesz skalowalnoć websockety na load balancerze?

I co robi tam ten biedny Postgres w świecie Big Data? :)

Ogólnie też bez konkretów nt. wolumenu danych, liczby użytkowników, wymagań odnośnie latency ciężko coś zaproponować sensownego. Może dałoby radę to opazdzierzyć na postgresie i zrobić zwykły polling. Wyjdź od czegoś prostego.

1

Musisz utworzyć zdalny rejestr MultiServerUserRegistry i zrobić load balancing

0
Charles_Ray napisał(a):

Jakiś broker wiadomości, może być RabbitMq albo Redis. Chociaż masz już tam Kafkę, to nie wiem po co dokładać.

Kafka nie obsługuje protokołu STOMP...

A dlaczego websocket, a nie np. HTTP/2 push albo SSE? Jak będziesz skalowalnoć websockety na load balancerze?

no właśnie nie wiem jak...

I co robi tam ten biedny Postgres w świecie Big Data? :)

A jaką inną bazę proponujesz?
Dane będą ustrukturyzowane. Postgres skaluje się elegancko i ma dedykowaną wersję do szeregów czasowych: timescaledb

1

Co tu jest chyba fundamentalnie nie tak, wyglada jakby było mega scouplowane. Na Kafce masz eventy, które konsumenci pushują do websocketa i dopiero tam mówimy o stompie.

Nie znam tej bazy i nie wiem co tam chcesz trzymać - może to być use case na Cassandrę, może na Influxa, ale nie znam wymagań :)

Ogólnie poczytaj o Lambda/Kappa Architecture, nie musisz wynajdywać koła od nowa.

1

Z ciekawostek to jest coś takiego jak CockroachDB i jest to rozproszona baza danych dość dobrze udająca Postgresa (na poziomie protokołu i SQL).
Udawanie postgresa na pewno działa dobrze. Co do skalowania to niestety poza "marketingiem" wiem niewiele więcej - mam za małe (na razie) aplikacje na tym.

0

Pisałeś tu websocket do notowań kryptowalut że będziesz dane z sieci zasysać. Rozumiem, że w jakiś sposób przetworzysz te dane i wyslesz na swój front. Sorry, jeżeli coś upraszczam, ale po co w ogóle Ci w takim razie jest Postgress, znaczy właściwie DB w ogólności? Co Ty w tej DB chcesz trzymać?

0
Charles_Ray napisał(a):

Nie znam tej bazy i nie wiem co tam chcesz trzymać - może to być use case na Cassandrę, może na Influxa, ale nie znam wymagań :)

PanamaJoe napisał(a):

Pisałeś tu websocket do notowań kryptowalut że będziesz dane z sieci zasysać. Rozumiem, że w jakiś sposób przetworzysz te dane i wyslesz na swój front. Sorry, jeżeli coś upraszczam, ale po co w ogóle Ci w takim razie jest Postgress, znaczy właściwie DB w ogólności? Co Ty w tej DB chcesz trzymać?

np. tak o:

To DB to w sumie kij z nim, może go nie być, ale kafka ma connectory, więc to mam za darmo. Problem jest w tym, że z Apache Kafka Streams nie wiem jak wysłać na front.

0

Problem jest w tym, że z Apache Kafka Streams nie wiem jak wysłać na front.

Pierwszy wynik w Google https://www.confluent.io/blog[...]sing-kafka-connect-http-sink/

Jak pisałem wcześniej, nie tylko websockety są na świecie, tym bardziej, że nie potrzebujesz komunikacji w 2 strony.

1

@NamingException: W Quarkusie np, możesz zmapować kafkowy topic na reactive Publisher, a następnie wystawić taki publisher jako SSE endpoint.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0