Controle de back-pressure em filas de mensagens: utilizando um controlador PID discreto

DSpace Repository

A- A A+

Controle de back-pressure em filas de mensagens: utilizando um controlador PID discreto

Show full item record

Title: Controle de back-pressure em filas de mensagens: utilizando um controlador PID discreto
Author: Pellegrin, Adriano Zaniboni de
Abstract: Sistemas de software que processam dados de forma assíncrona utilizam filas de mensagens para desacoplar os componentes que produzem mensagens daqueles que as consomem. Essa independência cria um risco operacional: o consumidor pode processar mensagens mais rapidamente do que o serviço de destino, tipicamente um banco de dados, consegue suportar, saturando seu processamento e degradando todas as aplicações que dele dependem. A prática usual de limitar o consumo por uma taxa fixa opera em malha aberta e não se adapta a variações de carga nem a perturbações externas. O presente trabalho projeta, implementa e valida um sistema de controle de back-pressure para consumidores de filas de mensagens, no qual um controlador PID discreto regula a taxa de consumo de modo a manter a utilização de CPU do serviço de destino em torno de um valor de referência. O sistema foi implementado na linguagem Go com arquitetura hexagonal, que torna intercambiáveis a fila (Apache Kafka, AWS SQS), o serviço de destino (MySQL, HTTP) e a fonte de métricas (Prometheus, AWS CloudWatch), e inclui interface de monitoramento e de ajuste de parâmetros em tempo de execução. A planta foi identificada por ensaios de resposta ao degrau em malha aberta; os controladores foram sintonizados a partir do modelo identificado e comparados em malha fechada, avaliando sobressinal, tempos característicos e rejeição de perturbação. Os resultados mostram que a dinâmica do banco de dados é rápida frente à cadência de publicação das métricas, de modo que o atraso dominante da malha vem da medição e da amostragem, e não da planta. Nesse regime, o controlador PI com anti-windup condicional, complementado por filtro de setpoint e ação feedforward de referência, manteve a utilização no valor de referência, partiu sem sobressinal, rejeitou perturbações externas de carga e não perdeu mensagens, com desempenho superior ao da taxa fixa convencional; estruturas dependentes de modelo, como o Preditor de Smith, não trouxeram vantagem sob o modelo imperfeito do processo real. Além do mecanismo de controle pronto para produção, o trabalho entrega um laboratório reproduzível de identificação e monitoramento de plantas de software.Software systems that process data asynchronously rely on message queues to decouple the components that produce messages from those that consume them. This independence creates an operational risk: the consumer may process messages faster than the destination service, typically a database, can sustain, saturating its processing capacity and degrading every application that depends on it. The usual practice of limiting consumption with a fixed rate operates in open loop and does not adapt to load variations or external disturbances. This work designs, implements, and validates a back-pressure control system for message queue consumers, in which a discrete PID controller regulates the consumption rate so as to keep the CPU utilization of the destination service around a reference value. The system was implemented in Go with a hexagonal architecture that makes the queue (Apache Kafka, AWS SQS), the destination service (MySQL, HTTP), and the metrics source (Prometheus, AWS CloudWatch) interchangeable, and includes an interface for monitoring and adjusting parameters at runtime. The plant was identified through open-loop step-response experiments; the controllers were tuned from the identified model and compared in closed loop, evaluating overshoot, characteristic times, and disturbance rejection. The results show that the database dynamics are fast compared with the publication cadence of the metrics, so the dominant loop delay comes from measurement and sampling rather than from the plant. In this regime, the PI controller with conditional anti-windup, complemented by a setpoint filter and a reference feedforward action, kept utilization at the reference value, started without overshoot, rejected external load disturbances, and lost no messages, outperforming the conventional fixed rate; model-dependent structures such as the Smith Predictor brought no advantage under the imperfect model that the real process offers. Besides the production-ready control mechanism, the work delivers a reproducible laboratory for the identification and monitoring of software plants.
Description: TCC (graduação) - Universidade Federal de Santa Catarina, Centro Tecnológico, Engenharia de Controle e Automação.
URI: https://repositorio.ufsc.br/handle/123456789/274753
Date: 2026-08-03


Files in this item

Files Size Format View Description
TCC.pdf 1.986Mb PDF View/Open TCC

This item appears in the following Collection(s)

Show full item record

Search DSpace


Advanced Search

Browse

My Account

Statistics

Compartilhar