poa-manager

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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:
 } }
 </file> </file>
 +
 +A cada intervalo intervalo de tempo predefinido, o PoAManager executa o algoritmo de balanceamento (**loadReportAnalyzer**) de carga que verifica se a carga dos GWs está ou não distribuída corretamente. Caso seja detectado um desbalanceamento, o plano gerado pelo algoritmo de balanceamento de carga é repassado para o **planningExecutor** que tem como responsabilidade gerar as mensagens de HandOver mandatório que serão enviadas para os MNs.
 +
 +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.loadReportsByGateway.size() " + this.loadReportsByGateway.size());
 +
 +    this.detectFailedGateways();
 +
 +    if (((System.currentTimeMillis() - this.lastLoadBalacingExecutionTime) > PoAMan.DELAY_BETWEEN_TWO_LOAD_BALANCING_EXECUTIONS_IN_MILLIS)
 +      && (this.loadReportsByGateway.size() > 1)) {
 +
 +      List<LoadReportTopicComparable> analysis = this.loadReportsAnalyzer.runAnalyzer(this.loadReportsByGateway);
 +
 +      List<PrivateMessage> privateMessageList = this.planningExecutor.RunPlanningExecutor(analysis, this.vehiclesByGateway);
 +
 +      if (privateMessageList.size() > 0) {
 +        this.sendPrivateMessages(privateMessageList);
 +
 +        this.lastLoadBalacingExecutionTime = System.currentTimeMillis();
 +      }
 +
 +    }
 +  }</file>
 ===== 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**, esta responsável por gerar todas as mensagens de handover mandatório que serão enviadas para os MNs que deverão migrar de GW.
 ===== References ===== ===== References =====
 Bibtex/PDF entry dos papers sobre esse componente. Bibtex/PDF entry dos papers sobre esse componente.
  
  • poa-manager.txt
  • Last modified: 2018/08/03 15:12
  • by rafael