Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouDomingos Salvado Franco Alterado mais de 8 anos atrás
1
Análise de frameworks de sockets em Java Luciano Macedo Rodrigues
2
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
3
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
4
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 http://www.eecs.harvard.edu/~mdw/proj/seda/
5
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
6
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.
7
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 http://directory.apache.org/subprojects/mina/
8
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
9
Frameworks - Apache MINA (cont.) Servidor: aceita clientes Cliente: conecta-se ao servidor E suas implementações
10
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
11
Frameworks - Apache MINA (cont.)
12
IoFilters: ProtocolCodecFilter Separação explícita e reusabilidade Lógica de negócio – IoHandler Codec de protocolo – ProtocolCodecFilter
13
Frameworks - Apache MINA (cont.) POJO → ByteBuffer Apenas lógica de negócio! ByteBuffer → POJO
14
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 http://www.quickserver.org/
15
Frameworks - QuickServer (cont.) Arquitetura e interfaces de serviços
16
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)
17
Frameworks - QuickServer (cont.)
18
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: 1. 10 usuários simultâneos, 100 requisições por usuário 2. 100 usuários simultâneos, 100 requisições por usuário 3. 1.000 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
19
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 http://jakarta.apache.org/jmeter/
20
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!
21
Resultado das análises - Apache Mina Samples1.00010.000100.000 Média (ms)2033237 Máximo (ms)12510155188 % Erros035,980,5 Throughput (requisições/s)378,6433,3263,7 KB/s369,7474,92329,06
22
Resultado das análises - Apache Mina
23
Resultado das análises - QuickServer Samples1.00010.000100.000 Média (ms)59318893 Máximo (ms)953182918297 % Erros160,1582,65 Throughput (requisições/s)162,9224,2223,7 KB/s159,58262,88278,75
24
Resultado das análises - QuickServer
25
Resultado das análises - combinado
26
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
27
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
28
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.