Mapa da aula
Aula 36 publicada. Mapa, exemplo, EX106.
flowchart TD
N0["36.1 Filas instáveis"]
N1["Laboratório 8 — crescimento da fila"]
N2["36.2 Lei de Little"]
N3["36.3 Opções"]
N4["36.4 Protegendo os parceiros"]
N5["36.5 Testando em escala"]
N6["Nota de prática — filas com prioridade"]
N7["Revisões de capacidade"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX106"]
Desenho lógico
flowchart LR
N0["36.1 Filas instáveis"]
N1["Laboratório 8 — crescimento da fila"]
N2["36.2 Lei de Little"]
N3["36.3 Opções"]
N4["36.4 Protegendo os parceiros"]
N5["36.5 Testando em escala"]
N6["Nota de prática — filas com prioridade"]
N7["Revisões de capacidade"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX106"]
[36.1 Filas instáveis]
|
v
[Laboratório 8 — crescimento da fila]
|
v
[36.2 Lei de Little]
|
v
[36.3 Opções]
|
v
[36.4 Protegendo os parceiros]
|
v
[36.5 Testando em escala]
|
v
[Nota de prática — filas com prioridade]
|
v
[Revisões de capacidade]
|
v
[Exemplo resolvido] --> [Exercício EX106]
Objetivos de aprendizagem
Você vai (1) detectar filas instáveis, em que a chegada supera o atendimento; (2) aplicar a lei de Little para estimar o tempo de espera; (3) escolher entre escalar verticalmente, escalar horizontalmente e descartar carga; (4) proteger os parceiros quando o Lantern escala.
36.1 Filas instáveis
Se 120 objetos por minuto chegam ao enriquecimento e só 100 por minuto são atendidos, o acúmulo cresce 20 a cada minuto, sem limite. Nenhuma espera resolve isso; a capacidade ou a demanda precisa mudar. O laboratório imprime exatamente esse padrão, e depois de cinco minutos o acúmulo é de cem itens e continua subindo. Kofi observa a tendência, e não o tamanho: uma fila longa que está encolhendo está se recuperando, enquanto uma curta que cresce a cada minuto é um problema. Seu alerta dispara quando o acúmulo cresce por dez minutos seguidos, antes que fique grande o bastante para os analistas notarem.
Laboratório 8 — crescimento da fila
"""Lab 8 (ch 36): Little's law and backlog growth for a synthetic enrichment queue."""
arrival_per_min, service_per_min = 120, 100
backlog = 0
for minute in range(1, 6):
backlog += arrival_per_min - service_per_min
print(f"minute {minute}: backlog={backlog}")
L, lam = 400, 100 / 60 # items in system, throughput items/s after scaling fixes
print(f"Little's law wait W=L/lambda={L/lam:.0f} s at L={L}, lambda={lam:.2f}/s")
Execute com python3 lab_queue.py. Saída verificada:
minute 1: backlog=20
minute 2: backlog=40
minute 3: backlog=60
minute 4: backlog=80
minute 5: backlog=100
Little's law wait W=L/lambda=240 s at L=400, lambda=1.67/s
36.2 Lei de Little
Em um sistema estável, o número médio no sistema L é igual à vazão λ vezes o tempo médio no sistema W. Com 400 itens na fila e 1,67 item atendido por segundo, a espera média é de cerca de 240 segundos. A lei não exige suposições sobre o padrão das chegadas, o que a torna uma verificação robusta nos painéis. Kofi a usa para conferir se os números do painel concordam entre si. Se o tamanho da fila, a vazão e a espera relatada não se encaixam na lei, uma das medições está errada.
36.3 Opções
Escalar verticalmente (hardware mais rápido), escalar horizontalmente (mais trabalhadores) ou descartar carga (pular enriquecimentos de pouco valor, amostrar indicadores de baixa confiança). Descartar pelo valor costuma ser o mais barato: enriqueça primeiro os indicadores de alta confiança. Kofi compara o custo de cada opção com o ganho. Uma máquina mais rápida só ajuda se o trabalho for limitado pelo processamento. Mais trabalhadores só ajudam se o trabalho puder ser dividido e o provedor permitir mais consultas. Descartar trabalho de pouco valor exige uma regra clara sobre o que conta como pouco valor, acordada com os analistas, e um registro do que foi pulado, para que possa ser feito depois se necessário.
36.4 Protegendo os parceiros
Escalar os coletores horizontalmente não pode multiplicar a carga sobre os servidores TAXII dos parceiros. O Lantern mantém uma única identidade de consulta por parceiro e compartilha os resultados internamente, respeitando os limites de taxa dos parceiros. O projeto de Kofi separa a coleta do processamento por esse motivo. Não importa quantos trabalhadores internos o Lantern execute, um único coletor por parceiro consulta na taxa acordada e coloca os objetos em uma fila interna. Os parceiros veem o mesmo tráfego, esteja a BEN tranquila ou no meio de uma campanha. Se um parceiro aumenta seus limites, a configuração muda depois do acordo, e não antes.
36.5 Testando em escala
Os testes de carga usam pacotes sintéticos gerados em tamanhos realistas, executados apenas contra o substituto TAXII e os componentes internos. O gerador de Kofi cria pacotes com a mesma mistura de tipos e tamanhos de objeto que os parceiros enviam, incluindo uma parcela de objetos malformados, para que o teste exercite também o caminho de rejeição. Executar contra servidores reais dos parceiros testaria a capacidade deles, e não a da BEN, e violaria os acordos. Os resultados registram o hardware, a versão do código e os volumes gerados, para que um teste posterior possa ser comparado de forma justa. Cada execução termina conferindo se as filas se esvaziaram por completo.
Nota de prática — filas com prioridade
Duas filas — alta e baixa confiança — com trabalhadores atendendo primeiro a alta mantêm rápido o enriquecimento importante durante os picos, enquanto o trabalho de pouco valor espera ou é pulado.
Revisões de capacidade
A cada trimestre, Kofi compara as taxas de chegada de pico com a capacidade de atendimento e registra a folga em percentual, para que o crescimento seja planejado antes que as filas fiquem instáveis.
Exemplo resolvido
Durante uma grande campanha, as chegadas saltam para 120 por minuto. Kofi acrescenta dois trabalhadores (atendimento de 150 por minuto) e passa os indicadores de baixa confiança para uma fila adiada. O acúmulo se esvazia em menos de dez minutos, e a consulta aos parceiros continua inalterada.
Caso sintético. As taxas são inventadas.
Erros e limites
A lei de Little descreve médias; a latência de cauda exige percentis. Escalar o consumidor de um provedor externo com limite de taxa só produz mais respostas 429.
Exercícios
- EX106 — Acúmulo após cinco. Que acúmulo o laboratório mostra depois de cinco minutos, e por que ele continua crescendo?
Mostrar critérios de avaliação
Rubrica: 3 = 100; a chegada supera o atendimento em 20/min; 2 = só o número; 1 = estável; 0 = nenhuma. - EX107 — Lei de Little. Calcule W para L = 300 itens com λ = 2 itens por segundo.
Mostrar critérios de avaliação
Rubrica: 3 = 150 s; 2 = método; 1 = 600; 0 = nenhuma. - EX108 — Carga nos parceiros. Por que escalar os coletores horizontalmente não pode acrescentar identidades de consulta por parceiro?
Mostrar critérios de avaliação
Rubrica: 3 = multiplicaria a carga do parceiro/violaria os limites de taxa; 2 = parcial; 1 = tudo bem; 0 = nenhuma.
Síntese
Identifique a instabilidade, use a lei de Little para as esperas, escale ou descarte pelo valor e mantenha constante a carga sobre os parceiros.
Continue estudando — capítulo 36 de 50
← Capítulo 35 (rascunho) · Índice de capítulos do curso · Capítulo 37 (rascunho) →