Distributed caching systems based on in-memory key-value stores have become a
crucial aspect of fast and efficient content delivery in modern web-applications. However,
due to the dynamic and skewed execution environments and workloads, under which
such systems typically operate, several problems arise in the form of load imbalance.
This thesis addresses the sources of load imbalance in caching systems, mainly: i) data
placement, which relates to distribution of data items across servers and ii) data item
access frequency, which describes amount of requests each server has to process, and how
each server is able to cope with it. Thus, providing several strategies to overcome the
sources of imbalance in isolation.
As a use case, we analyse Memcached, its variants, and propose a novel solution for
distributed caching systems. Our solution revolves around increasing parallelism through
load segregation, and solutions to overcome the load discrepancies when reaching high
saturation scenarios, mostly through access re-arrangement, and internal replication.Os sistemas de cache distribuídos baseados em armazenamento de pares chave-valor
em RAM, tornaram-se um aspecto crucial em aplicações web modernas para o fornecimento
rápido e eficiente de conteúdo. No entanto, estes sistemas normalmente estão
sujeitos a ambientes muito dinâmicos e irregulares. Este tipo de ambientes e irregularidades,
causa vários problemas, que emergem sob a forma de desequilíbrios de carga.
Esta tese aborda as diferentes origens de desequilíbrio de carga em sistemas de caching
distribuído, principalmente: i) colocação de dados, que se relaciona com a distribuição
dos dados pelos servidores e a ii) frequência de acesso aos dados, que reflete a quantidade
de pedidos que cada servidor deve processar e como cada servidor lida com a sua carga.
Desta forma, demonstramos várias estratégias para reduzir o impacto proveniente das
fontes de desequilíbrio, quando analizadas em isolamento.
Como caso de uso, analisamos o sistema Memcached, as suas variantes, e propomos
uma nova solução para sistemas de caching distribuídos. A nossa solução gira em torno
de aumento de paralelismo atraves de segregação de carga e em como superar superar as
discrepâncias de carga a quando de sistema entra em grande saturação, principalmente
atraves de reorganização de acesso e de replicação intern