Title: | Avaliação de estratégias de serialização para comunicação em sistemas distribuídos |
Author: | Gomes, Matheus Miranda Torres |
Abstract: |
Sistemas distribuídos são essenciais para o processamento e distribuição de informações em uma sociedade tecnologicamente avançada. Projetar um sistema distribuído requer considerações complexas, especialmente em relação à eficiência da comunicação. Escolher o formato de comunicação correto é crucial, pois afeta o desempenho, custos e disponibilidade do serviço. Este trabalho se propõe a realizar uma análise exploratória das bibliotecas de serialização Newtonsoft.Json, MessagePack, Apache Avro, Apache Thrift, Protocol Buffers, FlatBuffers, e Cap'n Proto, para transporte de dados em sistemas distribuídos no escopo de \textit{microbenchmark} e comunicação entre serviços no modelo cliente-servidor, construindo um protótipo na linguagem C\# que represente um sistema de tráfego intensivo de dados. Com testes de desempenho, é explorado o comportamento das mesmas com grandes volume de serialização, de forma sequencial e concorrente, para determinar a eficiência em diversos cenários, além de uma análise quanto aspectos de implementação e de forma qualitativa sobre as funcionalidades de cada uma. As métricas coletadas envolveram, tempo de processamento, taxa de compressão e vazão do sistema, assim como métricas qualitativas, como abrangência em linguagens e interoperabilidade. Dentre as bibliotecas avaliadas, FlatBuffers, MessagePack e Protocol Buffers desempenharam de forma eficiente em todos os cenários, enquanto Apache Avro e Thrift obtiveram tempos mais lentos. FlatBuffers apresentou tempos de desserialização e um consumo muito baixo de memória RAM, mesmo trabalhando com grandes volumes de dados. Newtonsoft.Json, apesar de ser uma serialização textual, apresentou um importante ganho de desempenho fazendo uso da concorrência, assim como outras bibliotecas. No âmbito distribuído, Newtonsoft.Json, com carga menor de clientes simultâneos, apresentou bom desempenho, Apache Avro teve maior vazão na serialização, enquanto Protocol Buffers teve menor vazão média na serialização observada. Distributed systems are essential for processing and distributing information in a technologically advanced society. Designing a distributed system requires complex considerations, especially in relation to communication efficiency. Choosing the right communication format is crucial, as it affects performance, costs and service availability. This work aims to carry out an exploratory analysis of the serialization libraries Newtonsoft.Json, MessagePack, Apache Avro, Apache Thrift, Protocol Buffers, FlatBuffers, and Cap'n Proto, for data transport in distributed systems in the scope of \textit{microbenchmark} and communication between services in the client-server model, building a prototype in the C\# language that represents a data-intensive traffic system. Performance tests explore their behaviour with large volumes of serialization, sequentially and concurrently, to determine their efficiency in different scenarios, as well as an analysis of the implementation aspects and qualitative analysis of the functionalities of each one. The metrics collected included processing time, compression rate and system throughput, as well as qualitative metrics such as language coverage and interoperability. Among the libraries evaluated, FlatBuffers, MessagePack and Protocol Buffers performed efficiently in all scenarios, while Apache Avro and Thrift had slower times. FlatBuffers showed deserialization times and very low RAM consumption, even when working with large volumes of data. Newtonsoft.Json, despite being a textual serialization, showed a significant performance gain by using concurrency, as did other libraries. In the distributed environment, Newtonsoft.Json, with a lower load of concurrent clients, performed well, Apache Avro had the highest serialization throughput, while Protocol Buffers had the lowest average serialization throughput observed. |
Description: | TCC (graduação) - Universidade Federal de Santa Catarina, Centro Tecnológico, Sistemas de Informação. |
URI: | https://repositorio.ufsc.br/handle/123456789/253137 |
Date: | 2023-11-28 |
Files | Size | Format | View | Description |
---|---|---|---|---|
TCC_II_Final.pdf | 1.472Mb |
View/ |
TCC |