1) O documento discute como usar as ferramentas PHP, Memcached e Gearman para distribuir processamento e armazenamento em cache para melhorar escalabilidade e desempenho de aplicações.
2) Memcached é usado para armazenar objetos em memória RAM compartilhada para acelerar acessos frequentes e aliviar bancos de dados.
3) Gearman distribui tarefas assíncronas entre servidores para processamento paralelo e balanceamento de carga.
Ao infinito e além com PHP memcached e GearmanElton Minetto
São apresentados o Gearman e o Memcached. O Gearman é um framework genérico para gerenciar filas de tarefas de forma que possam ser executadas em paralelo, com balanceamento de carga e acessíveis a múltiplas linguagens de programação. O Memcached é um sistema distribuído e de alta performance para fazer cache de objetos em memória RAM. São de extrema utilidade em sites e aplicativos com grande carga de processamento e necessidades de escalabilidade.
O documento descreve os métodos e procedimentos para instalação e configuração do OpenNebula, incluindo a instalação nos nós front-end e de hospedagem, compartilhamento de armazenamento, configuração de serviços e criação de máquinas virtuais.
1. Opennebula é uma solução open-source para virtualização de data centers que permite construir e gerenciar nuvens e data centers virtualizados de forma simples, rica e flexível.
2. O documento descreve as características, interfaces, componentes e hipervisores suportados pelo Opennebula.
3. É apresentada uma comparação entre o Opennebula e outras soluções de nuvem, destacando suas arquiteturas, clientes e recursos suportados.
Desenvolvendo aplicações Web escaláveis com PHPElton Minetto
O documento discute estratégias para desenvolver aplicações web escaláveis com PHP. Ele aborda otimizações que podem ser feitas nos servidores web, no MySQL, no PHP e no frontend para melhorar a performance e capacidade. Algumas técnicas mencionadas incluem usar servidores dedicados para conteúdo estático, sharding de dados, cache, e dividir a carga entre múltiplos servidores. O documento também fornece exemplos de arquiteturas escaláveis e lições aprendidas com casos reais.
O documento descreve o serviço de armazenamento na nuvem MEO Cloud, incluindo sua arquitetura backend, aplicativos de desktop e API pública. A arquitetura backend usa Cassandra para armazenamento de metadados e Swift para armazenamento de arquivos. Os aplicativos de desktop são desenvolvidos para Windows, macOS e Linux usando Python, C++ e Objective-C. A API pública oferece mais de 40 operações para acesso aos dados do usuário.
Marcelo Gomes tem mais de 10 anos de experiência em redes Linux e é professor universitário. Ele administra vários clusters e mantém um blog sobre tecnologia. Seu documento explica o que são servidores, arquitetura cliente-servidor, Linux e distribuições Linux, além de discutir RAID, SSH, NFS e Samba.
Ligacao Em Rede A Outros Sistemas Operativosarturramisio
O documento discute a configuração do cliente NFS e do serviço NFS para compartilhamento de arquivos entre sistemas Linux. Ele explica como montar uma partilha NFS em um cliente Linux e configurar o serviço NFS em um servidor Linux para fornecer a partilha. Além disso, discute como configurar acesso a partilhas Windows usando Samba e a partilhas NetWare usando ncpmount.
Ao infinito e além com PHP memcached e GearmanElton Minetto
São apresentados o Gearman e o Memcached. O Gearman é um framework genérico para gerenciar filas de tarefas de forma que possam ser executadas em paralelo, com balanceamento de carga e acessíveis a múltiplas linguagens de programação. O Memcached é um sistema distribuído e de alta performance para fazer cache de objetos em memória RAM. São de extrema utilidade em sites e aplicativos com grande carga de processamento e necessidades de escalabilidade.
O documento descreve os métodos e procedimentos para instalação e configuração do OpenNebula, incluindo a instalação nos nós front-end e de hospedagem, compartilhamento de armazenamento, configuração de serviços e criação de máquinas virtuais.
1. Opennebula é uma solução open-source para virtualização de data centers que permite construir e gerenciar nuvens e data centers virtualizados de forma simples, rica e flexível.
2. O documento descreve as características, interfaces, componentes e hipervisores suportados pelo Opennebula.
3. É apresentada uma comparação entre o Opennebula e outras soluções de nuvem, destacando suas arquiteturas, clientes e recursos suportados.
Desenvolvendo aplicações Web escaláveis com PHPElton Minetto
O documento discute estratégias para desenvolver aplicações web escaláveis com PHP. Ele aborda otimizações que podem ser feitas nos servidores web, no MySQL, no PHP e no frontend para melhorar a performance e capacidade. Algumas técnicas mencionadas incluem usar servidores dedicados para conteúdo estático, sharding de dados, cache, e dividir a carga entre múltiplos servidores. O documento também fornece exemplos de arquiteturas escaláveis e lições aprendidas com casos reais.
O documento descreve o serviço de armazenamento na nuvem MEO Cloud, incluindo sua arquitetura backend, aplicativos de desktop e API pública. A arquitetura backend usa Cassandra para armazenamento de metadados e Swift para armazenamento de arquivos. Os aplicativos de desktop são desenvolvidos para Windows, macOS e Linux usando Python, C++ e Objective-C. A API pública oferece mais de 40 operações para acesso aos dados do usuário.
Marcelo Gomes tem mais de 10 anos de experiência em redes Linux e é professor universitário. Ele administra vários clusters e mantém um blog sobre tecnologia. Seu documento explica o que são servidores, arquitetura cliente-servidor, Linux e distribuições Linux, além de discutir RAID, SSH, NFS e Samba.
Ligacao Em Rede A Outros Sistemas Operativosarturramisio
O documento discute a configuração do cliente NFS e do serviço NFS para compartilhamento de arquivos entre sistemas Linux. Ele explica como montar uma partilha NFS em um cliente Linux e configurar o serviço NFS em um servidor Linux para fornecer a partilha. Além disso, discute como configurar acesso a partilhas Windows usando Samba e a partilhas NetWare usando ncpmount.
1) O documento fornece instruções para instalação e configuração do sistema I-Educar, incluindo requisitos do sistema, como PHP, Apache, PostgreSQL e biblioteca PDFLib.
2) Ele descreve o processo de compilação e instalação da biblioteca PDFLib no Ubuntu, necessária para geração de PDFs pelo I-Educar.
3) Também explica como baixar, descompactar e configurar o banco de dados PostgreSQL 8.2.19, versão homologada para o I-Educar.
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...Danilo Ricardo
1) O documento fornece instruções para instalar o Player, Stage e Gazebo no Ubuntu 10.10, incluindo baixar pré-requisitos e adicionar repositórios de software.
2) Passo a passo é dado para compilar e instalar ODE e OGRE, instalar build-essential, adicionar o PPA thjc e instalar o Player.
3) Instruções instalam o Stage para testar o Player e dependentes do Gazebo, então instalam o Gazebo e definem o caminho OGRE.
Este documento discute a implementação de logs, autenticação e autorização em um projeto Node.js e Express. Ele explica como configurar Morgan para registrar requisições, Winston para registrar logs de código e JWT para autenticar usuários e proteger rotas.
O documento apresenta um curso avançado de treinamento em Linux com 40 horas de duração, ministrado pela Firewalls Security Corporation. O curso aborda tópicos como shell script, ferramentas de rede, compactadores de arquivos, configuração de servidores e segurança, entre outros. A versão 1.5 do curso inclui novas seções sobre NFS, SAMBA e segurança, além de correções em conteúdos anteriores.
Este documento resume um tutorial sobre como configurar e utilizar uma placa BeagleBoard. Ele descreve:
1) Dois métodos para instalar uma distribuição Linux na BeagleBoard - via download de uma imagem pré-configurada ou instalação via rede durante o boot.
2) Como fornecer internet à BeagleBoard através de um computador Linux usando um adaptador USB.
3) Como instalar pacotes e atualizar o sistema operacional diretamente no cartão SD da BeagleBoard usando o computador Linux.
4) Os passos para instalar a interface
O documento discute a implementação de persistência de dados em um projeto Node.js usando arquivos e bancos de dados MySQL e MongoDB. Ele aborda módulos, persistência em arquivos, segurança de senhas com bcrypt, uso do MySQL com queries e ORM Sequelize e próximos passos do projeto.
O documento fornece uma introdução sobre sistemas operacionais, especificamente o Ubuntu. Resume a história do Ubuntu, suas versões, instalação, gerenciamento de pacotes e comparação com o Windows Vista.
Gerenciamento de Backups PostgreSQL com pgbarmanJuliano Atanazio
O documento descreve o uso da ferramenta pgbarman para gerenciamento de backups do PostgreSQL. O pgbarman permite fazer backups remotos de múltiplos servidores PostgreSQL, auxiliando DBAs na recuperação de dados. É apresentada a instalação, configuração e uso básico do pgbarman, incluindo a criação de servidores, listagem de configurações e backups.
9 - segurança - ataques buffer-injectionAndre Peres
O documento discute ataques de buffer overflow, explicando como eles podem ser usados para executar código malicioso. Descreve como o overflow invade a pilha e sobrescreve o endereço de retorno para apontar para código inserido pelo atacante. Também explica como o overflow no heap pode alterar ponteiros e unir blocos de memória para causar overflow na pilha.
[1] O documento apresenta o Banana Pi, um computador de placa única baseado no processador Allwinner A20 e com características similares ao Raspberry Pi. [2] Discutem-se possibilidades de software para o Banana Pi, com foco no sistema operacional Bananian Linux baseado em Debian. [3] Demonstram-se procedimentos para configurar e usar o Bananian Linux na Banana Pi, incluindo a criação de um repositório local para pacotes.
1) O documento discute vários tópicos relacionados à segurança em servidores Linux, incluindo hardening da instalação, controle de acesso, firewalls, auditoria e autenticação.
2) A agenda inclui tópicos como hardening da instalação, mecanismos de proteção, controle de acessos, fortalecimento de serviços, soluções de segurança, planejamento do ambiente seguro e certificações.
3) O documento fornece dicas sobre como melhorar a segurança na instalação do Linux, como desat
O documento apresenta uma introdução ao sistema operacional Linux, incluindo sua história, licença GPL, diferentes distribuições ("distros"), motivação para seu uso, instalação, conceitos básicos e referências. A agenda inclui tópicos como a história do GNU/Linux, licença GPL, o que são "distros", motivação para usar Linux, instalação e conceitos de sobrevivência como usuários e comandos básicos.
O documento fornece um guia passo-a-passo para instalar o MySQL em 10 minutos ou menos. Ele explica como baixar o pacote binário do MySQL, descompactá-lo, criar o usuário e diretórios necessários, configurar as permissões e parâmetros, inicializar o banco de dados e realizar ajustes básicos de segurança antes de deixar o servidor pronto para uso.
1. Existem diversas formas de instalar programas em Linux, como a partir do código fonte, RPM, YUM, APT-GET e repositórios.
2. RPM é o gerenciador de pacotes mais utilizado em distros Linux, permitindo instalar, atualizar e remover programas.
3. YUM e DNF facilitam a instalação automatizando o download e resolvendo dependências, buscando pacotes em repositórios on-line.
1 - redes de computadores - introção a redes de computadores e topologiasAndre Peres
O documento apresenta uma introdução sobre redes de computadores, abordando os seguintes tópicos: topologias físicas de redes locais como barra, estrela e anel; o papel do switch na topologia estrela para permitir comunicações simultâneas e evitar colisões; e os usos mais comuns atuais das topologias estrela e barra.
Como definir a quantidade de workers para sua aplicaçãoWeverton Timoteo
O documento discute diferentes opções de servidores de aplicação para Ruby on Rails, incluindo Unicorn, Puma e Passenger. Explica os modelos de I/O bloqueante, multithreading e event-driven, e como cada servidor se encaixa nesses modelos. Também fornece recomendações sobre como escolher e configurar um servidor de aplicação para diferentes tipos de aplicações.
Este documento fornece instruções sobre como customizar o Slackware Linux. Explica como modificar arquivos como o initrd.img para personalizar o processo de inicialização e como alterar os scripts e pacotes de instalação. Também descreve a estrutura de diretórios do Slackware Linux.
O documento discute técnicas para otimizar o desempenho de websites desenvolvidos em PHP. Ele aborda ajustes que podem ser feitos no servidor web e no banco de dados para melhorar a performance, como utilização de módulos do Apache, configuração do MySQL e uso de cache. Além disso, apresenta técnicas de profiling em PHP para identificar gargalos e otimizações como compactação de arquivos e static assets.
Integração de Sistemas usando tecnologias open sourceTiago Peczenyj
O documento discute a integração de sistemas para publicação de vídeos no site Globo.com utilizando arquitetura baseada em microsserviços e comunicação REST. O fluxo de publicação é dividido em etapas independentes executadas por deamons e a integração é feita através de uma API REST centralizada que gerencia o estado de cada vídeo. A arquitetura proposta permite escalabilidade, alta disponibilidade e recuperação mais fácil em caso de falhas.
1) O documento fornece instruções para instalação e configuração do sistema I-Educar, incluindo requisitos do sistema, como PHP, Apache, PostgreSQL e biblioteca PDFLib.
2) Ele descreve o processo de compilação e instalação da biblioteca PDFLib no Ubuntu, necessária para geração de PDFs pelo I-Educar.
3) Também explica como baixar, descompactar e configurar o banco de dados PostgreSQL 8.2.19, versão homologada para o I-Educar.
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...Danilo Ricardo
1) O documento fornece instruções para instalar o Player, Stage e Gazebo no Ubuntu 10.10, incluindo baixar pré-requisitos e adicionar repositórios de software.
2) Passo a passo é dado para compilar e instalar ODE e OGRE, instalar build-essential, adicionar o PPA thjc e instalar o Player.
3) Instruções instalam o Stage para testar o Player e dependentes do Gazebo, então instalam o Gazebo e definem o caminho OGRE.
Este documento discute a implementação de logs, autenticação e autorização em um projeto Node.js e Express. Ele explica como configurar Morgan para registrar requisições, Winston para registrar logs de código e JWT para autenticar usuários e proteger rotas.
O documento apresenta um curso avançado de treinamento em Linux com 40 horas de duração, ministrado pela Firewalls Security Corporation. O curso aborda tópicos como shell script, ferramentas de rede, compactadores de arquivos, configuração de servidores e segurança, entre outros. A versão 1.5 do curso inclui novas seções sobre NFS, SAMBA e segurança, além de correções em conteúdos anteriores.
Este documento resume um tutorial sobre como configurar e utilizar uma placa BeagleBoard. Ele descreve:
1) Dois métodos para instalar uma distribuição Linux na BeagleBoard - via download de uma imagem pré-configurada ou instalação via rede durante o boot.
2) Como fornecer internet à BeagleBoard através de um computador Linux usando um adaptador USB.
3) Como instalar pacotes e atualizar o sistema operacional diretamente no cartão SD da BeagleBoard usando o computador Linux.
4) Os passos para instalar a interface
O documento discute a implementação de persistência de dados em um projeto Node.js usando arquivos e bancos de dados MySQL e MongoDB. Ele aborda módulos, persistência em arquivos, segurança de senhas com bcrypt, uso do MySQL com queries e ORM Sequelize e próximos passos do projeto.
O documento fornece uma introdução sobre sistemas operacionais, especificamente o Ubuntu. Resume a história do Ubuntu, suas versões, instalação, gerenciamento de pacotes e comparação com o Windows Vista.
Gerenciamento de Backups PostgreSQL com pgbarmanJuliano Atanazio
O documento descreve o uso da ferramenta pgbarman para gerenciamento de backups do PostgreSQL. O pgbarman permite fazer backups remotos de múltiplos servidores PostgreSQL, auxiliando DBAs na recuperação de dados. É apresentada a instalação, configuração e uso básico do pgbarman, incluindo a criação de servidores, listagem de configurações e backups.
9 - segurança - ataques buffer-injectionAndre Peres
O documento discute ataques de buffer overflow, explicando como eles podem ser usados para executar código malicioso. Descreve como o overflow invade a pilha e sobrescreve o endereço de retorno para apontar para código inserido pelo atacante. Também explica como o overflow no heap pode alterar ponteiros e unir blocos de memória para causar overflow na pilha.
[1] O documento apresenta o Banana Pi, um computador de placa única baseado no processador Allwinner A20 e com características similares ao Raspberry Pi. [2] Discutem-se possibilidades de software para o Banana Pi, com foco no sistema operacional Bananian Linux baseado em Debian. [3] Demonstram-se procedimentos para configurar e usar o Bananian Linux na Banana Pi, incluindo a criação de um repositório local para pacotes.
1) O documento discute vários tópicos relacionados à segurança em servidores Linux, incluindo hardening da instalação, controle de acesso, firewalls, auditoria e autenticação.
2) A agenda inclui tópicos como hardening da instalação, mecanismos de proteção, controle de acessos, fortalecimento de serviços, soluções de segurança, planejamento do ambiente seguro e certificações.
3) O documento fornece dicas sobre como melhorar a segurança na instalação do Linux, como desat
O documento apresenta uma introdução ao sistema operacional Linux, incluindo sua história, licença GPL, diferentes distribuições ("distros"), motivação para seu uso, instalação, conceitos básicos e referências. A agenda inclui tópicos como a história do GNU/Linux, licença GPL, o que são "distros", motivação para usar Linux, instalação e conceitos de sobrevivência como usuários e comandos básicos.
O documento fornece um guia passo-a-passo para instalar o MySQL em 10 minutos ou menos. Ele explica como baixar o pacote binário do MySQL, descompactá-lo, criar o usuário e diretórios necessários, configurar as permissões e parâmetros, inicializar o banco de dados e realizar ajustes básicos de segurança antes de deixar o servidor pronto para uso.
1. Existem diversas formas de instalar programas em Linux, como a partir do código fonte, RPM, YUM, APT-GET e repositórios.
2. RPM é o gerenciador de pacotes mais utilizado em distros Linux, permitindo instalar, atualizar e remover programas.
3. YUM e DNF facilitam a instalação automatizando o download e resolvendo dependências, buscando pacotes em repositórios on-line.
1 - redes de computadores - introção a redes de computadores e topologiasAndre Peres
O documento apresenta uma introdução sobre redes de computadores, abordando os seguintes tópicos: topologias físicas de redes locais como barra, estrela e anel; o papel do switch na topologia estrela para permitir comunicações simultâneas e evitar colisões; e os usos mais comuns atuais das topologias estrela e barra.
Como definir a quantidade de workers para sua aplicaçãoWeverton Timoteo
O documento discute diferentes opções de servidores de aplicação para Ruby on Rails, incluindo Unicorn, Puma e Passenger. Explica os modelos de I/O bloqueante, multithreading e event-driven, e como cada servidor se encaixa nesses modelos. Também fornece recomendações sobre como escolher e configurar um servidor de aplicação para diferentes tipos de aplicações.
Este documento fornece instruções sobre como customizar o Slackware Linux. Explica como modificar arquivos como o initrd.img para personalizar o processo de inicialização e como alterar os scripts e pacotes de instalação. Também descreve a estrutura de diretórios do Slackware Linux.
O documento discute técnicas para otimizar o desempenho de websites desenvolvidos em PHP. Ele aborda ajustes que podem ser feitos no servidor web e no banco de dados para melhorar a performance, como utilização de módulos do Apache, configuração do MySQL e uso de cache. Além disso, apresenta técnicas de profiling em PHP para identificar gargalos e otimizações como compactação de arquivos e static assets.
Integração de Sistemas usando tecnologias open sourceTiago Peczenyj
O documento discute a integração de sistemas para publicação de vídeos no site Globo.com utilizando arquitetura baseada em microsserviços e comunicação REST. O fluxo de publicação é dividido em etapas independentes executadas por deamons e a integração é feita através de uma API REST centralizada que gerencia o estado de cada vídeo. A arquitetura proposta permite escalabilidade, alta disponibilidade e recuperação mais fácil em caso de falhas.
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL Brasil
Uma boa explicação de porque utilizar MySQL e um passo a passo mostrando como instalá-lo em menos de 10 minutos. Slides da apresentação de Alexandre Almeida durante o OTN MySQL Community Forum 2011.
Este documento apresenta uma palestra sobre desenvolvimento de aplicações web escaláveis. Apresenta conceitos como performance, capacidade e escalabilidade. Discutem técnicas para otimizar os servidores web, banco de dados MySQL, PHP, cache, bibliotecas JavaScript e imagens. Apresenta métricas e ferramentas de monitoramento. Discutem arquiteturas escaláveis com balanceadores de carga, cache servers e sharding de dados.
Este documento fornece informações sobre segurança em servidores Linux de acordo com a norma ISO 27002. Resume as principais técnicas para garantir a segurança dos servidores, incluindo hardening do sistema, políticas de acesso, monitoramento e logs.
O documento apresenta um curso avançado de treinamento em Linux com 40 horas de duração, ministrado pela Firewalls Security Corporation. O curso aborda tópicos como shell script, ferramentas de rede, compactadores de arquivos, agendamento de tarefas, configuração de servidores e segurança. Foi atualizado para a versão 1.5 com correções e novas seções sobre NFS, SAMBA e segurança.
Apostila Treinamento AvançAdo Em Linuxguest7a481e8
O documento fornece um guia de treinamento avançado em Linux com 40 horas de duração. O treinamento irá cobrir tópicos como shell script, ferramentas de rede, compactadores de arquivos, configuração de servidores e segurança em Linux. A versão 1.5 do guia inclui atualizações e correções de erros na versão anterior.
1. O documento descreve a linguagem de programação PHP, incluindo sua história, características e popularidade.
2. PHP é uma linguagem server-side focada em criação de sistemas para web, criada em 1994 e amplamente utilizada em mais de 21 milhões de domínios.
3. A sintaxe de PHP é simples e influenciada por C, Perl e Java, tornando-a fácil de aprender, embora dominá-la completemente seja desafiador.
Este documento apresenta uma introdução ao curso de Segurança Linux e aborda tópicos como hardening do sistema operacional, rede e serviços, criptografia e tunning do kernel para fortalecimento da segurança.
Rafael Chiavegatto apresenta um tutorial sobre Docker para iniciantes. O documento inclui informações sobre o próprio Rafael Chiavegatto, conceitos básicos de Docker como imagens, containers e Dockerfiles, demonstrações práticas de comandos Docker e uma seção sobre Docker Compose.
O documento descreve como o Cygwin pode ser usado para administrar computadores Windows em um ambiente escolar, permitindo copiar arquivos, desligar máquinas remotamente e apagar conteúdo indesejado das áreas de usuário. Scripts foram criados para automatizar essas tarefas e fornecer uma interface amigável para usuários não técnicos. O Cygwin traz ferramentas do Linux para Windows, facilitando a administração da rede da escola.
Portando Aplicações Para a Plataforma MaemoEduardo Lima
O documento descreve o processo de porte de aplicações GNOME/GTK+ para a plataforma Maemo usada no Nokia 770, incluindo analisar a viabilidade do porte, compilar as dependências, hildonizar a interface e publicar os pacotes. O autor é pesquisador do Instituto Nokia de Tecnologia e já portou aplicações como Abiword, Evince e Gnumeric para a plataforma.
O documento discute a automação e gerenciamento de servidores com a ferramenta Puppet. Ele descreve os requisitos para gerenciar grandes quantidades de máquinas e minimizar repetições de tarefas. O Puppet é apresentado como uma boa alternativa por permitir gerenciar atividades repetitivas de forma centralizada e padronizada em diferentes sistemas operacionais.
Nodejs é uma plataforma de desenvolvimento para aplicações em tempo real e de alta escalabilidade utilizando Javascript no lado servidor, tendo sido criado em 2009 por Ryan Dahl para facilitar o desenvolvimento desse tipo de aplicação. Nodejs possui características como ser orientado a eventos, não bloqueante e utilizar o mesmo Javascript tanto no frontend quanto no backend.
O documento apresenta uma palestra sobre a ferramenta Puppet para gestão e automação de configurações em ambientes de TI. Ele discute como o Puppet pode ajudar a padronizar configurações, facilitar a administração de servidores e acelerar processos como implantação de novos sistemas. A palestra também demonstra conceitos e funcionalidades básicas do Puppet por meio de exemplos práticos.
O documento apresenta informações sobre o autor, incluindo seus contatos e interesses em programação web com node.js, tdd, css e js modular e noSQL. Também discute arquiteturas bloqueantes, a criação do node.js em 2009, como o event loop funciona com eventos de IO e não HTML, a instalação do node.js e do npm, como criar um projeto básico com express e definir rotas e views.
O documento fornece uma introdução abrangente ao Linux, cobrindo tópicos como:
1) O que é Linux e como ele se relaciona com sistemas operacionais;
2) As principais distribuições Linux;
3) Formatos abertos de documentos eletrônicos;
4) Servidores LAMP (Linux, Apache, MySQL, PHP).
1. Ao infinito e além com PHP, Memcached e Gearman
Elton Luís Minetto
segunda-feira, 29 de novembro de 2010
2. Quem sou eu?
• Graduado e pós-graduado em Ciência da Computação.
• Trabalha com PHP/MySQL/Linux desde 1998
• Autor do livro Frameworks para Desenvolvimento em
PHP - Editora Novatec e co-autor do livro Grid
Computing in Research and Education - IBM Redbooks
• Membro do PHPSC
• Professor na Unochapecó(Chapecó/SC)
• Sócio da Coderockr
segunda-feira, 29 de novembro de 2010
7. O problema
• Performance: a habilidade que uma aplicação tem de
atingir um objetivo, como por exemplo responder no
menor tempo possível
• Capacidade: a carga total que uma aplicação pode
suportar
• Escalabilidade: a habilidade de uma aplicação manter a
performance quando a carga de trabalho aumenta. É a
junção da capacidade e da performance
• “Performance is a problem. Scaling your performance is a
bigger problem”
segunda-feira, 29 de novembro de 2010
8. A solução
Distribua!
segunda-feira, 29 de novembro de 2010
9. Distribua!
Memória
segunda-feira, 29 de novembro de 2010
10. Distribua!
Trabalho
segunda-feira, 29 de novembro de 2010
14. O que é?
• Sistema distribuído e de alta performance para fazer
cache de objetos em memória RAM.
• Genérico por natureza mas muito usado para acelerar
aplicações web dinâmicas, reduzindo a carga de bases
de dados, sessões de usuários, arquivos CSS.
• Criado pela
segunda-feira, 29 de novembro de 2010
15. Por que usar?
• Escalável: fácil adicionar máquinas e instâncias
• RAM é muito mais rápido que I/O em disco
• Alivia a carga do banco de dados
• Muito flexível: pode armazenar qualquer dado, desde
que não ultrapasse 1 MB
• Bibliotecas client disponíveis em diversas linguagens
(PHP, C, Java, Ruby, Python)
• Open Source
segunda-feira, 29 de novembro de 2010
16. Como funciona?
• Armazena qualquer coisa que pode ser serializado
• Armazena com uma chave única (255 caracteres) e
tempo de validade
• O programador usa da seguinte forma :
• Encontrou no cache? Retorna os dados
• Não encontrou no cache? Processa, armazena no cache e
retorna o dado
segunda-feira, 29 de novembro de 2010
18. O que armazenar?
• Resultados de consultas SQL
• Páginas inteiras
• Sessões de usuários
• Fragmentos de HTML gerados
• Imagens (thumbnails)
• Arquivos css
• Arquivos js
• “Qualquer coisa que demore um pouco para ser gerada”
segunda-feira, 29 de novembro de 2010
19. Quem usa?
• Facebook
• 805 servidores 8-core. 28TB de RAM. 300K req/seg (Set. 2008)
• Desenvolveu fork com suporte a UDP
• http://github.com/fbmarc/facebook-memcached/tree/
master
• Flickr
• 38K req/seg. 12 milhões de objetos (Set. 2008)
• Digg
• Drimio
• Sessões de usuários, imagens, arquivos CSS, arquivos JS,
resultados de consultas SQL
segunda-feira, 29 de novembro de 2010
20. Como usar?
Baixar código em http://www.danga.com/memcached/
e...
tar -xvzf memcached-X.Y.Z.tar.gz
cd memcached-X.Y.Z
./configure
make
sudo make install
Santíssima Trindade
segunda-feira, 29 de novembro de 2010
21. Como usar?
• No exemplo abaixo iniciamos o daemon com 128MB
RAM, ouvindo na porta 11211 no ip 127.0.0.1
/usr/local/bin/memcached -d -m 128 -l 127.0.0.1 -p 11211
• Pode-se criar quantas instâncias forem necessárias,
mudando a porta. Assim aumenta-se o espaço total do
cache
segunda-feira, 29 de novembro de 2010
22. Como usar com PHP?
• Download do módulo em http://pecl.php.net/package/
memcache.
• e..
tar -xvzf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure
make
sudo make install (executar como root)
• Adicionar a linha abaixo no php.ini e reiniciar o Apache
extension=memcache.so
segunda-feira, 29 de novembro de 2010
23. Como usar com PHP?
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$memcache->connect('localhost', 11212);
$memcache->connect(’192.168.0.10', 11212);
$conteudo = $memcache->get('estados');
if($conteudo === false) {
$uf = array('SC','RS','SP');
$memcache->set('estados', $uf, false, 100) ;
$conteudo = $uf;
}
var_dump($conteudo);
?>
segunda-feira, 29 de novembro de 2010
24. API
• Comandos de armazenamento:
• set, add, replace, append
• Comandos de recuperação:
• get
• Comandos de exclusão:
• delete
• Outros comandos:
• stats, flush_all, version, verbosity, quit
segunda-feira, 29 de novembro de 2010
25. Monitorando
• Plugin para o Nagios
• memcache.php
segunda-feira, 29 de novembro de 2010
29. O que é?
• Framework genérico para distribuir jobs a serem
executados por uma ou mais máquinas
• Permite uma aplicação executar tarefas em paralelo,
com balanceamento da carga de processos, e até
invocar códigos escritos em outras linguagens
• O nome é um anagrama para "Manager"
• Criado pela
segunda-feira, 29 de novembro de 2010
30. Áreas de Aplicação
• Análise de logs
• Redimensionamento de imagens
• Processamento de URLs
• Atualização de cache
• Jobs de banco de dados
• etc
segunda-feira, 29 de novembro de 2010
31. Por que usar?
• Open Source com interfaces para desenvolver em várias
linguagens (C, PHP, Perl, MySQL UDF, Python, etc).
Clients podem ser em uma linguagem, workers em
outra
• Rápido - possui protocolo e interfaces simples, com um
servidor desenvolvido em C
• Escalável e tolerante a falhas
• Digg: +45 servers, 400mil jobs/dia (em 2009)
• Yahoo: +60 servers, 6milhões jobs/dia
• Síncrono ou assíncrono
segunda-feira, 29 de novembro de 2010
32. Como funciona?
• Client- Cria um job a ser executado e o envia a um
servidor de jobs
• Worker - Registra-se em um servidor de jobs e pega
jobs para executar
• Job Server - Recebe os jobs e coordena a entrega de um
job para um worker executar
segunda-feira, 29 de novembro de 2010
33. Como funciona?
Fonte: http://www.gearman.org
segunda-feira, 29 de novembro de 2010
34. Como funciona?
Fonte: http://www.gearman.org
segunda-feira, 29 de novembro de 2010
35. Síncrono X Assíncrono
• Síncrono, ou “em primeiro plano”(“foreground”). O
cliente fica parado esperando o fim da execução da
tarefa
• Assíncrono, ou “em segundo plano”(“background”). O
cliente continua sua execução e o trabalho vai ser
realizado por algum Worker. O cliente pode ser avisado
do status por métodos e callbacks
segunda-feira, 29 de novembro de 2010
36. Instalando
wget http://launchpad.net/gearmand/trunk/0.13/+download/
gearmand-X.Y.tar.gz
tar xfvz gearmand-X.Y.tar.gz
cd gearmand-X.Y
./configure
make
sudo make install
Lembra?
Santíssima Trindade
segunda-feira, 29 de novembro de 2010
37. Iniciando o server
• Simples:
/usr/local/sbin/gearmand -d
• Completo:
/usr/local/sbin/gearmand -d -u <user> -L <host> -p 70
• Sendo
-d Inicia como um daemon em background
-u <user> Executa como o usuário específico
-L <host> Fica ouvindo neste ip
-p <port> Ouve na porta específica (defaul 4730)
segunda-feira, 29 de novembro de 2010
38. PHP
• Instalando a extensão do PHP:
wget http://pecl.php.net/get/gearman-X.Y.Z.tgz
tar xfvz gearman-X.Y.Z.tgz
cd gearman-X.Y.Z
phpize
./configure
make
Acabou a
sudo make install criativade :(
• Adicionar no php.ini: Mas você
extension = gearman.so entendeu né?
segunda-feira, 29 de novembro de 2010
39. PHP - Exemplo: Cliente Síncrono
<?php
$client= new GearmanClient();
/*indica em quais servidores o cliente pode enviar jobs.
No caso somente o localhost, pois não é passado nada*/
$client->addServer();
/*adiciona um job síncrono, para a fila chamada title,
enviando uma string como parâmetro*/
print $client->do("title", "o Ivo andava de PATINS!!!");
print "n";
?>
segunda-feira, 29 de novembro de 2010
40. PHP - Exemplo: Worker Síncrono
<?php
$worker= new GearmanWorker();
$worker->addServer();//servidores q vai atender
/*registra a função title_function como responsável por
atender a fila title*/
$worker->addFunction("title", "title_function");
while ($worker->work()); //fica em loop trabalhando
//função que vai executar o trabalho
function title_function($job)
{
return ucwords(strtolower($job->workload()));
}
?>
segunda-feira, 29 de novembro de 2010
41. PHP - Exemplo: Cliente Assíncrono
<?php
$client= new GearmanClient();
$client->addServer();
for($i=0;$i<10;$i++) {
/*adiciona um job asíncrono, para a fila chamada
title, enviando um array como parâmetro. O cliente não
fica esperando o final do processamento */
$log['data'] = date('l jS of F Y h:i:s A');
$log['msg'] = "O Ivo andou de patins $i vez(es)";
$client->doBackground("log_queue", serialize
($log));
}
?>
segunda-feira, 29 de novembro de 2010
42. PHP - Exemplo: Worker Assíncrono
<?php
$worker= new GearmanWorker();
$worker->addServer();
/*registra a função log_function como responsável por
atender a fila log_queue*/
$worker->addFunction("log_queue", "log_function");
while ($worker->work()); //fica em loop trabalhando
function log_function($job){
$log = unserialize($job->workload());
sleep(1); //sleep só para demonstrar executando
echo $log['data'], ' - ', $log['msg'], "n";
}
?>
segunda-feira, 29 de novembro de 2010
49. Filas Persistentes
• Internamente todas as filas de jobs são armazenadas
em memória. Se o servidor reinicia ou acontece algum
erro todos os jobs pendentes são perdidos
• Pode-se usar filas persistentes para armazenar os jobs
pendentes (somente jobs assíncronos)
• É possível armazenar a fila em:
• MySQL (libdrizzle)
• Memcached (libmemcached)
• SQLite3 (libsqlite3)
segunda-feira, 29 de novembro de 2010
50. Monitorando
telnet localhost 4730
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
status
jobLog 0 0 1
jobTwitter 0 0 1
jobTwitterUser 0 0 1
jobFacebookPostSearch 0 0 1
jobFeed
0 0 1
jobBlogsearch 0 0 1
jobFacebookUser 2 1 1
jobSlideshareUser 0 0 1
segunda-feira, 29 de novembro de 2010
51. Gearman no Drimio
• Processamento de Logs
• Monitoramento de redes sociais (Twitter, Youtube,
Flickr, Yahoo, Facebook, Feeds, Blogsearch, Slideshare,
etc)
• Envio de e-mails
• Captura de snapshots de URLS
• Envio de tweets/posts Facebook
• Redimensionamento de imagens
• Média de 55 mil jobs/dia
segunda-feira, 29 de novembro de 2010
52. Tudo junto reunido!
1. Faz pesquisa 2. Chamada de API
3. Resultado
5. Página de resultados
4. Jobs para processar imagens e para Log de
acesso
Imagens processadas e salvas em Memcached
e Logs em MySQL
segunda-feira, 29 de novembro de 2010