Los nombres de partición se extraen de las peticiones HTTP utilizando expresiones de petición. Una expresión de petición está formada por dos series: la expresión de coincidencia y la fórmula la clasificación. Juntas, estas series proporcionan un mecanismo para clasificar las peticiones HTTP basándose en expresiones regulares soportadas por Java. La expresión de coincidencia determina cómo se hace coincidir una parte del URL y la serie de consulta. La fórmula de clasificación indica la parte del URL y la serie de consulta que especifica la partición una vez ha coincidido la expresión.
Para determinar si se debe particionar una petición HTTP, el direccionador On Demand (ODR) utiliza el patrón y las clases coincidentes del paquete java.util.regex. Si se encuentra una coincidencia en alguna expresión de coincidencia especificada por la aplicación, la petición tiene una partición asociada. El ODR concatena primero el URL y la serie de consulta para formar una única serie e invoca la compilación de patrones de todas las expresiones de coincidencia especificadas por la aplicación. Cuando se encuentra una coincidencia, la fórmula de clasificación determina cómo se creará el nombre de la partición. Un carácter especial, un signo de dólar, indica la parte de la expresión de coincidencia que se debe utilizar.
Supongamos un caso en el que la expresión de coincidencia sea (user=)(*)$ y la fórmula de clasificación sea $2. $2 toma la parte de la coincidencia correspondiente a la parte (.*), ya que es la segunda parte del patrón de coincidencia. Por ejemplo, si el URL está formado por www.ibm.com/something/user=fred, $1 se corresponderá con user=, mientras que $2 se corresponderá con fred.
Consideremos la expresión de coincidencia (user=)(*)(rodriguez)$. Supongamos que ha llegado una petición con un URL que contiene user=adolforodriguez. Con una fórmula de clasificación $2, el nombre de partición resultante será adolfo. Con una fórmula de clasificación miparticion$2, la petición tendrá el nombre de partición miparticionadolfo. De la misma manera, con una fórmula de clasificación $2$3, el nombre de partición resultante será adolforodriguez.
Tenga en cuenta que las expresiones de coincidencia pueden solaparse. Por ejemplo, si tiene dos expresiones de coincidencia, (user=)(*)$ y (user=)(*)& y recibe un URL con una serie de consulta que contiene user=adolfo&Submit=Enter, las dos expresiones coincidirán. La primera expresión extraerá adolfo&Submit=Enter con una fórmula de clasificación $2, mientras que la segunda extraerá adolfo. Como sólo adolfo es un nombre de partición válido, se elegirá como nombre de partición. Aunque normalmente la expresión regular “más específica” es el destino previsto, la función de particiones HTTP intenta favorecer una expresión sobre la otra. En su lugar, se aplican todas las expresiones hasta que se encuentre un nombre de partición válido o no exista ninguno.
Related concepts
Particiones HTTP