Casa > W > What Is Whatsapp's Server Architecture?

What is WhatsApp's server architecture?

HighScalability pieced this together from various sources on the web they could find in Feb 2014, a week after their acquisition: The WhatsApp Architecture Facebook Bought For $19 Billion - High Scalability -

The gist of their scale of servers:

  • Hundreds of nodes
  • >8000 cores
  • Hundreds of terabytes of RAM


Components of their backend stack:

  • Erlang
  • FreeBSD
  • Yaws, lighttpd
  • PHP
  • Custom patches to BEAM (BEAM is like Java’s JVM, but for Erlang)
  • Custom XMPP
  • Hosting may be in Softlayer


Brief description of how their Erlang services work:

  • WhatsApp server is almost completely implemented in Erlang.
    • Server systems that do the backend message routing are done in Erlang.
    • Great achievement is that the number of active users is managed with a really small server footprint. O consenso da equipe é que é em grande parte devido ao Erlang.
    • Interesting to note que o Facebook Chat foi escrito em Erlang em 2009, mas eles se afastaram dele porque era difícil encontrar programadores qualificados.
  • WhatsServidor App começou de ejabberd
    >ul>>>li>Ejabberd é um famoso servidor Jabber de código aberto escrito em Erlang.
    >/li>>li>li>Originalmente escolhido porque o seu aberto, teve grandes revisões por parte dos programadores, facilidade de início e a promessa da adequação a longo prazo de Erlang para grandes sistemas de comunicação.
  • Os anos seguintes foram gastos reescrevendo e modificando algumas partes do ejabberd, incluindo a mudança do XMPP para o protocolo desenvolvido internamente, reestruturando a base de código e redesenhando alguns componentes principais, e fazendo muitas modificações importantes no Erlang VM para otimizar a performance do servidor.
Para lidar com 50 bilhões de mensagens por dia, o foco está em fazer um sistema confiável que funcione. A monetização é algo para se ver mais tarde, é muito longe.
>li> Um indicador primário da saúde do sistema é o comprimento da fila de mensagens. O comprimento da fila de mensagens de todos os processos em um nó é constantemente monitorado e um alerta é enviado se eles acumularem backlog além de um limite pré-definido. Se um ou mais processos ficarem para trás, o que dá um ponteiro para o próximo gargalo a ser atacado.
>li>li>Multimedia messages are sent by uploading the image, audio or video to be sent to an HTTP server and then sending a link to the content along with its Base64 encoded thumbnail (if applicable).
Some código é normalmente empurrado todos os dias. Muitas vezes, é várias vezes ao dia, embora em geral sejam evitados horários de pico de tráfego. O Erlang ajuda a ser agressivo na obtenção de correções e características na produção. Carregamento a quente significa que as atualizações podem ser empurradas sem reinicializações ou mudanças de tráfego. Erros geralmente podem ser corrigidos muito rapidamente, novamente através de carregamento a quente. Os sistemas tendem a ser muito mais frouxamente acoplados, o que faz com que seja muito fácil fazer mudanças de forma incremental.
li>>Que protocolo é usado no aplicativo Whatsapp? Soquete SSL para os pools do servidor WhatsApp. Todas as mensagens são enfileiradas no servidor até o cliente se reconectar para recuperar as mensagens. A recuperação bem sucedida de uma mensagem é enviada de volta para o servidor Whatsapp que reencaminha este estado de volta para o remetente original (que verá isso como um ícone de "checkmark" ao lado da mensagem). As mensagens são apagadas da memória do servidor assim que o cliente tiver aceite a mensagem


>>e os slides originais apresentados pelo WhatsApp em 2012 sobre como escalaram a sua pilha Erlang para 2M ligações TCP num único host está aqui: http://www.erlang-factory.com/upload/presentations/558/efsf2012-whatsapp-scaling.pdf

De Battista

Podemos utilizar o WhatsApp para uso pessoal? :: A câmera do Galaxy S9 Plus terá recursos de IA como Mate 10 ou Google Pixel 2?