Acerca de los perfiles de app
Un perfil de aplicación, o perfil de app, almacena la configuración que le indica a tu instancia de Cloud Bigtable cómo controlar las solicitudes entrantes de una aplicación. Cuando una aplicación se conecta a una instancia de Bigtable, puede especificar el perfil de app que corresponda y usar ese perfil para las solicitudes que la aplicación envíe mediante esa conexión. Los perfiles de apps definen la política de enrutamiento que usa Bigtable y controlan si se permiten las transacciones de una sola fila.
Los perfiles de apps son especialmente útiles para las instancias que tienen dos o más clústeres. Aun si tu instancia tiene solo un clúster, puedes usar un perfil de app único en cada aplicación que ejecutes o para componentes diferentes de una sola aplicación. Por lo tanto, puedes ver gráficos distintos de las métricas de Bigtable para cada perfil de app.
En esta página, se explica la configuración que controlan los perfiles de app, además de cómo estos funcionan con tu aplicación.
Si usas los perfiles de app con el objetivo de configurar las políticas de enrutamiento de clústeres, debes familiarizarte con la descripción general de la replicación de Bigtable antes de leer esta página.
Política de enrutamiento
Los perfiles de aplicación especifican la política de enrutamiento que Bigtable debería usar en cada solicitud:
El enrutamiento de clúster único enruta todas las solicitudes a 1 clúster de tu instancia. Si ese clúster no está disponible, debes realizar una conmutación por error manual a otro clúster.
El enrutamiento de varios clústeres automáticamente enruta las solicitudes al clúster más cercano en una instancia. Si el clúster deja de estar disponible, el tráfico pasa automáticamente al clúster más cercano disponible. Bigtable considera que los clústeres de una misma región son equidistantes, aunque estén en zonas diferentes. Puedes configurar un perfil de app para que se enrute a cualquier clúster de una instancia o puedes especificar un grupo de clústeres que le indique al perfil de app que se enrute solo a algunos de los clústeres de la instancia.
Enrutamiento de grupo de clústeres: Envía solicitudes al clúster disponible más cercano de un grupo de clústeres que especificas en la configuración del perfil de app.
Consulta Conmutaciones por error para obtener más información. Si quieres obtener más información sobre cómo completarlas, consulta Administra las conmutaciones por error.
Transacciones de fila única
En las mutaciones de Bigtable, como las solicitudes de lectura, escritura y eliminación, siempre son atómicas a nivel de fila. Esto incluye mutaciones de varias columnas de una sola fila, siempre que se incluyan en la misma operación de mutación. Bigtable no admite transacciones que actualicen de forma atómica más de una fila.
Sin embargo, Bigtable sí admite algunas operaciones de escritura que requieren una transacción en otras bases de datos. De esta manera, Bigtable usa transacciones de fila única para completar estas operaciones. Se incluyen operaciones de lectura y de escritura, y todas se ejecutan de forma atómica, sin embargo, siguen siendo atómicas solo a nivel de la fila.
- Operaciones lectura-modificación-escritura, incluidos los incrementos y los anexos. Una operación lectura-modificación-escritura lee un valor existente, lo incrementa o anexa y escribe el valor actualizado en la tabla.
- Operaciones de verificación y mutación, también conocidas como mutaciones condicionales o escrituras condicionales. En este tipo de operaciones, Bigtable verifica una fila para ver si cumple con una condición específica. Si cumple con la condición, Bigtable escribe valores nuevos en la fila.
Conflictos entre las transacciones de fila única
Cada clúster de una instancia de Bigtable es un clúster principal que acepta operaciones de lectura y de escritura. Como resultado, las operaciones que requieren transacciones de una sola fila pueden causar problemas en las instancias de varios clústeres.
Por ejemplo, supongamos que tienes una tabla que usas a fin de almacenar datos para un sistema de tickets. Usa un contador de números enteros para almacenar la cantidad de tickets que se vendieron. Cada vez que vendes un ticket, tu app envía una operación de lectura-modificación-escritura para aumentar el contador en 1.
Si tu instancia tiene un clúster, las apps cliente pueden vender tickets al mismo tiempo y aumentar los contadores sin pérdida de datos porque las solicitudes se controlan de manera atómica en el orden en que las recibe ese único clúster.
Por otro lado, si la instancia tiene varios clústeres y el perfil de app permite el enrutamiento de varios clústeres, las solicitudes simultáneas para aumentar el contador se pueden enviar a diferentes clústeres y, luego, replicarse en los otros clústeres de la instancia. Si envías dos solicitudes de aumento al mismo tiempo, que se enrutan a clústeres diferentes, cada una finaliza su transacción sin “saber” sobre la otra. El contador de cada clúster aumenta en uno. Cuando los datos se replican en el otro clúster, es posible que Bigtable no sepa que querías aumentar en dos.
Para ayudarte a evitar resultados no deseados, Bigtable hace lo siguiente:
- Requiere que cada perfil de app especifique si permite las transacciones de fila única.
- Esto ayuda a evitar que habilites las transacciones en un perfil de app que use el enrutamiento de varios clústeres, debido a que no existe una forma segura de habilitar ambas funciones a la vez.
- Te advierte si habilitas las transacciones de fila única en dos o más perfiles de app diferentes que usan el enrutamiento de un solo clúster y apuntan a clústeres diferentes. Si decides crear este tipo de configuración, debes asegurarte de no enviar solicitudes de lectura-modificación-escritura o de verificación y mutación en conflicto a clústeres diferentes.
Cómo funcionan los perfiles de app
En los perfiles de app, se especifica la configuración que Bigtable debe usar para administrar las solicitudes entrantes de una instancia.
Muchos usuarios de Bigtable tienen varias aplicaciones que se conectan a la misma instancia. Por ejemplo, es posible que tengas una aplicación que proporcione datos a los clientes mediante solicitud, y otra que ejecute trabajos por lote ocasionales a fin de analizar tus datos. Para controlar estas aplicaciones, debes crear varios perfiles de app, al menos uno por cada aplicación, y configurarlos con los ajustes correspondientes de cada una de ellas. Esta configuración permite cambiar los ajustes de una aplicación, pero no de otras.
Además, es posible que tengas una sola aplicación que ejecute varias funciones, como la visualización de los datos actuales y la consulta de datos históricos. Para controlar estas funciones, debes crear un perfil de app para cada una, de modo que puedas definirlas por separado y actualizar la configuración de una sin tener que modificar las otras.
Las instancias tienen un perfil de app default
; además, puedes crear perfiles de apps personalizados para cada instancia. En las siguientes secciones, se describen los perfiles de apps personalizados y default
.
Para usar un perfil de app, debes especificarlo en el código cuando te conectas a la instancia. Si no especificas un perfil de aplicación, Bigtable usa el perfil predeterminado de aplicación de la instancia.
Perfil de app predeterminado
Cuando creas una instancia, Bigtable crea automáticamente un perfil de app predeterminado para esa instancia. Si tu aplicación no especifica un perfil de app o si usas la shell de HBase para conectarte a tu instancia, Bigtable usa la configuración del perfil de app predeterminado. Puedes ver y modificar esta configuración en cualquier momento.
La configuración del perfil de app predeterminado de una instancia depende de la cantidad de clústeres que tenía la instancia cuando la creaste:
- Si creaste la instancia con 1 clúster, el perfil de app
default
usa el enrutamiento de un solo clúster y habilita las transacciones de una sola fila. Esto garantiza que agregar clústeres más adelante no cambie el comportamiento de tus aplicaciones existentes. - Si creaste la instancia con 2 o más clústeres, el perfil de app
default
usa el enrutamiento de varios clústeres. No se permite usar transacciones de una sola fila con el enrutamiento de varios clústeres.
El perfil de app predeterminado no cambia cuando agregas o quitas clústeres. Para cambiar su configuración, debes actualizarlo de forma manual. Sin embargo, se recomienda que crees y uses un perfil de app nuevo en lugar de cambiar el predeterminado.
Perfiles de app personalizados
Un perfil de app personalizado es uno que creas y configuras. Una instancia puede tener hasta 2,000 perfiles de app.
¿Qué sigue?
- Supervisa el uso de CPU de un perfil de aplicación.
- Encuentra la configuración de replicación adecuada para tu caso de uso.
- Crea y administra perfiles de app para tu instancia.
- Crea una instancia que use la replicación.
- Habilita la replicación en una instancia existente.