Contenidos
Programación asíncrona
- Asynchronous I/O (Async I/O): Permite que una aplicación realice operaciones de entrada/salida sin bloquear el flujo de ejecución principal. Es común en aplicaciones que realizan muchas operaciones de red o de archivo.
- Promises y Futures: Mecanismos que representan el resultado de una operación asíncrona que puede completarse en el futuro. Permiten manejar resultados de forma no bloqueante.
Modelo actor
- Actor Model: Un modelo de concurrencia en el que los «actores» son unidades independientes de procesamiento que se comunican mediante el envío de mensajes. Este modelo ayuda a gestionar la concurrencia y evita problemas de sincronización y bloqueo.
Desempeño y escalabilidad
- Load Balancing: Distribuir la carga de trabajo entre varios recursos (por ejemplo, servidores o procesos) para mejorar la eficiencia y evitar cuellos de botella.
- Horizontal vs Vertical Scaling: Escalar horizontalmente implica añadir más máquinas o procesos, mientras que escalar verticalmente implica aumentar la capacidad de una sola máquina o proceso.
Teoría de colas
- Queue Theory: El estudio matemático de cómo las solicitudes de servicio se acumulan y se procesan en sistemas con recursos limitados. Es fundamental para entender el comportamiento y el rendimiento en sistemas multiproceso.
Memoria distribuida
- Distributed Shared Memory (DSM): Un enfoque que permite a diferentes nodos en una red compartir una memoria virtual común, a pesar de que físicamente se encuentra en diferentes ubicaciones.
Procesamiento de eventos
- Event-Driven Programming: Un paradigma en el que el flujo del programa está determinado por eventos, como la llegada de datos o la interacción del usuario. Es útil para aplicaciones que requieren alta reactividad.
Control de concurrencia
- Transactional Memory: Un enfoque para manejar la concurrencia en sistemas multiproceso que utiliza transacciones para asegurar la consistencia de la memoria compartida sin necesidad de bloqueos.
Middleware
- Middleware: Software que actúa como intermediario entre diferentes aplicaciones o servicios, facilitando la comunicación y la gestión de datos en sistemas distribuidos.
Concurrency control
- Optimistic and Pessimistic Concurrency Control: Estrategias para manejar el acceso concurrente a recursos compartidos. La optimista asume que los conflictos son raros y maneja los conflictos cuando ocurren, mientras que la pesimista previene los conflictos mediante bloqueos.
Contenedores y orquestación
- Containers (e.g., Docker): Permiten empaquetar aplicaciones y sus dependencias en un entorno aislado que puede ser ejecutado en cualquier sistema compatible.
- Orchestration (e.g., Kubernetes): Herramientas para gestionar y coordinar la ejecución de contenedores en un clúster de máquinas.
Microservicios
- Microservices architecture: Un enfoque en el que una aplicación se divide en servicios independientes, cada uno con su propio proceso, que se comunican entre sí mediante API o mensajería.
Benchmarking y profiling
- Benchmarking: El proceso de medir el desempeño de un sistema o aplicación para compararlo con estándares o sistemas similares.
- Profiling: La técnica de analizar el comportamiento de un programa, especialmente el uso de recursos y tiempos de ejecución, para identificar cuellos de botella y áreas de mejora.