BT

Experimente a nova interface visual do InfoQ! Veja o novo design do InfoQ 3.0 e nos diga o que você achou.

O Facebook abre o código do Proxygen, um framework HTTP que suporta o protocolo SPDY 3.1

| por Abel Avram Seguir 12 Seguidores , traduzido por Paulo Vitor Rendeiro Seguir 1 Seguidores em 09 jan 2015. Tempo estimado de leitura: 2 minutos |

A ideia por trás do Proxygen não é substituir o Apache mas possibilitar a criação de um web server de alta performance especializado, capaz de ser embarcado em aplicações existentes provendo web services. O Facebook inicialmente começou a construir um servidor proxy (daí a origem do nome Proxygen) em 2011 e, agora que o projeto evoluiu e tem sido testado em produção por alguns anos, eles estão tornando o código aberto.

Por que não começar com um Apache, Nginx ou outro servidor web? O Facebook destacou uma série de motivos:

  • Habilidade de integração com sua infraestrutura e ferramentas (Thrift, ODS);
  • Criação de uma biblioteca orientada a eventos passível de ser utilizada em diferentes projetos internos (Haystack,HHVM, load balancer, etc.);
  • De acordo com o Facebook, sua infraestrutura HTTP anterior tinha atingido alguns limites de escalabilidade e demandava "muitos workarounds", então eles queriam algo que pudesse ser desenvolvido internamente e bem como desejassem;
  • Um número de funcionalidades estava faltando nos servidores HTTP existentes naquela época: SPDY, WebSockets, HTTP/1.1 (Keep-alive), TLS false start, e algorítimos específicos de programação de carga.

O Proxygen utiliza os seguintes conceitos: transação, sessão, codec e manipulador. A transação representa um par "request-response" trocado entre um cliente e um servidor. Uma sequência destas transações representa uma sessão. Os bytes vindos do cliente são convertidos em objetos por um codec que os associa a uma transação. A mensagem é, eventualmente, encaminhada para um manipulador, onde é processada. Uma vez que é possível interagirmos com o framework em baixo nível de codecs e transações, os desenvolvedores são orientados a usar abstrações de mais alto nível através de uma API.

O Proxygen depende das seguintes abstrações de dados e rede:

  • Folly - uma biblioteca de código aberto, escrita em C++, que contém 11 componentes usados internamente pelo Facebook, entre eles um framework de benchmarking de código, conversões endian primitivas, strings e vetores otimizados, serializador de JSON, entre outros;
  • FBThrift - um branch do Apache Trift.

O Proxygen possui suporte para o protocolo SPDY 3.1 e está adicionando suporte para o protocolo HTTP/2. Durante um benchmarking interno realizado pelo Facebook em um servidor Proxygen, com 32 processadores lógicos Xeon CPU E5-2670 @ 2.60GHz com 16 GB de memória RAM e utilizando o protocolo SPDY 3.1, serviu até 304.197 requisições GET em memória por segundo.

O código-fonte disponibilizado no GitHub foi testado no Ubuntu 14.04, mas o Facebook considera o seu uso seguro em outros sistemas operacionais, sem especificar quais.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
BT