Executando verificação de segurança...
1

Isso aí tem vários usos, desde o CoralQueue (same JVM) para implementar logs assíncronos (critical thread => queue => file i/o thread) desde para vários clientes numa mesma máquina recebendo multicast via shared memory (CoralRing).

Esse último funciona assim:

  • Ao invés de ter 20 clientes recebendo multicast na mesma máquina
  • E ter todos os 20 clientes pendurados na placa de rede
  • Criando 20 underlying/native receive socket buffers
  • Comprometendo o kernel bypass (onload)
  • Emitindo um caminhão de syscalls para o OS
  • Então vc coloca apenas um cliente multicast que vai funcionar como um dispatcher
  • Esse dispatcher se torna o único multicast listener na máquina
  • Ou seja, o único cliente multicast pendurado na placa de rede, com kernel bypass
  • Então o dispatcher escreve todas as mensagem que ele recebe em uma única e central shared memory
  • E todos os 20 clientes lêem as mensagem dessa única e central shared memory

Importante notar que a shared memory é única, ou seja, que o dispatcher vai escrever cada mensagem uma única vez, mesmo que haja 20 clientes interessados. Daí os clientes podem ler as mensagens, in a non-blocking way, dessa shared memory única e central ao invés de ter que se pendurar na placa de rede.

Tem um diagrama explicando melhor isso aqui => Shared Memory Transport x Multicast Transport

Carregando publicação patrocinada...