A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Análise de frameworks de sockets em Java Luciano Macedo Rodrigues."— Transcrição da apresentação:

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


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

Apresentações semelhantes


Anúncios Google