QNA > Q > Quale Tecnologia È Usata In Whatsapp?

Quale tecnologia è usata in WhatsApp?

Fonte: L'architettura di WhatsApp che Facebook ha comprato per 19 miliardi di dollari - Alta scalabilità

Ecco la spiegazione generale dal link

  • Il server di WhatsApp è quasi completamente implementato in Erlang.
  • I sistemi server che fanno il routing dei messaggi backend sono fatti in Erlang.
  • Il grande risultato è che il numero di utenti attivi è gestito con un ingombro del server davvero piccolo. Il consenso del team è che è in gran parte merito di Erlang.
  • Interessante notare che Facebook Chat è stata scritta in Erlang nel 2009, ma l'hanno abbandonata perché era difficile trovare programmatori qualificati.
  • Il server di WhatsApp è partito da ejabberd
  • Ejabberd è un famoso server Jabber open source scritto in Erlang.
  • Originariamente scelto perché era aperto, aveva ottime recensioni da parte degli sviluppatori, facilità di avvio e la promessa di idoneità a lungo termine di Erlang per grandi sistemi di comunicazione.
  • I prossimi anni sono stati spesi a riscrivere e modificare parecchie parti di ejabberd, incluso il passaggio da XMPP al protocollo sviluppato internamente, ristrutturando il codice base e riprogettando alcuni componenti principali, e facendo molte modifiche importanti alla Erlang VM per ottimizzare le prestazioni del server.
  • Per gestire 50 miliardi di messaggi al giorno l'attenzione è rivolta a creare un sistema affidabile che funzioni. La monetizzazione è qualcosa a cui guardare dopo, è molto lontana nel tempo.
  • 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? WhatsApp era solito creare un nome utente/password basato sul numero IMEI del telefono. Questo è stato cambiato di recente. 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 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). Questo significa anche che la registrazione di un nuovo dispositivo invaliderà la chiave sul vecchio dispositivo.

Di Aruabea Shemanski

L'iPad può connettersi a due dispositivi Bluetooth contemporaneamente? :: Possiamo collegare più altoparlanti bluetooth a un dispositivo mobile?
Link utili