Come funziona una rete whatsapp back end, che tipo di struttura di rete viene utilizzata?
WhatsApp Messenger: Più di 1 miliardo di persone in oltre 180 paesi usano WhatsApp per rimanere in contatto e sono le tecnologie che hanno davvero reso WhatsApp così potente da diventare parte della nostra vita.
WhatsApp nel backend usa tutte queste tecnologie
- Erlang
- FreeBSDYaws
- lighttpd
- PHP
- Patch personalizzati per BEAM (BEAM è come la JVM di Java, ma per Erlang)
- Custom XMPP
Quindi come funziona realmente-
- Il server di WhatsApp è quasi completamente implementato in Erlang. I sistemi server che fanno il routing dei messaggi di backend sono fatti in Erlang. Il grande risultato è che il numero di utenti attivi è gestito con un ingombro del server veramente piccolo. Il consenso del team è che è in gran parte merito di Erlang.
- Il server di WhatsApp è partito da ejabberd. Ejabberd è un famoso server Jabber open source scritto in Erlang.Originariamente scelto perché era aperto, aveva grandi recensioni da parte degli sviluppatori, facilità di avvio e la promessa di idoneità a lungo termine di Erlang per un grande sistema di comunicazione. Gli anni successivi sono stati spesi per riscrivere e modificare parecchie parti di ejabberd, incluso il passaggio da XMPP a un protocollo sviluppato internamente, ristrutturando il codice base e ridisegnando alcuni componenti principali, e facendo molte modifiche importanti alla VM Erlang per ottimizzare le prestazioni del server
- Un indicatore primario della salute del sistema è la lunghezza della coda dei messaggi. La lunghezza della coda dei messaggi di tutti i processi su un nodo è costantemente monitorata e viene inviato un allarme se si accumulano arretrati oltre una soglia prestabilita. Se uno o più processi rimangono indietro, questo viene segnalato, il che fornisce un indicatore del prossimo collo di bottiglia da attaccare.
- I messaggi multimediali vengono inviati caricando l'immagine, l'audio o il video da inviare a un server HTTP e poi inviando un link al contenuto insieme alla sua miniatura codificata in Base64 (se applicabile).
- Alcuni codici vengono solitamente inviati ogni giorno. Spesso, è più volte al giorno, anche se in generale le ore di picco del traffico vengono evitate. Erlang aiuta ad essere aggressivi nel portare correzioni e caratteristiche in produzione. Hot-loading significa che gli aggiornamenti possono essere spinti senza riavvii o spostamenti di traffico. Gli errori di solito possono essere annullati molto rapidamente, sempre tramite l'hot-loading. I sistemi tendono ad essere molto più liberamente accoppiati, il che rende molto facile distribuire le modifiche in modo incrementale.
- Quale protocollo viene usato nell'app Whatsapp? Il socket SSL ai pool di server di WhatsApp. Tutti i messaggi sono accodati sul server fino a quando il client non si ricollega per recuperare i messaggi. L'avvenuto recupero di un messaggio viene rimandato al server whatsapp che inoltra questo stato al mittente originale (che lo vedrà come un'icona "segno di spunta" accanto al messaggio). I messaggi vengono cancellati dalla memoria del server non appena il client ha accettato il messaggio
- Come funziona internamente il processo di registrazione in Whatsapp? Inizialmente WhatsApp creava un nome utente/password basato sul numero IMEI del telefono. Questo è stato cambiato e WhatsApp ora utilizza una richiesta generale dall'app per inviare un PIN unico di 5 cifre. WhatsApp invierà quindi un SMS al numero di telefono indicato (questo significa che il client di WhatsApp non ha più bisogno di funzionare sullo stesso telefono). Sulla base del numero di pin l'app richiede poi una chiave unica a WhatsApp. Questa chiave viene utilizzata come "password" per tutte le chiamate future. (questa chiave "permanente" è memorizzata sul dispositivo). This also means that registering a new device will invalidate the key on the old device.
- Google’s push service is used on Android.
- Developers are able to prototype a feature and push it out to hundreds of millions users overnight.
So this is how WhatsApp works !!
Hope it helps :)