Share via


Cómo configurar la caché integrada de Azure Cosmos DB

SE APLICA A: NoSQL

En este artículo se describe cómo aprovisionar una puerta de enlace dedicada, cómo configurar la caché integrada y cómo conectar la aplicación.

Requisitos previos

Aprovisionamiento de la puerta de enlace dedicada

  1. Vaya a una cuenta de Azure Cosmos DB en Azure Portal y seleccione la pestaña Puerta de enlace dedicada.

    Screenshot of the Azure portal that shows how to navigate to the Azure Cosmos DB dedicated gateway tab.

  2. Rellene el formulario Puerta de enlace dedicada con los detalles siguientes:

    • Puerta de enlace dedicada: establezca el botón de alternancia en Aprovisionada.
    • SKU: seleccione una SKU con el tamaño de proceso y memoria necesarios. La caché integrada usará aproximadamente el 50 % de la memoria y la memoria restante se usa para metadatos y solicitudes de enrutamiento a las particiones de back-end.
    • Número de instancias: número de nodos. Con fines de desarrollo, se recomienda empezar con un nodo del tamaño D4. En función de la cantidad de datos que necesite almacenar en caché y para lograr una alta disponibilidad, puede aumentar el tamaño del nodo tras las pruebas iniciales.

    Screenshot of the Azure portal dedicated gateway tab that shows sample input settings for creating a dedicated gateway cluster.

  3. Seleccione Guardar y espere entre 5 y 10 minutos para que se complete el aprovisionamiento de la puerta de enlace dedicada. Cuando haya terminado el aprovisionamiento, verá la siguiente notificación:

    Screenshot of a notification in the Azure portal that shows how to check if dedicated gateway provisioning is complete.

Configuración de la memoria caché integrada

Al crear una puerta de enlace dedicada, se aprovisiona automáticamente una caché integrada.

  1. Modifique la cadena de conexión de la aplicación para usar el nuevo punto de conexión de la puerta de enlace dedicada.

    La cadena de conexión de la puerta de enlace dedicada actualizada se encuentra en la hoja Claves:

    Screenshot of the Azure portal keys tab with the dedicated gateway connection string.

    Todas las cadenas de conexión de las puertas de enlace dedicadas siguen el mismo patrón. Quite documents.azure.com de la cadena de conexión original y reemplácela por sqlx.cosmos.azure.com. Una puerta de enlace dedicada siempre tendrá la misma cadena de conexión, incluso si se quita y se vuelve a aprovisionar.

    No es necesario modificar la cadena de conexión en todas las aplicaciones mediante la misma cuenta de Azure Cosmos DB. Por ejemplo, es posible tener una conexión CosmosClient mediante el modo de puerta de enlace y el punto de conexión de la puerta de enlace dedicada, mientras que otra usa el modo directo CosmosClient. En otras palabras, agregar una puerta de enlace dedicada no afecta a las formas existentes de conectarse a Azure Cosmos DB.

  2. Si usa el SDK de .NET o Java, establezca el modo de conexión en el modo de puerta de enlace. Este paso no es necesario para los SDK de Python y Node.js, ya que no tienen opciones adicionales de conexión aparte del modo de puerta de enlace.

Nota:

Si usa la versión más reciente del SDK de .NET o Java, el modo de conexión predeterminado es el modo directo. Para usar la memoria caché integrada, debe invalidar este valor predeterminado.

Ajuste de la coherencia de la solicitud

Debe asegurarse de que la coherencia de la solicitud sea de sesión o final. Si no lo hace, la solicitud siempre omitirá la caché integrada. La manera más fácil de configurar una coherencia específica para todas las operaciones de lectura es establecerla en el nivel de cuenta. También puede configurar la coherencia en el nivel de solicitud; esto se recomienda si solo quiere que un subconjunto de las lecturas use la memoria caché integrada.

Nota:

