Axon - segmento de reclamación / segmentos no reclamados duplicados para múltiples nodos y varias bases de datos

Matthias Van Eeghem:

Estamos funcionando con una configuración de forma local donde empezamos dos instancias de una aplicación Axon. Las siguientes propiedades se establecen en application.yml:

axon:
  eventhandling:
    processors:
      SomeProcessorName:
        initialSegmentCount: 2
        threadCount: 1
        mode: TRACKING 

Así ambos nodos tienen un solo hilo y deben cada proceso un segmento. Ambos se conectan a AxonServer. ¿Cómo se coordinan las dos instancias reclamaciones segmento?

Si comienzo a ambas aplicaciones usando una base de datos en memoria, puedo ver en AxonServer que ambos intento de segmentar reclamo 0 y que el segmento 1 es reclamado por ninguna de ellas. (Tenemos una advertencia segmento de reclamación / reclamados duplicada). Si se conectan a la misma base de datos, esto no sucede, ejemplo 1 reclamaciones segmento 0, ejemplo 2 reclamaciones segmento 1.

Soy yo entonces lo correcto al asumir que los procesadores idénticos tienen que compartir una base de datos con el fin para que esto funcione correctamente? No puedo encontrar esta información inmediatamente en la documentación de referencia.

¿Acaso esto también significa que si yo hipotéticamente desea replicar un modelo de proyección por razones de rendimiento (por ejemplo: servidor de base de datos en los EE.UU. y otra en la UE), esto no funciona?

Para aclarar: me gustaría que ambas bases de datos para construir un modelo de consulta idéntica que tanto podría ser consultada por separado. Como es ahora (suponiendo que podríamos ejecutar dos nodos en dos bases de datos), el nodo 1 sólo sería procesar eventos para el segmento 0, el nodo 2 haría solamente eventos de proceso para el segmento 1. Si entiendo esto correctamente, esto significa que ambas bases de datos solamente contener la mitad de la información del modelo de consulta.

Así que con el fin de sacar esto adelante, tendría que crear otra base de código casi idéntica, con la única diferencia es el nombre del procesador?

Steven:

Creo que puedo dar alguna orientación en esta área.

Axon Server no proporciona la coordinación entre el seguimiento de Fichas TrackingEventProcessoren este punto en el tiempo. Por lo tanto, la coordinación de esta parte es puramente en su entorno de aplicación, o diferente puesto, con el cliente Axon servidor.

El enfoque más pragmático sería compartir la solución de almacenamiento subyacente para su TokenStoreentre ambas aplicaciones; por lo que su suposición en esta parte es correcta. Las implementaciones actuales de la TokenStoreson de hecho basada en la base de datos - nada impide que pueda llegar a una solución distribuida de esto, sin embargo, que todo esto es de código abierto y se puede ajustar libremente.

No sigo por completo su sugerencia hipotética que:

¿Acaso esto también significa que si yo hipotéticamente desea replicar un modelo de proyección por razones de rendimiento (por ejemplo: servidor de base de datos en los EE.UU. y otra en la UE), esto no funciona?

Bueno, esto puede funcionar correctamente, pero creo que la segmentación de un hecho TrackingEventProcessorque es TrackingTokenno es el camino a seguir en esta parte. Esta solución tiene la intención de compartir la carga de trabajo de la actualización de un único modelo de consulta. La 'carga de trabajo' en este escenario es el flujo de eventos por cierto.

Si usted está buscando para replicar un modelo de consulta dada por medio de la lectura de la secuencia de eventos, de hecho me gustaría sugerir a tener una segunda TrackingEventProcessor, que tiene un evento de manipulación idéntica debajo de componentes. Tenga en cuenta que esto no debería requerir que 'replicar la base de código'. Usted debe simplemente que registrar dos Manejo de Eventos componentes a dos distintos TrackingEventProcessors.

Si está utilizando la primavera de arranque como la configuración, todo esto es típicamente abstrae lejos de usted. Pero si usted toma una mirada en el EventProcessingConfigurer, debe ser capaz de encontrar una API justo describir cómo lograr esto. Si las cosas no están claras en esa zona, me gustaría sugerir un tema diferente debe ser introducido, como el tema diverge un poco de la pregunta original.

Esperando que esto es suficiente para que usted pueda proceder @MatthiasVanEeghem!

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=189513&siteId=1
Recomendado
Clasificación