Serviço de Catálogo

O serviço de catálogo controla o posicionamento dos shards e descobre e monitora o funcionamento dos servidores de contêiner na grade de dados. O serviço de catálogo hospeda a lógica que deve estar inativa e tem pouca influência na escalabilidade. Ele é criado para atender centenas de servidores de contêineres que ficam disponíveis simultaneamente e executam serviços para gerenciar os servidores de contêiner.

Figura 1. Serviço de Catálogo
O serviço de catálogo é executado em uma Java Virtual Machine (JVM) e consiste no serviço local, serviço de posicionamento, gerenciador de grupo principal e administração.
As responsabilidades do servidor de catálogos consistem nos seguintes serviços:
Serviço de local
O serviço de local é executado nos membros da grade de dados para fornecer a localidade aos clientes e aos servidores de contêiner. Os servidores de contêiner fazem o registro com o serviço de local para registrar os aplicativos hospedados. Os clientes podem então usar o serviço de local para procurar os servidores de contêiner para hospedar os aplicativos.
Serviço de disposição
O serviço de catálogo gerencia o posicionamento dos shards nos servidores de contêiner disponíveis. O serviço de posicionamento é responsável pela manutenção do equilíbrio nos recursos físicos e pela alocação de shards individuais em seu servidor de contêiner do host. O serviço de posicionamento é executado como Um de N serviços eleitos no cluster e na grade de dados. Isso significa que exatamente uma instância do serviço de posicionamento está em execução. Se uma instância falhar, outro processo é eleito e assumido. Para redundância, o estado do serviço de catálogo é replicado entre todos os servidores que estão hospedando o serviço de catálogo.
Gerenciador de grupo principal
O grupo principal gerencia o agrupamento peer para monitoramento de disponibilidade, organiza os servidores de contêiner em pequenos grupos de servidores e automaticamente federa os grupos de servidores.

O serviço de catálogo usa o gerenciador de alta disponibilidade (gerenciador HA) para agrupar processos para o monitoramento de disponibilidade. Cada agrupamento dos processos é um grupo principal. O gerenciador do grupo principal agrupa dinamicamente os processos. Estes processos são mantidos pequenos para permitir a escalabilidade. Cada grupo principal elege um líder que é responsável por enviar as mensagens de pulsação ao gerenciador do grupo principal. Essas mensagens detectam se um membro individual falhou ou se ainda está disponível. O mecanismo de pulsação também é usado para detectar se todos os membros de um grupo falharam, o que faz a comunicação com o líder falhar.

O gerenciador do grupo principal é responsável por organizar os contêineres em pequenos grupos de servidores que são livremente federados para fazer uma grade de dados. Quando um servidor de contêiner contata pela primeira vez o serviço de catálogo, ele aguarda para ser designado a um grupo novo ou existente. Uma implementação do eXtreme Scale consiste em vários desses grupos, e esse agrupamento é um importante ativador de escalabilidade. Cada grupo consiste em Java Virtual Machines. Um líder eleito usa o mecanismo de pulsação para monitorar a disponibilidade dos outros grupos. O líder retransmite as informações de disponibilidade ao serviço de catálogo para permitir a reação a falhas por meio de realocação e encaminhamento de rotas.

Administração
O serviço de catálogo também é o ponto de entrada lógico para administração do sistema. O serviço de catálogo hospeda um Managed Bean (MBean) e fornece URLs do Java Management Extensions (JMX) para qualquer um dos servidores que o serviço de catálogo gerencia.

Para obter uma alta disponibilidade, configure um domínio de serviço de catálogo. Um domínio do serviço de catálogo consiste em várias Java virtual machines, incluindo uma JVM principal e várias Java virtual machines de backup. Para obter informações adicionais, consulte Serviço de Catálogo de Alta Disponibilidade.