Arquivo Descritor XML de Política de Implementação

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.

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.
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.
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.
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.

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.
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.
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.