Análise de frameworks de sockets em Java Luciano Macedo Rodrigues.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

UNIPAC – ARAGUARI CAMPUS – IX PROF. EVERTON HIPÓLITO DE FREITAS
UML Visões – Parte 2.
Tópicos Motivação para teste Por que algumas empresas não testam
CPU – based DoS Attacks Against SIP Servers
JMeter.
Aluno: Paulo Sérgio Franco Eustáquio
Paulo Sérgio Franco Eustáquio
Algoritmos de escalonamento (com e sem o
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Threads.
Mobilidade Cláudia Ribeiro.
TSDD Teste de segurança durante o desenvolvimento.
Performance em aplicações web – Parte I
Engenharia de Software
Modelo de Segurança para Ambientes Cooperativos
Middleware e Sistemas Distribuídos
Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática.
Concorrência em Java Threads em Java.
Rodrigo de Souza Couto Redes de Computadores II
Sistemas Distribuídos
Sistemas Distribuídos
Conceitos de J2EE para a WEB
Otimizando sua TI, maximizando seus negócios
Efficient Java Communication Protocols on High-speed Cluster Interconnects Alexandre Almeida Felipe Severino.
Professor: Márcio Amador
SISTEMAS OPERACIONAIS I
Implementação MVC Pedro Antonino.
Tecgraf PUC-Rio Setembro de 2013 Introdução ao Openbus.
Processos.
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
RUP - Cap. 4 – Processo Centrado na Arquitetura
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
Prof.°: João Henrique Disciplina: SOR II
Padrões de Interação com o Usuário
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Decisão #1 Decisão-chaveUtilização de C para desenvolvimento do MCTCore. DriversRNF: O código deve ser escrito na linguagem C. Descrição O sistema legado.
Automação Comercial Faculdade Estácio Radial Prof. Paulo Alipio Alves de Oliveira 2010.
A High Performance Java Middleware with a Real Application HUERT, Fabrice; CAROMEL, Denis; Bal, Henri E. Supercomputing 2004 Trabalho desenvolvido por:
1 Baseado em whitepapers/eclipse-overview.pdf Nelson Lago IME/USP 04/2003 A Plataforma Eclipse.
Multiparadigma das Comunicações em Java para Grid Computing Fernanda R. Ramos Luiz Felipe Marco Eiterer Profº Alcides Calsavara, Ph.D.
CloudSim Um framework para modelagem e simulação de infraestrutura e serviços de Computação em Nuvem.
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
1 Simulador Cisco. 2 Componentes Cenário (Simulação) Barra de Ferramentas Área de Trabalho (Lógica e Física) Pacotes.
“O homem é um animal utilizador de ferramentas... Sem ferramentas ele não é nada, com ferramentas ele é tudo”. Thomas Carlyle.
Introdução aos Sistemas Operacionais
Qualidade de Produtos de Software
Sistemas Operacionais Distribuídos
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Prof. Sidney Galeote. 2 www. prasabermais. com  Visão Geral sobre a dimensão de qualidade “performance”  Custo da qualidade  Como a performance deve.
Sobre a Prime Control A Prime Control é um Centro de Excelência em Qualidade de Software. Nossa missão é desenvolver, aperfeiçoar e realizar serviços.
Introdução ao SCS Tecgraf PUC-Rio Setembro de 2013.
Aplicativos para Internet Prof. Wolley W. Silva
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Simple Network Management Protocol
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Introdução ao OpenBus.
Apresentação Leonardo Brussolo de Paula
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
Estimativa, Teste e Inspeção de Software
JMeter. O que é ? É uma ferramenta Open Source de testes de performance e estresse automatizados para aplicações WEB Feita em Java Possibilita testes.
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Segurança em Comércio Eletrônico Comércio tradicional realizado de maneira centralizada cercado de restrições legais Comércio eletrônico realização de.
Engenharia de Sistemas (Lato Sensu) Victor Costa de Alemão Cisneiros Hudson Ramos Aracaju/SE COMPARAÇÃO ENTRE SERVIDORES WEB APACHE HTTP SERVER E NGINX.
UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE CIÊNCIA DA COMPUTAÇÃO Redes de Computadores Ferramenta NTop (Network Traffic Probe) Explorador.
Bruna Cavallero Martins Universidade Católica de Pelotas.
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Capítulo 4 Estrutura do Sistema Operacional
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Transcrição da apresentação:

Análise de frameworks de sockets em Java Luciano Macedo Rodrigues

Tópicos Introdução Frameworks – SEDA Frameworks - Apache MINA Frameworks - QuickServer Análises Análises - Apache JMeter Análises - Problema Resultado das análises Conclusão Bibliografia e anexos

Introdução O objetivo do meu trabalho é apresentar uma comparação entre diferentes frameworks em Java para comunicação TCP/IP que utilizam os pacotes da Sun para N/IO e Sockets Para isso, foram escolhidos os frameworks que preenchiam os seguintes requisitos:  Alta performance  Alta escalabilidade  Rapidez no desenvolvimento  Open source Neste trabalho analisaremos a performance de 3 diferentes frameworks:  SEDA  Apache MINA  QuickServer

Frameworks - SEDA SEDA: stage event-driven architecture Matt Welsh, Harvard University Trabalho da tese de doutorado na universidade UC Berkley visando o desenvolvimento de uma plataforma robusta e de alta performance para serviços de Internet Utiliza uma arquitetura em estágios determinados por eventos e decompõe uma aplicação de eventos complexos em um conjunto de estágios conectados por filas. Este design evitaria o alto overhead associado aos modelos de concorrência baseados em threads, e desacopla o escalonamento de eventos e threads da lógica de aplicação

Frameworks - SEDA (cont.) Arquitetura organizada em estágios baseados em eventos Modelo de um servidor determinado por eventos Cada FSM representa uma única requisição ou fluxo através do sistema. Um estágio no SEDA Um estágio é composto de uma fila de eventos, um pool de threads e um gerenciador de eventos fornecido pela aplicação. A operação é gerenciada pelo Controller, que ajusta a alocação de recursos dinamicamente

Frameworks - SEDA (cont.) Objetivos  Suportar alta concorrência para evitar perda de performance ocasianada pela criação de threads, o SEDA utiliza a execução baseada em eventos sempre que possível. Isso também requer que o sistema forneça primitivas de I/O escaláveis e eficientes utiliza código nativo para execução usando JNI (Java Native Interface)  Simplificar a construção de serviços bem estruturados para reduzir reduce a complexidade na construção de serviços de Internet, o SEDA esconde do programador detalhes de escalonamento e alocação de recursos. O design permite a construção de aplicações em módulos, facilitando a depuração e profiling.  Instrospecção as aplicações devem poder analisar o fluxo de requisições para adaptar seu comportamento as condições atuais. Por exemplo, o sistema deve poder priorizar e filtrar requisições sob carga alta.  Suportar auto-ajuste e alocação de recursos dinâmica ao invés de impor um limite para aplicação de recursos, ajustar a aplicação de acordo com o requerido pelos clientes e a performance desejada.

Frameworks - Apache MINA MINA: Multipurpose Infrastructure for Network Applications Framework de alta produtividade e com design “elegante”, e fácil aprendizagem Alta performance:  Assíncrono  Arquitetura baseada em eventos Testes unitários para simulações sem necessidade de um cliente real Extensível através da modificação em tempo real do comportamento da aplicação através do uso de filtros Reusabilidade e manutenibilidade  Separação do código de sockets (MINA), codec de protocolo e lógica de aplicação

Frameworks - Apache MINA (cont.) IoSessionManager  Onde as operações de I/O ocorrem IoFilters  Filtra eventos de I/O · requisições IoHandler  IoSession  Representa uma conexão

Frameworks - Apache MINA (cont.) Servidor: aceita clientes Cliente: conecta-se ao servidor E suas implementações

Frameworks - Apache MINA (cont.) IoFilters  Um interceptador de eventos e requisições  Reusabilidade  Utiliza um pool de threads  Registro de eventos  Hot-deployable  Exemplo SSL – TLS

Frameworks - Apache MINA (cont.)

IoFilters: ProtocolCodecFilter Separação explícita e reusabilidade  Lógica de negócio – IoHandler  Codec de protocolo – ProtocolCodecFilter

Frameworks - Apache MINA (cont.) POJO → ByteBuffer  Apenas lógica de negócio! ByteBuffer → POJO

Frameworks - QuickServer Abstrai a classe java.net.ServerSocket, facilitando a criação de servidores robustos O esforço fica concentrado na lógica de aplicação e protocolos Desenvolvida e implementada por Akshathkumar Shetty Configuração de serviços e alocação de recursos em XML Provém uma interface de administração remota, permitindo avaliar as condições reais do servidor

Frameworks - QuickServer (cont.) Arquitetura e interfaces de serviços

Frameworks - QuickServer (cont.) QuickServer divide a lógica de aplicaçao em 4 classes  ClientCommandHandler Interação com o cliente - comandos em Strings  ClientObjectHandler [Classe opcional] Interação com o cliente - comandos em objetos  Authenticator [Classe opcional] Usada para autenticar um cliente  ClientData [Classe opcional] Usada para compôr os dados enviados por um cliente (classe de suporte)

Frameworks - QuickServer (cont.)

Análises Para análise dos frameworks foi implementado um servidor HTTP em cada framework, rodando na porta 8080 Este servidor deverá fornecer uma resposta HTTP válida e um conteúdo do tamanho de 1kb Serão analisados os seguintes casos de carga: usuários simultâneos, 100 requisições por usuário usuários simultâneos, 100 requisições por usuário usuários simultâneos, 100 requisições por usuário Serão analisados o tempo de resposta, throughput, taxa de transmissão alcançada e porcentagem de erros As análises serão realizadas usando a ferramenta JMeter, do projeto Apache A infra-estrutura usará o Java 5 e sistema operacional Windows

Análises – Apache JMeter Aplicação desktop 100% escrita em Java desenvolvida para testar o funcionamento, comportamento e performance de sites Web Inicialmente tinha este objetivo, mas foi expandida para outras funcionalidades, podendo analisar diversos outros serviços Altamente configurável e interface intuitiva

Análises – Problema Apesar de ter sido estudado e implementado, o servidor HTTP do framework SEDA não pode ser utilizado Por usar código nativo, o framework exigia a compilação de uma biblioteca escrita em C/C++. O framework não vem acompanhado da biblioteca nativa para Windows Existe uma extensão para Windows 2000 que acompanha código-fonte e a DLL necessária. A tentativa de usar a DLL fornecida e de outra obtida através da compilação do código-fonte falhou. Logo, o framework SEDA não terá seu desempenho analisado!

Resultado das análises - Apache Mina Samples Média (ms) Máximo (ms) % Erros035,980,5 Throughput (requisições/s)378,6433,3263,7 KB/s369,7474,92329,06

Resultado das análises - Apache Mina

Resultado das análises - QuickServer Samples Média (ms) Máximo (ms) % Erros160,1582,65 Throughput (requisições/s)162,9224,2223,7 KB/s159,58262,88278,75

Resultado das análises - QuickServer

Resultado das análises - combinado

Conclusão Melhor desempenho  Apache MINA Maior facilidade de desenvolvimento  Ambos foram de fácil desenvolvimento Maior número de funcionalidades  QuickServer Possui já suporte a parar/suspender o servidor e uma interface de administração Ficou faltando o uso do SEDA para ver como se comportaria com o uso de código nativo  Assim, poderia se ter um benchmark mais específico de sistemas operacionais

Conclusão (cont.) Houve pouca alteração conforme a carga exigida no Apache MINA Para garantir que não houvessem erros, foi verificada se a carga de dados correspondia ao pacote enviado (1k)  Esta taxa manteve-se muito alta no QuickServer Os frameworks facilitam em muito a programação por permitirem manter o foco na lógica de aplicação Porém, o desempenho verificado foi abaixo do esperado  Alto índice de erros  Throughput baixo

Bibliografia e anexos Bibliografia  A bibliografia deste trabalho baseia-se nas apresentações de arquitetura dos frameworks disponíveis em PDF nos sites incluídos neste trabalho Anexos  Código-fonte das aplicações  JAR necessários para compilação  Projeto de teste do JMeter