• Nenhum resultado encontrado

Uma abordagem comum na literatura de sistemas distribuídos é a proposta de um novo conceito e a implementação de um sistema que use esse conceito seguida de uma análise de seu desempenho. Tanto o artigo sobre o Dynamo [DHJ+07] quanto o sobre o PNUTS [CRS+08] apresentam análises

de desempenho, sendo que apenas o segundo faz uma análise baseada na carga de trabalho. Há uma segunda publicação com experimentos com o PNUTS que analisa o consumo de banda de diferentes políticas de replicação em uma WAN [KCCL11].

Muitos trabalhos apresentam análises de desempenho de sistemas de armazenamento que usam replicação sobre WANs. Na maior parte dos casos, o objetivo desses sistemas é provar outros con- ceitos além da eciência do modelo de consistência escolhido por eles. O COPS usa consistên- cia causal+, que é semelhante à consistência causal com algumas garantia a mais, e implementa transações [LFKA11]. O Scatter propõe uma arquitetura ao mesmo tempo escalável e com con- sistência forte [GBKA11]. O Zeno usa consistência em momento indeterminado e é tolerante a falhas bizantinas2 [SFK+09]. O Windows Azure provê um sistema de armazenamento na nuvem

com consistência forte [CWO+11]. O Megastore usa Paxos para implementar consistência forte

[BBC+11]. Nenhum desses trabalhos apresenta comparações com outros sistemas ou com outros

2Falhas bizantinas fazem com que o sistema falhe de uma forma diferente que apenas parar de responder requi-

56 ANÁLISE DOS RESULTADOS 6.6

modelos de consistência. Como eles não usam uma aplicação para execução de testes ou ambiente comum, é difícil fazer qualquer comparação a partir desses trabalhos.

Beyer et al. realizaram testes para analisar a relação entre as diferentes congurações de con- sistência no Cassandra e sua disponibilidade e desempenho [BKS+11]. Como esperado, eles notam

que congurações que oferecem consistência mais rígida apresentam pior desempenho. Renesse e Schneider apresentam resultados experimentais comparando desempenho e disponibilidade de repli- cação mestre-escravo e replicação em cadeia, cada uma delas usando consistência forte e consistência em momento indeterminado [vRS04]. Nenhum desses estudos leva em consideração operação sobre WAN nem diferentes cargas de trabalho. Yu e Vahdat realizaram uma análise sobre a relação entre disponibilidade e níveis de consistência em sistemas replicados em WANs [YV01]. Eles comparam a disponibilidade de um sistema usando consistência forte e consistência contínua, usando difer- entes protocolos de consistência como cópia primária e votação, por exemplo. Esse trabalho não testa consistência em momento indeterminado nem consistência na linha do tempo e não observa o desempenho dos modelos de consistência analisados.

Uma publicação com uma proposta mais próxima da deste trabalho é a comparação feita entre Cassandra, HBase, PNUTS e MySQL particionado horizontalmente usando diferentes cargas de trabalho [CST+10]. Os resultados servem como uma comparação entre esses sistemas, mas dizem

menos sobre seus modelos de consistência, dado que os sistemas apresentam arquiteturas e cong- urações diferentes. Além disso, os testes são feitos em uma rede local, não em uma WAN.

Capítulo 7

Conclusões

Este trabalho comparou o desempenho de um mesmo sistema de armazenamento usando con- sistência em momento indeterminado e consistência na linha do tempo operando em uma WAN. A consistência na linha do tempo se mostrou competitiva com a consistência em momento indeter- minado quando a localidade de escritas é alta e quando as leituras são de qualquer versão (ver Seção6.2).

As principais vantagens da linha do tempo sobre a consistência em momento indeterminado são a garantia de que as réplicas não são atualizadas com valores divergentes e a existência de uma réplica mestre que corresponde à versão mais recente. Com isso, desenvolvedores não precisam implementar resolução de conitos ou ações de compensação na aplicação (ver Seção 2.2). Um cenário particularmente interessante para o uso da consistência na linha do tempo é o caso em que a aplicação tolera inconsistências na maioria das leituras, mas em algumas poucas situações precisa da versão consistente.

A principal desvantagem da consistência na linha do tempo com relação à consistência em momento indeterminado é o fato de a indisponibilidade da réplica mestre por falha do nó ou parti- cionamento da rede impedir escritas e leituras consistentes. Uma outra desvantagem é que mesmo sendo competitiva, ela apresenta variabilidade relativamente alta nos tempos de resposta. Por exem- plo, a localidade 90% implica que 10% das escritas e 10% das leituras consistentes são remotas, com tempos de resposta da ordem da latência da rede. Para aplicações em que os requisitos de tempos de resposta são dados pelo percentil 99,9, como é o caso da Amazon [DHJ+07], a consistência na

linha do tempo não é adequada.

Além da comparação do desempenho, este trabalho apresentou resultados sobre a infuência que diversos fatores têm sobre o desempenho de um sistema de armazenamento operando sobre WAN. Por meio dos experimentos fatoriais 2k, descobriu-se quais fatores são mais ou menos inuentes para o desempenho desse tipo de sistema (ver Seção4.4). Por exemplo, vericou-se que a quantidade de objetos armazenados não afeta o desempenho do sistema. Vale notar que as constatações feitas são válidas para o conjunto de valores de parâmetros e níveis testados. Por exemplo, caso o mecanismo de armazenamento fosse disco e não memória, o resultado para inuência da quantidade de objetos armazenados provavelmente seria diferente devido à interação entre disco, cache de disco e memória. Por último, uma consideração sobre a reprodutibilidade deste estudo. Caso um pesquisador queira reproduzir o estudo no Grid'5000, ele tem disponíveis os recursos necessários para tal. Caso ele queira reproduzi-lo em outra plataforma (AWS, por exemplo), ele precisará criar uma nova imagem, o que é simples, dado que a imagem usada neste estudo tem poucos aplicativos e ferramentas instalados e está documentada (ver Seção5.3). Além disso, alguns poucos scripts para execução do estudo precisariam ser alterados.

7.1 Contribuições

As principais contribuições deste trabalho são:

58 CONCLUSÕES 7.3

Comparativo de desempenho entre modelos de consistência A principal contribuição é a constatação de que a consistência na linha do tempo é competitiva em termos de desempenho com a consistência em momento indeterminado em um sistema operando sobre uma WAN e que apresente localidade alta. Quando possível, o uso da consistência na linha do tempo no lugar da consistência em momento indeterminado torna o desenvolvimento do sistema mais simples.

Inuência de fatores em sistemas de armazenamento Conhecer quais fatores afetam ou não o desempenho de um sistema de armazenamento ajuda desenvolvedores e administradores de sistemas em decisões sobre planejamento de capacidade e desenvolvimento do sistema (como otimizações, por exemplo).

Infraestrutura de experimentos A infraestrutura de experimentos pode ser reaproveitada (es- pecialmente se o Riak for usado), aumentando a produtividade de pesquisadores realizando estudos semelhantes.

Documentos relacionados