X / Open XA - X/Open XA

Na computação, o padrão X / Open XA (abreviação de "eXtended Architecture") é uma especificação lançada em 1991 pela X / Open (que mais tarde se fundiu com o The Open Group ) para processamento de transações distribuídas (DTP).

Metas

O objetivo do XA é garantir a atomicidade em " transações globais " que são executadas em componentes heterogêneos. Uma transação é uma unidade de trabalho, como a transferência de dinheiro de uma pessoa para outra. As transações distribuídas atualizam vários armazenamentos de dados (como bancos de dados, servidores de aplicativos , filas de mensagens, caches transacionais, etc.) Para garantir a integridade, o XA usa um two-phase commit (2PC) para garantir que todas as alterações de uma transação tenham efeito ( commit ) ou não ( reverter ), ou seja, atomicamente .

Arquitetura

Especificamente, XA descreve a interface entre um gerenciador de transação global e um aplicativo específico. Um aplicativo que deseja usar XA envolve um gerenciador de transações XA usando uma biblioteca ou serviço separado. O gerenciador de transações rastreia os participantes da transação (ou seja, os vários armazenamentos de dados nos quais o aplicativo grava) e trabalha com eles para realizar o commit de duas fases. Em outras palavras, o gerenciador de transações XA é separado das interações de um aplicativo com os servidores. O XA mantém um registro de suas decisões de confirmação ou reversão, que pode ser usado para recuperação em caso de interrupção do sistema.

Muitos fornecedores de software suportam XA (o que significa que o software pode participar de transações XA), incluindo uma variedade de bancos de dados relacionais e corretores de mensagens.

Vantagens e desvantagens

Como o XA usa o commit de duas fases, as vantagens e desvantagens desse protocolo geralmente se aplicam ao XA. A principal vantagem é que o XA (usando 2PC) permite uma transação atômica em várias tecnologias heterogêneas (por exemplo, uma única transação pode abranger vários bancos de dados de diferentes fornecedores, bem como um servidor de e-mail e um corretor de mensagens), enquanto as transações tradicionais de banco de dados são limitadas a um banco de dados único.

A principal desvantagem é que 2PC é um protocolo de bloqueio: os outros servidores precisam esperar que o gerenciador de transações emita uma decisão sobre confirmar ou abortar cada transação. Se o gerenciador de transações ficar offline enquanto as transações aguardam sua decisão final, elas ficarão paralisadas e manterão seus bloqueios de banco de dados até que o gerenciador de transações fique online novamente e emita sua decisão. Essa retenção prolongada de bloqueios pode ser prejudicial para outros aplicativos que estão usando os mesmos bancos de dados.

Além disso, se o gerenciador de transações travar e seu registro de decisões não puder ser recuperado (por exemplo, devido a um bug em como as decisões foram registradas ou devido à corrupção de dados no servidor), a intervenção manual pode ser necessária. Muitas implementações XA fornecem uma "saída de emergência" para as transações decidirem independentemente se devem ser confirmadas ou abortadas (sem esperar por notícias do gerenciador de transações), mas isso corre o risco de violar a garantia de atomicidade e, portanto, é reservado para emergências.

Especificação

A especificação XA descreve o que um gerenciador de recursos deve fazer para oferecer suporte ao acesso transacional. Os gerentes de recursos que seguem esta especificação são considerados compatíveis com XA .

A especificação XA foi baseada em uma interface usada no sistema Tuxedo desenvolvido na década de 1980, mas adotada por vários sistemas desde então.

Veja também

Referências

links externos