Red de conocimiento informático - Problemas con los teléfonos móviles - Límite actual de Sentinel dos abiertos (2): almacenamiento distribuido conectable

Límite actual de Sentinel dos abiertos (2): almacenamiento distribuido conectable

Los diferentes centros de almacenamiento físico (como cónsul, nacos, redis y mongo) son todos almacenamiento no sql, es decir, almacenan datos en formato k-v. Incluso mysql puede almacenar datos en formato json. Aunque existen varias formas de implementación del cliente. Pero si desea integrar nuestro Sentinel como centro de almacenamiento, debe cumplir con la especificación de "interfaz" que definimos. El cliente real del centro de almacenamiento está integrado en la subclase de interfaz mediante "composición" para proporcionar servicios al mundo exterior.

La interfaz se ve así:

Sí, solo necesita implementar operaciones de colocación, obtención, eliminación y otras para reemplazar el centro de almacenamiento sin ningún obstáculo.

El cambio dinámico se logra modificando la propiedad sentinel.dashboard.store en el archivo de configuración.

Se produce un problema cuando el valor es de tipo mapa:

La relación de la interfaz es la siguiente: Implemente la siguiente interfaz para satisfacer la operación de aplanamiento del mapa.

Operaciones básicas para almacenar entidades

Interfaz plana de mapa:

Clase de reglas de implementación de almacenamiento distribuido: puede almacenar todas las reglas de Rules y appRules:

Para la contraparte de FastJson, pasar el tipo en la deserialización es suficiente para obtener un objeto genérico:

Para la contraparte de FastJson, pasar el tipo en la deserialización es suficiente para obtener un objeto genérico.

Para la contraparte de FastJson, pasar el tipo en la deserialización es suficiente para obtener un objeto genérico.

Pero lo que realmente obtienes es un objeto JsonObject. No se puede convertir en un objeto RuleEntity.

Este también es el caso de Jackson:

Personalice el objeto ObjectMapper de Jackson para que el tipo de propiedad se serialice durante la serialización:

El mecanismo de bloqueo utilizado es Implementó bloqueos distribuidos de cónsul y bloqueos de memoria predeterminados. Esto garantiza la seguridad del hilo durante las operaciones de "aplanamiento".

ReentrantLock utiliza almacenamiento ConcurrentHashMap.

-- "Una operación tan sofisticada está tomada del código fuente de seata".

En la Sección 1.3, "Conmutación dinámica", es posible cambiar cerraduras dinámicamente según el archivo de configuración. Por supuesto, en el futuro, si elimina Consul y usa un centro de almacenamiento como Redis, puede implementar la interfaz Lock definida para implementar el bloqueo distribuido en Redis.