Para configurar uma política de implementação, utilize um arquivo
XML do descritor da política de implementação.
Nas seguintes seções, os elementos e atributos do arquivo XML do descritor
da política de implementação está definido. Consulte o Arquivo deploymentPolicy.xsd para obter o esquema XML da política de implementação correspondente.
Elementos no arquivo deploymentPolicy.xml(1) <deploymentPolicy>
(2) <objectgridDeployment objectGridName="blah">
(3) <mapSet
(4) name="mapSetName"
(5) numberOfPartitions="numberOfPartitions"
(6) minSyncReplicas="minimumNumber"
(7) maxSyncReplicas="maximumNumber"
(8) maxAsyncReplicas="maximumNumber"
(9) replicaReadEnabled="true|false"
(10) numInitialContainers="numberOfInitialContainersBeforePlacement"
(11) autoReplaceLostShards="true|false"
(12) developmentMode="true|false"
(13) placementStrategy="FIXED_PARTITION|PER_CONTAINER">
(14) <map ref="backingMapReference" />
(15)
(16) <zoneMetadata>
(17) <shardMapping
(18) shard="shardType"
(19) zoneRuleRef="zoneRuleRefName" />
(20) <zoneRule
(21) name="zoneRuleName"
(22) exclusivePlacement="true|false" >
(23) <zone name="ALPHA" />
(24) <zone name="BETA" />
(25) <zone name="GAMMA" />
(26) </zoneRule>
(27) </zoneMetadata>
(28) </mapSet>
(29) </objectgridDeployment>
(30) </deploymentPolicy>
Elemento deploymentPolicy (linha 1)
O elemento deploymentPolicy é o elemento de nível superior do
arquivo XML de política de implementação.
Este elemento configura o espaço de nomes do arquivo e o local do esquema.
O
esquema está definido no arquivo
deploymentPolicy.xsd.
- Número de Ocorrências: Uma
- Elemento filho: objectgridDeployment
Elemento objectgridDeployment (linha 2)
O elemento
objectgridDeployment é utilizado para referenciar uma instância do
ObjectGrid a partir do arquivo XML do ObjectGrid. Dentro
do elemento objectgridDeployment, é possível dividir seus mapas em
conjuntos de mapas.
- Número de ocorrências: Uma ou mais
- Elemento filho: mapSet
Atributos- objectgridName
- Especifica o nome da instância de ObjectGrid para implementar. Esse atributo faz referência a
um elemento objectGrid que está definido no arquivo XML do ObjectGrid. (Obrigatório)
Por exemplo, o atributo objectgridName é configurado como
CompanyGrid no arquivo
companyGridDpReplication.xml. O atributo objectgridName faz
referência ao
CompanyGrid definido no arquivo
companyGrid.xml. Leia sobre
Arquivo XML descritor do ObjectGrid que
você deve acoplar com o arquivo de política de implementação para
cada instância de ObjectGrid.
Elemento mapSet (linha 3)
O elemento mapSet é utilizado
para agrupar mapas. Os mapas dentro de um elemento mapSet são
particionados e replicados da mesma maneira. Cada mapa deve pertencer
a apenas um elemento mapSet.
- Número de ocorrências: Uma ou mais
- Elementos filhos:
Atributos- name
- Especifica o nome do mapSet. Esse
atributo deve ser exclusivo dentro do elemento objectgridDeployment. (Obrigatório)
- numberOfPartitions
- Especifica o número de partições para o elemento mapSet. O valor
padrão é 1. O número deve ser apropriado para o número de servidores de contêiner
que hospedam as partições. (Opcional)
- minSyncReplicas
- Especifica o número mínimo de réplicas assíncronas para cada partição
no mapSet. O valor padrão é 0. Shards não são colocados até o domínio
poder suportar o número mínimo de réplicas síncronas.
Para suporte do valor minSyncReplicas, é necessário mais um servidor de contêiner do que o valor minSyncReplicas. Se o número de réplicas síncronas ficar abaixo do valor minSyncReplicas, grave as transações que não forem mais permitidas para essa partição. (Opcional)
- maxSyncReplicas
- Especifica o número máximo de réplicas síncrona para cada partição
no mapSet. O valor padrão é 0. Nenhuma outra réplica síncrona é
colocada para uma partição após um domínio atingir esse número de
réplicas síncronas para essa partição específica. Incluir servidores de contêineres que podem suportar esse ObjectGrid pode resultar em um aumento no número de réplicas síncronas se o valor maxSyncReplicas ainda não tiver sido atingido. (Opcional)
- maxAsyncReplicas
- Especifica o número máximo de réplicas assíncronas para cada partição
no mapSet. O valor padrão é 0. Após o primário e todas as réplicas síncronas forem colocados em uma partição, réplicas assíncronas serão colocadas até o valor maxAsyncReplicas ser atendido. (Opcional)
- replicaReadEnabled
- Se este atributo é configurado como true, pedidos
de leitura são distribuídos entre uma partição primária e suas réplicas.
Se o atributo replicaReadEnabled for false, os pedidos de
leitura são roteados para o primário apenas. O valor padrão é false. (Opcional)
- numInitialContainers
- Especifica o número de servidores de contêiner que são necessárias antes de o posicionamento inicial ocorrer para os shards neste elemento mapSet. O valor padrão é 1. Esse atributo ajudar a economizar processo e largura da banda da rede ao colocar uma grade de dados on-line a partir de um cold startup. (Opcional)
- Também é possível usar a propriedade placementDeferralInterval
e o comando xscmd -c suspendBalancing para atrasar
o posicionamento inicial de shards nos servidores de contêiner.
- Iniciar um servidor de contêiner envia um evento para o serviço de
catálogo.
Na primeira vez em que o número de servidores de contêiner ativos for igual ao valor numInitialContainers para um elemento mapSet, o serviço de catálogo colocará os shards a partir do mapSet, desde que o valor minSyncReplicas também possa ser atendido.
Depois que o valor numInitialContainers for atendido, cada evento iniciado pelo servidor de contêiner poderá re-equilibrar os shards não posicionados e posicionados anteriormente. Se você souber aproximadamente quantos servidores de contêiner serão iniciados para esse elemento mapSet, o valor numInitialContainers poderá ser configurado próximo a esse número para evitar o re-equilíbrio após cada início do
servidor de contêiner. O posicionamento ocorre apenas quando você atinge o valor numInitialContainers especificado no elemento mapSet.
Caso você precise
substituir o valor numInitialContainers,
por exemplo, quanto estiver executando manutenção nos servidores e desejar
que o posicionamento do shard continue executando, o comando xscmd
-c triggerPlacement poderá ser usado. Esta substituição é temporária
e aplicada quando o comando é executado. Depois de executar o comando, todas as execuções subsequentes de posicionamento usarão o valor numInitialContainers.
- autoReplaceLostShards
- Especifica se os shards perdidos são posicionados em outros servidores de contêiner.
O valor-padrão é true. Quando um servidor de contêiner é parado ou falhar, os shards em execução no servidor de contêiner são perdidos. Um shard primário perdido faz com que um
dos shards de réplica seja promovido para o shard primário para a
partição correspondente.
Devido a essa promoção, uma das réplicas é perdida. Se quiser que os shards perdidos permaneçam não posicionados, configure
o atributo autoReplaceLostShards como false. Essa
configuração não afeta a cadeia de promoção, mas somente a
substituição do último shard na cadeia. (Opcional)
- developmentMode
- Com este atributo, é possível influenciar onde um shard é posicionado em
relação a seus shards peer. O valor padrão é verdadeiro. Quando o
atributo developmentMode estiver configurado como
false, nenhum dos dois shards da mesma
partição será posicionado no mesmo computador.
Quando o atributo developmentMode é configurado para true, os shards
da mesma partição podem ser posicionados na mesma máquina.
Nos dois casos, nenhum dos dois shards da mesma partição chegam a ser
posicionados no mesmo servidor de contêiner. (Opcional)
- placementStrategy
- Há duas estratégias de posicionamento. A estratégia padrão é FIXED_PARTITION,
em que o número de shards primários que são posicionados nos servidores de contêiner disponíveis
é igual ao número de partições definidas, aumentado pelo número de
réplicas. A estratégia alternativa é PER_CONTAINER,
em que o número de shards primários que são posicionados em cada servidor de contêiner
é igual ao número de partições definidas, com um número igual de
réplicas posicionadas em outros servidores de contêiner. (Opcional)
Elemento de Mapa (Linha 14)
Cada mapa em um elemento mapSet
faz referência a um dos elementos backingMap definido no arquivo XML
de ObjectGrid correspondente. Cada mapa em um ambiente
eXtreme Scale
distribuído pode pertencer a apenas um elemento mapSet.
- Número de ocorrências: Uma ou mais
- Elemento filho: None
Atributos- ref
- Fornece uma referência para um elemento backingMap no arquivo XML do
ObjectGrid. Cada mapa em um elemento mapSet deve fazer referência a
um elemento backingMap a partir do arquivo XML de ObjectGrid. O valor
que é designado ao atributo ref deve corresponder ao atributo name de
um dos elementos backingMap no arquivo XML de ObjectGrid, como no
fragmento de código a seguir.
(Obrigatório)
Elemento zoneMetadata (Linha 16)
É possível colocar shards em
zonas. Esta função permite maior controle sobre como o eXtreme
Scale coloca shards em uma grade. As Java™ Virtual Machines que hospedam um
servidor eXtreme Scale podem ser identificadas com um identificador de zona. O arquivo de
implementação pode incluir uma ou mais regras de zonas e estas regras de zonas estão
associadas a um tipo de shard. O elemento zoneMetadata é um receptáculo dos elementos de configuração de zona. Dentro do elemento zoneMetadata, as zonas podem ser definidas e o comportamento do posicionamento de shard pode ser influenciado.
Para um plano de fundo adicional, consulte Configurando Zonas para a Colocação de Réplica.
- Número de ocorrências: Zero
ou uma
- Elementos filhos:
Atributos: Nenhum
Elemento shardMapping (Linha 17)
O elemento
shardMapping é usado para associar um tipo de shard a uma regra de zona. O posicionamento do shard é influenciado pelo mapeamento para a regra de zona.
- Número de ocorrências: Zero
ou uma
- Elementos-filhos: Nenhum
Atributos- shard
- Especifique o nome de um shard ao qual associar zoneRule.
(Obrigatório)
- zoneRuleRef
- Especifique o nome de um zoneRule ao qual associar o shard.
(Opcional)
Elemento zoneRule (Linha 20)
Uma regra de zona
especifica o possíveis conjuntos de zonas nos quais um shard pode ser
posicionado. O elemento zoneRule é usado para especificar um conjunto de
zonas dentro do qual um conjunto de tipos de shard pode ser posicionado. A regra de zona também pode ser usada para determinar como os shards estão agrupados em toda a zonas usando o atributo exclusivePlacement.
- Número de ocorrências: Uma ou mais
- Elementos filhos: zone
Atributos- name
- Especifique o nome da regra de zona definida anteriormente,
como zoneRuleRef em um elemento shardMapping. (Obrigatório)
- exclusivePlacement
- Uma configuração exclusiva indica que cada tipo de shard mapeado para esta regra de zona é posicionado em uma zona diferente na lista de zonas. Uma configuração inclusiva indica que após um shard ser posicionado em uma zona da lista, os outros tipos de shard mapeados para esta regra de zona também são posicionados nessa zona. Observe que usar uma configuração exclusiva com três shards mapeados para a mesma regra de zona (primário e duas réplicas síncronas) requerer pelo menos 3 zonas para que todos os shards sejam posicionados. (Opcional)
Elementos da Zona (Linhas 23 a 25)
O elemento da zona é usado para nomear uma zona dentro de uma regra de zona. Cada zona denominada deve corresponder a um nome de zona que é usado para ativar os servidores.
Exemplo
No exemplo a seguir, o elemento mapSet
é utilizado para configurar uma política de implementação. O valor
é configurado como
mapSet1 e é dividido em
10 partições.
Cada uma dessas partições tem pelo menos uma réplica
síncrona disponíveis e não mais do que duas réplicas síncronas. Cada partição também tem uma réplica assíncrona se o ambiente a
suportar.
Todas as réplicas síncronas são posicionadas antes que quaisquer
réplicas assíncronas sejam posicionadas. Além disso, o serviço de
catálogo não tenta colocar os shards para o elemento mapSet1 até o
domínio poder suportar o valor minSyncReplicas. O
suporte do valor minSyncReplicas requer dois ou mais servidores de contêiner: um
para o primário e dois para a réplica síncrona.
<?xml version="1.0" encoding="UTF-8"?>
<deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd"
xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy">
<objectgridDeployment objectgridName="CompanyGrid">
<mapSet name="mapSet1" numberOfPartitions="10"
minSyncReplicas="1" maxSyncReplicas="2" maxAsyncReplicas="1"
numInitialContainers="10" autoReplaceLostShards="true"
developmentMode="false" replicaReadEnabled="true">
<map ref="Customer" />
<map ref="Item" />
<map ref="OrderLine" />
<map ref="Order" />
</mapSet>
</objectgridDeployment>
</deploymentPolicy>
Embora apenas dois servidores de contêiner
sejam necessários para satisfazer as configurações de replicação, o
atributo numInitialContainers requer 10 servidores de contêiner disponíveis antes
de o serviço de catálogo tentar colocar qualquer um dos shards nesse
elemento mapSet.
Após o domínio ter 10 servidores de contêiner capazes de suportar o CompanyGrid ObjectGrid, todos os shards no elemento mapSet1 serão posicionados.
Como o atributo autoReplaceLostShards está configurado como true, qualquer shard nesse elemento mapSet que é perdido como resultado da falha do servidor de contêiner é automaticamente substituído em outro servidor de contêiner, desde que um servidor de contêiner esteja disponível para hospedar o shard perdido. Os shards da mesma partição
não podem ser posicionados na mesma máquina para o elemento mapSet1,
pois o atributo developmentMode está configurado como
false. Pedidos somente de leitura são distribuídos no shard primário e em
suas réplicas para cada partição, pois o valor de replicaReadEnabled
é true.
O arquivo companyGridDpMapSetAttr.xml utiliza o
atributo ref no mapa para fazer referência a cada um dos elementos
backingMap do arquivo companyGrid.xml.
Consulte o Roteamento para Zonas Preferenciais para
obter exemplos envolvendo configurações de zona.