Despliegue en Kubernetes
Despliegue
Los conectores de HTM se pueden configurar para realizar reintentos y usar el patrón de circuit breaker para proteger el servidor HTM Http (para más información sobre cómo configurarlo, visite Connector).
Aquí hay un ejemplo de ConfigMap que se puede usar para desplegar HTM en Kubernetes:
akka {
remote.artery.canonical.hostname = ${POD_IP}
# Use Kubernetes API to discover the cluster
discovery {
kubernetes-api {
pod-label-selector = "app=%s"
}
}
management {
# use the Kubernetes API to create the cluster
cluster.bootstrap {
contact-point-discovery {
discovery-method = kubernetes-api
service-name = ${AKKA_CLUSTER_BOOTSTRAP_SERVICE_NAME}
required-contact-point-nr = 1
required-contact-point-nr = ${?REQUIRED_CONTACT_POINT_NR}
}
}
# available from Akka management >= 1.0.0
health-checks {
readiness-path = "health/ready"
liveness-path = "health/alive"
}
}
actor {
provider = cluster
}
cluster {
seed-nodes = []
downing-provider-class = "akka.cluster.sbr.SplitBrainResolverProvider"
split-brain-resolver {
active-strategy = keep-majority
stable-after = 20s
}
sharding {
remember-entities = off
handoff-timeout = 8s
least-shard-allocation-strategy.rebalance-absolute-limit = 20
rebalance-interval = 2s
number-of-shards = 100
}
}
}
Consideraciones para CosmosDB en Azure
De forma predeterminada, HTM registra 3 event processors:
-
Task read side event processor
-
Task history read side event processor
-
Bulk execution event processor
Estos processors registran sus propios event processor streams, lo cual consume más Request Units (RUs) en Cosmos DB.
Para ahorrar algunas RU en Cosmos DB, se puede usar DelegatingEventProcessor. En este caso, solo un event processor consume eventos del journal y luego delega eventos a otros event processors registrados.
La desventaja de DelegatingEventProcessor es que si el procesamiento del evento falla en cualquiera de los event processors delegados, el mismo evento se volverá a reproducir para todos los event processors delegados (incluso si el evento fue procesado correctamente por otros). Cuando hay tres event processors independientes, entonces el evento que falla se volverá a reproducir solo por el único event processor donde falló el procesamiento previo.
Puede habilitar el Delegating Event Processor utilizando la siguiente configuración
ipf.htm.event-processor.delegating.enabled = true