Si usa el SDK de Python, debe establecer explícitamente el nivel de coherencia de cada solicitud. Tenga en cuenta que la configuración predeterminada del nivel de cuenta no se aplicará automáticamente.

Ajuste de MaxIntegratedCacheStaleness

Configure MaxIntegratedCacheStaleness, que es el tiempo máximo en el que está dispuesto a tolerar datos almacenados en caché obsoletos. Se recomienda establecer MaxIntegratedCacheStaleness lo más alto posible, ya que aumentará la probabilidad de que las consultas y las lecturas puntuales repetidas puedan ser aciertos de caché. Si establece MaxIntegratedCacheStaleness en 0, la solicitud de lectura nunca usará la caché integrada, independientemente del nivel de coherencia. Cuando no está configurado, el valor predeterminado de MaxIntegratedCacheStaleness es 5 minutos.

Nota

MaxIntegratedCacheStaleness se puede establecer como máximo en 10 años. En la práctica, este valor es la obsolescencia máxima y la caché puede restablecerse antes debido a los reinicios del nodo que pueden producirse.

El ajuste de MaxIntegratedCacheStaleness se admite en estas versiones de cada SDK:

SDK Versiones compatibles
.NET SDK v3 >= 3.30.0
SDK de Java v4 >= 4.34.0
SDK de Node.js >=3.17.0
SDK de Python >=4.3.1
FeedIterator<MyClass> myQuery = container.GetItemQueryIterator<MyClass>(new QueryDefinition("SELECT * FROM c"), requestOptions: new QueryRequestOptions
        {
            DedicatedGatewayRequestOptions = new DedicatedGatewayRequestOptions 
            { 
                MaxIntegratedCacheStaleness = TimeSpan.FromMinutes(30) 
            }
        }
);

Omitir la caché integrada (versión preliminar)

Use la opción de solicitud BypassIntegratedCache para controlar qué solicitudes usan la caché integrada. Las escrituras, las lecturas puntuales y las consultas que omiten la caché integrada no usarán el almacenamiento de caché, lo que ahorra espacio para otros elementos. Las solicitudes que omiten la memoria caché siguen enrutadas a través de la puerta de enlace dedicada. Estas solicitudes se sirven desde el back-end y las RU de coste.

El paso de la memoria caché se admite en estas versiones de cada SDK:

SDK Versiones compatibles
.NET SDK v3 >= 3.35.0-versión preliminar
SDK de Java v4 >= 4,49,0
SDK de Node.js No compatible
SDK de Python No compatible
FeedIterator<MyClass> myQuery = container.GetItemQueryIterator<MyClass>(new QueryDefinition("SELECT * FROM c"), requestOptions: new QueryRequestOptions
        {
            DedicatedGatewayRequestOptions = new DedicatedGatewayRequestOptions 
            { 
                BypassIntegratedCache = true
            }
        }
);

Comprobación de los resultados de la caché

Por último, puede reiniciar la aplicación y comprobar los aciertos integrados de la caché de las lecturas o consultas puntuales repetidas viendo si el cargo de la solicitud es 0. Una vez que haya modificado CosmosClient para poder usar el punto de conexión de la puerta de enlace dedicada, todas las solicitudes se enrutarán a través de esa puerta de enlace dedicada.

Para que una solicitud de lectura (esto es, una lectura o consulta de punto) use la caché integrada, deben cumplirse todos los criterios siguientes:

  • El cliente debe conectarse al punto de conexión de la puerta de enlace dedicada.
  • El cliente usa el modo de puerta de enlace (los SDK de Python y Node.js siempre usan el modo de puerta de enlace).
  • La coherencia de la solicitud debe establecerse en un estado de sesión o evento.

Nota:

¿Tiene comentarios sobre la caché integrada? Queremos conocerlos. No dude en compartir sus comentarios directamente con el equipo de ingeniería de Azure Cosmos DB: cosmoscachefeedback@microsoft.com.

Pasos siguientes