Consistent Hashing es un algoritmo de hashing distribuido diseñado para distribuir un conjunto de claves (datos) entre un conjunto de nodos (servidores) de manera que, al añadir o eliminar un nodo, el número de claves que necesitan ser reasignadas sea mínimo. A diferencia del hashing modular simple, donde la adición o eliminación de un nodo puede invalidar casi todas las asignaciones de claves, Consistent Hashing mapea tanto los nodos como las claves a un "anillo" o "círculo" de hash. Cada clave se asigna al primer nodo que aparece en el sentido de las agujas del reloj después de su propia posición en el anillo. Para mitigar el desequilibrio inherente, se suelen utilizar "nodos virtuales" o "réplicas" para cada nodo físico, distribuyéndolos uniformemente alrededor del anillo.

En el mundo real, Consistent Hashing es fundamental para la construcción de sistemas distribuidos escalables y tolerantes a fallos. Ejemplos notables incluyen: Amazon DynamoDB, que lo utiliza para distribuir datos entre sus nodos de almacenamiento; Apache Cassandra, que lo emplea para la distribución de datos y la replicación; Akamai CDN, que lo usa para enrutar solicitudes de contenido a los servidores de caché más apropiados; y Memcached, donde ayuda a distribuir las claves de caché entre múltiples servidores. También es un componente clave en muchos balanceadores de carga y proxies inversos que necesitan mantener la afinidad de sesión o distribuir peticiones de manera eficiente sin una reconfiguración masiva ante cambios en el pool de servidores.

Para un arquitecto, Consistent Hashing es crucial porque aborda directamente los desafíos de escalabilidad, disponibilidad y eficiencia en sistemas distribuidos. Permite añadir o eliminar nodos (escalar horizontalmente o manejar fallos) con un impacto mínimo en la distribución de datos y la carga de red, evitando "avalanchas" de reubicación de datos. Sin embargo, su implementación requiere considerar el número de nodos virtuales para asegurar una distribución uniforme y mitigar el "hot-spotting". La elección de una función de hash robusta es vital para evitar colisiones y garantizar una distribución aleatoria. Los trade-offs incluyen la complejidad de implementación frente a la simplicidad del hashing modular, y la necesidad de un mecanismo para gestionar la pertenencia de los nodos al anillo (ej. un servicio de descubrimiento como ZooKeeper o Consul). Es una herramienta poderosa para diseñar sistemas que requieren alta disponibilidad y resiliencia frente a cambios dinámicos en la infraestructura.