Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La informática sin servidor consiste en la capacidad de centrarse en partes individuales de la lógica que son repetibles y sin estado. Estos elementos no requieren administración de infraestructura y consumen recursos solo durante los segundos o los milisegundos mientras se ejecutan. En el núcleo del movimiento informático sin servidor se encuentran funciones, que están disponibles en el ecosistema de Azure mediante Azure Functions. Para más información sobre otros entornos de ejecución sin servidor en Azure, consulte la página Sin servidor en Azure .
Con la integración nativa entre Azure Cosmos DB y Azure Functions, puede crear desencadenadores de base de datos, enlaces de entrada y enlaces de salida directamente desde la cuenta de Azure Cosmos DB. Con Azure Functions y Azure Cosmos DB, puede crear e implementar aplicaciones sin servidor controladas por eventos con acceso de baja latencia a datos enriquecidos para una base de usuarios global.
Azure Functions puede crear conexiones de base de datos aisladas por invocación si el cliente de base de datos no se administra correctamente, lo que puede afectar al rendimiento de la conexión en alta simultaneidad, especialmente en el plan de consumo. Sin embargo, al usar enlaces o desencadenadores de Cosmos DB, Azure Functions reutiliza internamente un cliente del SDK de Cosmos DB compartido, lo que garantiza una agrupación de conexiones eficaz en varias invocaciones. Azure Cosmos DB admite un modo de conectividad basado en HTTP y basado en TCP. Esta arquitectura admite cargas de trabajo escalables y de alto rendimiento que requieren acceso dinámico a los datos.
Información general
Azure Cosmos DB y Azure Functions permiten integrar las bases de datos y las aplicaciones sin servidor de las maneras siguientes:
- Cree un desencadenador de Azure Functions controlado por eventos para Azure Cosmos DB. Este desencadenador se basa en flujos de change feed para supervisar el contenedor de Azure Cosmos DB en busca de cambios. Cuando se realizan cambios en un contenedor, el flujo de cambios se envía al desencadenador, que invoca la Función de Azure.
- Como alternativa, enlace una función de Azure a un contenedor de Azure Cosmos DB mediante un enlace de entrada. Los enlaces de entrada leen datos de un contenedor cuando se ejecuta una función.
- Enlace de una función a un contenedor de Azure Cosmos DB mediante un enlace de salida. Los enlaces de salida escriben datos en un contenedor cuando se completa una función.
Nota:
Actualmente, el desencadenador de Azure Functions, los enlaces de entrada y los enlaces de salida para Azure Cosmos DB solo se admiten para su uso con la API para NoSQL. Para todas las demás API de Azure Cosmos DB, se debe acceder a la base de datos desde su función mediante el cliente estático de la API.
En el diagrama siguiente se ilustra cada una de estas tres integraciones:
El desencadenador, el enlace de entrada y el enlace de salida de Azure Functions para Azure Cosmos DB se pueden usar en las siguientes combinaciones:
- Un desencadenador de Azure Functions para Azure Cosmos DB se puede usar con un enlace de salida a otro contenedor de Azure Cosmos DB. Después de que una función realice una acción en un elemento de la fuente de cambios, puede escribirlo en otro contenedor (escribirlo en el mismo contenedor del que procede crearía eficazmente un bucle recursivo). O, puede usar un trigger de Azure Functions para Azure Cosmos DB para migrar eficazmente todos los ítems modificados de un contenedor a otro, utilizando un enlace de salida.
- Los enlaces de entrada y los enlaces de salida para Azure Cosmos DB se pueden usar en la misma función de Azure. Esto es eficaz en los casos en que desea buscar determinados datos mediante el enlace de entrada, modificarlos en la función de Azure y luego guardarlos en el mismo contenedor o en un contenedor diferente, tras la modificación.
- Un enlace de entrada a un contenedor de Azure Cosmos DB se puede usar en la misma función que un desencadenador de Azure Functions para Azure Cosmos DB y también se puede usar con o sin un enlace de salida. Puede usar esta combinación para aplicar la información de cambio de moneda actualizada (extraída con un enlace de entrada a un contenedor de cambios) al flujo de cambios de nuevos pedidos en su servicio de carrito de compras. El total actualizado del carrito de la compra, con la conversión de moneda actual aplicada, se puede escribir en un tercer contenedor mediante una vinculación de salida.
Casos de uso
En los siguientes casos de uso se muestran algunas maneras de aprovechar los datos de Azure Cosmos DB mediante la conexión de los datos a Azure Functions controlado por eventos.
Caso de uso de IoT: disparador y vinculación de salida de Azure Functions para Azure Cosmos DB
En las implementaciones de IoT, puede invocar una función cuando la luz del motor de comprobación se muestre en un automóvil conectado.
Implementación: Uso de un desencadenador y un enlace de salida de Azure Functions para Azure Cosmos DB
- Un desencadenador de Azure Functions para Azure Cosmos DB se usa para desencadenar eventos relacionados con las alertas de automóviles, como la luz del motor de comprobación que aparece en un automóvil conectado.
- Cuando se enciende la luz de revisión del motor, los datos del sensor se envían a Azure Cosmos DB.
- Azure Cosmos DB crea o actualiza nuevos documentos de datos de sensor y, a continuación, esos cambios se transmiten al desencadenador de Azure Functions para Azure Cosmos DB.
- El desencadenador se invoca cada vez que hay un cambio de datos en la recopilación de datos del sensor, dado que todos los cambios se transmiten de manera continua a través del canal de cambios.
- Una condición de umbral se usa en la función para enviar los datos del sensor al departamento de garantía.
- Si la temperatura también supera un valor determinado, también se envía una alerta al propietario.
- El enlace de salida de la función actualiza el registro del automóvil en otro contenedor de Azure Cosmos DB para almacenar información sobre el evento de verificación del motor.
En la imagen siguiente se muestra el código escrito en Azure Portal para este desencadenador.
Caso de uso financiero: desencadenador de temporizador y vinculación de entrada
En las implementaciones financieras, puede invocar una función cuando un saldo de cuenta bancaria se encuentra bajo un importe determinado.
Implementación: Un desencadenador de temporizador con un enlace de entrada de Azure Cosmos DB
- Con un desencadenador de temporizador, puede recuperar la información de saldo de la cuenta bancaria almacenada en un contenedor de Azure Cosmos DB a intervalos programados mediante un enlace de entrada.
- Si el saldo está por debajo del umbral de saldo bajo establecido por el usuario, siga con una acción de la función de Azure.
- El enlace de salida puede ser una integración de SendGrid que envía un correo electrónico de una cuenta de servicio a las direcciones de correo electrónico identificadas para cada una de las cuentas de saldo inferior.
En las imágenes siguientes se muestra el código en Azure Portal para este escenario.
Caso de uso en videojuegos: desencadenador y enlace de salida de Azure Functions para Azure Cosmos DB
En los juegos, cuando se crea un nuevo usuario, puede buscar otros usuarios que puedan conocerlos mediante Azure Cosmos DB para Gremlin. A continuación, puede escribir los resultados en una base de datos de Azure Cosmos DB o SQL para facilitar la recuperación.
Implementación: Uso de un desencadenador y un enlace de salida de Azure Functions para Azure Cosmos DB
- Con una base de datos de grafos de Azure Cosmos DB para almacenar todos los usuarios, puede crear una nueva función con un desencadenador de Azure Functions para Azure Cosmos DB.
- Cada vez que se inserta un nuevo usuario, se invoca la función y, a continuación, el resultado se almacena mediante un enlace de salida.
- La función consulta la base de datos de grafos para buscar todos los usuarios que están directamente relacionados con el nuevo usuario y devuelve ese conjunto de datos a la función.
- A continuación, estos datos se almacenan en Azure Cosmos DB, que se pueden recuperar fácilmente mediante cualquier aplicación front-end que muestre al nuevo usuario sus amigos conectados.
Caso de uso minorista: varias funciones
En las implementaciones comerciales, cuando un usuario agrega un elemento a su cesta, ahora tiene la flexibilidad de crear e invocar funciones para componentes opcionales de canalización empresarial.
Implementación: Varios desencadenadores de Azure Functions para Azure Cosmos DB que escuchan un contenedor
- Puede crear varias funciones de Azure mediante la adición de desencadenadores de Azure Functions para Azure Cosmos DB a cada uno, todos los cuales escuchan la misma fuente de cambios de los datos del carro de la compra. Cuando varias funciones escuchan el mismo flujo de cambios, se requiere una nueva colección de arrendamientos para cada función. Para obtener más información sobre las colecciones de arrendamientos, consulte la biblioteca del procesador de flujo de cambios.
- Cada vez que se agrega un nuevo elemento a un carro de la compra de usuarios, cada función se invoca independientemente por la fuente de cambios desde el contenedor del carro de la compra.
Una función puede usar el contenido de la cesta actual para cambiar la presentación de otros elementos que el usuario podría interesar.
Otra función puede actualizar los totales de inventario.
Otra tarea puede enviar información de clientes para productos específicos al departamento de marketing, que les envía un correo promocional.
Cualquier departamento puede crear una función de Azure para Azure Cosmos DB escuchando el feed de cambios y asegurándose de que no se retrasan los eventos críticos del procesamiento de pedidos.
En todos estos casos de uso, dado que la función ha desacoplado la propia aplicación, no es necesario poner en marcha nuevas instancias de aplicación todo el tiempo. En su lugar, Azure Functions pone en marcha funciones individuales para completar procesos discretos según sea necesario.
Tooling
La integración nativa entre Azure Cosmos DB y Azure Functions está disponible en Azure Portal y en Visual Studio.
En el portal de Azure Functions, puede crear un desencadenador. Para obtener instrucciones de inicio rápido, consulte Creación de un desencadenador de Azure Functions para Azure Cosmos DB en Azure Portal.
En el portal de Azure Cosmos DB, puede agregar un desencadenador de Azure Functions para Azure Cosmos DB a una aplicación de funciones de Azure existente en el mismo grupo de recursos.
En Visual Studio, puede crear el desencadenador mediante Las herramientas de Azure Functions:
¿Por qué elegir la integración de Azure Functions para la informática sin servidor?
Azure Functions proporciona la capacidad de crear unidades de trabajo escalables o fragmentos concisos de lógica que se pueden ejecutar a petición, sin aprovisionar ni administrar la infraestructura. Con Azure Functions, no es necesario crear una aplicación completa para responder a los cambios en la base de datos de Azure Cosmos DB, puede crear pequeñas funciones reutilizables para tareas específicas. Además, también puede usar datos de Azure Cosmos DB como entrada o salida en una función de Azure en respuesta a eventos como solicitudes HTTP o desencadenador con tiempo.
Azure Cosmos DB es la base de datos recomendada para la arquitectura informática sin servidor por los siguientes motivos:
Acceso instantáneo a todos los datos: tiene acceso granular a todos los valores almacenados porque Azure Cosmos DB indexa automáticamente todos los datos de forma predeterminada y hace que esos índices estén disponibles inmediatamente. Esto significa que puede consultar, actualizar y agregar constantemente nuevos elementos a la base de datos y tener acceso instantáneo a través de Azure Functions.
Sin esquema. Azure Cosmos DB es sin esquema, por lo que es únicamente capaz de controlar cualquier salida de datos de una función de Azure. Este enfoque de "gestionar cualquier cosa" facilita la creación de varias funciones que todas generan salidas hacia Azure Cosmos DB.
Rendimiento escalable. El rendimiento se puede escalar y reducir verticalmente al instante en Azure Cosmos DB. Si tiene cientos o miles de Functions consultando y escribiendo en el mismo contenedor, puede aumentar las RU/s para manejar la carga. Todas las funciones pueden funcionar en paralelo mediante las RU/s asignadas y se garantiza que los datos sean coherentes.
Replicación global. Puede replicar datos de Azure Cosmos DB en todo el mundo para reducir la latencia y localizar geográficamente los datos más cerca de dónde están los usuarios. Al igual que con todas las consultas de Azure Cosmos DB, los datos de desencadenadores controlados por eventos se leen desde la Azure Cosmos DB más cercana al usuario.
Si quiere integrar con Azure Functions para almacenar datos y no necesita indexación profunda o si necesita almacenar datos adjuntos y archivos multimedia, el desencadenador de Azure Blob Storage puede ser una mejor opción.
Ventajas de Azure Functions:
Controlado por eventos. Azure Functions está controlado por eventos y puede escuchar una fuente de cambios de Azure Cosmos DB. Esto significa que no es necesario crear lógica de escucha, solo tiene que mantenerse atento a los cambios que está escuchando.
Sin límites. Las funciones se ejecutan en paralelo y el servicio pone en marcha tantas funciones como necesite. Define los parámetros.
Bueno para tareas rápidas. El servicio pone en marcha nuevas instancias de funciones cada vez que se desencadena un evento y las cierra en cuanto se completa la función. Solo paga por el tiempo en que se ejecutan las funciones.
Si no está seguro de si Flow, Logic Apps, Azure Functions o WebJobs son los mejores para su implementación, consulte Elegir entre Flow, Logic Apps, Functions y WebJobs.
Pasos siguientes
Ahora vamos a conectar Azure Cosmos DB y Azure Functions de verdad.