Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
poa-manager [2018/08/03 14:52] rafael [Implementation Details] |
poa-manager [2018/08/03 15:12] rafael [Usage] |
||
---|---|---|---|
Line 22: | Line 22: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | A cada intervalo intervalo de tempo predefinido, | ||
+ | |||
+ | Para evitar que a carga entre os GWs seja redistribuída em intervalos curtos demais, o parâmetro **DELAY_BETWEEN_TWO_LOAD_BALANCING_EXECUTIONS_IN_MILLIS** define o intervalo mínimo entre a realização de 2 balanceamentos de carga. | ||
+ | <file java PoAMan.java> | ||
+ | /** | ||
+ | * Checks if all Gateways are working and executes the load balancing algorithm | ||
+ | | ||
+ | * {@inheritDoc} | ||
+ | */ | ||
+ | @Override | ||
+ | public void run() { | ||
+ | System.out.println(" | ||
+ | |||
+ | this.detectFailedGateways(); | ||
+ | |||
+ | if (((System.currentTimeMillis() - this.lastLoadBalacingExecutionTime) > PoAMan.DELAY_BETWEEN_TWO_LOAD_BALANCING_EXECUTIONS_IN_MILLIS) | ||
+ | && (this.loadReportsByGateway.size() > 1)) { | ||
+ | |||
+ | List< | ||
+ | |||
+ | List< | ||
+ | |||
+ | if (privateMessageList.size() > 0) { | ||
+ | this.sendPrivateMessages(privateMessageList); | ||
+ | |||
+ | this.lastLoadBalacingExecutionTime = System.currentTimeMillis(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | }</ | ||
===== Architecture ===== | ===== Architecture ===== | ||
Descrever a arquitetura do componente. As principais classes e relações que sustentam o componente. | Descrever a arquitetura do componente. As principais classes e relações que sustentam o componente. | ||
Line 30: | Line 61: | ||
===== Implementation Details ===== | ===== Implementation Details ===== | ||
Para exercer sua função, o PoA-Manager ouve (i.e., assina) os tópicos LoadReport e ConnectionReport. O tópico ConnectionReport é utilizado para informar quando um MN se conecta ao SDDL, assim, o PoA-Manager pode enviar o objeto “PointsOfAttachment” contendo a lista de GWs ativos no SDDL logo que o MN se conecta. O tópico LoadReport, por sua vez, possui o ID do GW, o uso de CPU, memória livre, número de MNs conectados ao GW e o IP externo do GW. Este tópico é enviado periodicamente pelos GWs para que o PoA-Manager possa fazer o monitoramento dos GWs. Para que o GW possa enviar o tópico LoadReport, é preciso que a máquina onde o GW está sendo executado tenha a biblioteca “**libsigar**” (está na pasta lib do projeto do Gateway) configurada no ambiente. | Para exercer sua função, o PoA-Manager ouve (i.e., assina) os tópicos LoadReport e ConnectionReport. O tópico ConnectionReport é utilizado para informar quando um MN se conecta ao SDDL, assim, o PoA-Manager pode enviar o objeto “PointsOfAttachment” contendo a lista de GWs ativos no SDDL logo que o MN se conecta. O tópico LoadReport, por sua vez, possui o ID do GW, o uso de CPU, memória livre, número de MNs conectados ao GW e o IP externo do GW. Este tópico é enviado periodicamente pelos GWs para que o PoA-Manager possa fazer o monitoramento dos GWs. Para que o GW possa enviar o tópico LoadReport, é preciso que a máquina onde o GW está sendo executado tenha a biblioteca “**libsigar**” (está na pasta lib do projeto do Gateway) configurada no ambiente. | ||
+ | |||
+ | Como o PoA-Manager é responsável por fazer o balanceamento de carga dos GWs, ele possui uma política de balanceamento de carga que está implementada na classe **SimpleLoadReportsAnalyzer**. Originalmente a política implementada foi para verificar a diferença de MNs conectados entre os Gateways. Caso essa diferença passe de um limiar (originalmente 15%), a política de balanceamento informará qual deve ser a nova quantidade de MNs conectados em cada GW. A saída gerada pelo SimpleLoadReportsAnalyzer é repassada para a classe **PlanningExecutor**, | ||
===== References ===== | ===== References ===== | ||
Bibtex/PDF entry dos papers sobre esse componente. | Bibtex/PDF entry dos papers sobre esse componente. | ||