<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>2227-1899</journal-id>
<journal-title><![CDATA[Revista Cubana de Ciencias Informáticas]]></journal-title>
<abbrev-journal-title><![CDATA[Rev cuba cienc informat]]></abbrev-journal-title>
<issn>2227-1899</issn>
<publisher>
<publisher-name><![CDATA[Editorial Ediciones Futuro]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S2227-18992014000400010</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Sistema de distribución del proceso de búsqueda en bancos de datos de huellas dactilares]]></article-title>
<article-title xml:lang="en"><![CDATA[Distribution system of the search process in fingerprints databases]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Hernández Delgado]]></surname>
<given-names><![CDATA[Royli]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Machin Armas]]></surname>
<given-names><![CDATA[Melvis]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad de las Ciencias Informáticas  ]]></institution>
<addr-line><![CDATA[, Boyeros La Habana]]></addr-line>
<country>Cuba</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>12</month>
<year>2014</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>12</month>
<year>2014</year>
</pub-date>
<volume>8</volume>
<numero>4</numero>
<fpage>157</fpage>
<lpage>170</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S2227-18992014000400010&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S2227-18992014000400010&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S2227-18992014000400010&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[La búsqueda en el banco de datos de un sistema de identificación de huellas dactilares o AFIS, influye significativamente en la obtención de tiempos de respuesta adecuados y en la efectividad del sistema. Entre las estrategias de búsqueda están la centralización en un nodo que procese toda la información y la distribución del proceso en nodos que busquen paralelamente. En el Centro de Identificación y Seguridad Digital se desarrolló un AFIS para ser incluido en sus sistemas de control de acceso. Este sistema reporta una baja tolerancia a fallos y tiempos de respuesta ineficientes utilizando un banco de datos de solo 10 000 huellas, debido a la implementación de un proceso de búsqueda centralizado. Este trabajo propone erradicar estos inconvenientes con un sistema que brinde un servicio de distribución, realizando una búsqueda concurrente en varios nodos. Para ello se seleccionó el middleware RabbitMQ con el objetivo de establecer la comunicación entre los distintos nodos que participan en el proceso de búsqueda. La solución aporta una estrategia de monitoreo y control de fallos basada en la redistribución del banco de datos siempre que se detecte la caída de un nodo. Además, los resultados de las pruebas de rendimiento realizadas utilizando un banco de datos de 28 000 huellas dactilares, demostraron que al aumentar los datos a procesar, el modelo centralizado ralentizaba la identificación, mientras que con la utilización del servicio de distribución utilizando solo 3 servidores de búsqueda, los tiempos de respuesta del AFIS se redujeron en más de un 50%.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[The search process in a database system based on fingerprint identification (AFIS), has a significant influence in obtaining appropriate response times and system effectiveness. There are many search strategies such as centralization on a node to process all information and distribution process in parallel nodes participating in the search. In Identification and Security Digital Center an AFIS was developed to be included on their access control systems. This system reports low fault tolerance and time inefficient responses using a database of 10 000 fingerprints, due to the implementation of a centralized search process. To eliminate these problems with a system that provides a delivery service, performing a search on multiple nodes concurrently. RabbitMQ middleware was selected in order to establish communication between the different nodes participating in the search process. The solution provides a strategy for failure monitoring based on the redistribution of the database whenever a falling node is detected. Also, the results of performance testing using a database of 28 000 fingerprints showed that increasing the data processing, the centralized model identification slowed, while the use of the distribution service using only 3 search servers response times AFIS decreased by more than 50%.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[AFIS]]></kwd>
<kwd lng="es"><![CDATA[distribución]]></kwd>
<kwd lng="es"><![CDATA[proceso de búsqueda]]></kwd>
<kwd lng="es"><![CDATA[RabbitMQ]]></kwd>
<kwd lng="en"><![CDATA[AFIS]]></kwd>
<kwd lng="en"><![CDATA[distribution]]></kwd>
<kwd lng="en"><![CDATA[RabbitMQ]]></kwd>
<kwd lng="en"><![CDATA[search process]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><B>ART&Iacute;CULO    ORIGINAL</B></font></p>     <p>&nbsp;</p>     <p><font size="4" face="Verdana, Arial, Helvetica, sans-serif"><strong>Sistema de distribuci&oacute;n del proceso de b&uacute;squeda en bancos de datos de  huellas dactilares</strong></font></p>     <p>&nbsp;</p>     <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong>Distribution  system of the search process in fingerprints databases </strong></font></p>     <p>&nbsp;</p>     <p>&nbsp;</p>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Royli  Hern&aacute;ndez Delgado<strong><sup>1*</sup></strong>, Melvis Machin Armas<strong><sup>1</sup></strong></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><sup>1</sup> Centro de Identificaci&oacute;n y Seguridad Digital. Universidad de las Ciencias Inform&aacute;ticas, Carretera a  San Antonio de los Ba&ntilde;os, km 2 &frac12;, Torrens, Boyeros, La Habana, Cuba. CP.:  19370.</font></p>     <P><font face="Verdana, Arial, Helvetica, sans-serif"><span class="class"><font size="2">*Autor para la correspondencia: </font></span><font size="2"><a href="mailto:royli@uci.cu">royli@uci.cu</a></font></font>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p>&nbsp;</p> <hr>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>RESUMEN</b> </font>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La b&uacute;squeda en el banco de datos de un sistema de identificaci&oacute;n de  huellas dactilares o AFIS, influye significativamente en la obtenci&oacute;n de  tiempos de respuesta adecuados y en la efectividad del sistema. Entre las  estrategias de b&uacute;squeda est&aacute;n la centralizaci&oacute;n en un nodo que procese toda la  informaci&oacute;n y la distribuci&oacute;n del proceso en nodos que busquen paralelamente. En el Centro de Identificaci&oacute;n y Seguridad Digital se desarroll&oacute; un AFIS  para ser incluido en sus sistemas de control de acceso. Este sistema reporta  una baja tolerancia a fallos y tiempos de respuesta ineficientes utilizando un  banco de datos de solo 10 000 huellas, debido a la implementaci&oacute;n de un proceso  de b&uacute;squeda centralizado. Este trabajo propone erradicar estos inconvenientes  con un sistema que brinde un servicio de distribuci&oacute;n, realizando una b&uacute;squeda  concurrente en varios nodos. Para ello se seleccion&oacute; el <em>middleware</em> <em>RabbitMQ</em> con  el objetivo de establecer la comunicaci&oacute;n entre los distintos nodos que  participan en el proceso de b&uacute;squeda. La soluci&oacute;n aporta una estrategia de  monitoreo y control de fallos basada en la redistribuci&oacute;n del banco de datos  siempre que se detecte la ca&iacute;da de un nodo. Adem&aacute;s, los resultados de las  pruebas de rendimiento realizadas utilizando un banco de datos de 28 000  huellas dactilares, demostraron que al aumentar los datos a procesar, el modelo  centralizado ralentizaba la identificaci&oacute;n, mientras que con la utilizaci&oacute;n del  servicio de distribuci&oacute;n utilizando solo 3 servidores de b&uacute;squeda, los tiempos  de respuesta del AFIS se redujeron en m&aacute;s de un 50%. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Palabras clave:</span></b> AFIS, distribuci&oacute;n, proceso de b&uacute;squeda, RabbitMQ.</font></p> <hr>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>ABSTRACT</span></b> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">The search process in a  database system based on fingerprint identification (AFIS), has a significant  influence in obtaining appropriate response times and system effectiveness.  There are many search strategies such as centralization on a node to process all  information and distribution process in parallel nodes participating in the  search. In Identification and Security Digital Center an AFIS was developed to  be included on their access control systems. This system reports low fault  tolerance and time inefficient responses using a database of 10 000  fingerprints, due to the implementation of a centralized search process. To  eliminate these problems with a system that provides a delivery service,  performing a search on multiple nodes concurrently. RabbitMQ middleware was  selected in order to establish communication between the different nodes  participating in the search process. The solution provides a strategy for  failure monitoring based on the redistribution of the database whenever a  falling node is detected. Also, the results of performance testing using a  database of 28 000 fingerprints showed that increasing the data processing, the  centralized model identification slowed, while the use of the distribution  service using only 3 search servers response times AFIS decreased by more than  50%.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Key words: </span></b>AFIS, distribution, RabbitMQ, search process.</font></p> <hr>     <p>&nbsp;</p>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>INTRODUCCI&Oacute;N</b></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La seguridad se ha convertido en un  asunto de actualidad que es motivo de preocupaci&oacute;n en la protecci&oacute;n de los  bienes de cualquier entidad, de manera que la identificaci&oacute;n de los individuos  se convierte en factor fundamental. Para garantizar la identificaci&oacute;n de un  individuo existen diferentes m&eacute;todos. Entre los m&aacute;s convencionales se encuentra el uso de tarjetas de identificaci&oacute;n tales  como el Documento Nacional de Identificaci&oacute;n (DNI) o credenciales especiales  creadas para un ambiente espec&iacute;fico. Sin embargo, con el incremento de la  potencia de c&oacute;mputo en los &uacute;ltimos a&ntilde;os y las ciencias inform&aacute;ticas en general,  el uso de otros m&eacute;todos como la biometr&iacute;a han sido aplicados a sistemas  modernos que permiten identificar un&iacute;vocamente a un individuo (Komarinski, 2005). Entre ellos la aplicaci&oacute;n incremental y desarrollo vertiginoso de los  AFISs han permitido utilizar las huellas dactilares como una de las  caracter&iacute;sticas humanas m&aacute;s fiables utilizadas para la identificaci&oacute;n (Mu&ntilde;oz, 2009)  .    <br>       <br>   Uno de los componentes fundamentales de  los AFISs es el algoritmo de comparaci&oacute;n, encargado de comparar dos huellas y  determinar el grado de similitud entre ellas. Para la identificaci&oacute;n exitosa de  un individuo resulta esencial un proceso de b&uacute;squeda que obtenga la similitud  arrojada por este algoritmo entre la huella capturada por el sistema y cada una  de las huellas almacenadas en el banco de datos. La robustez de este proceso influye significativamente para obtener tiempos  de respuestas adecuados y en la efectividad del sistema, a&uacute;n cuando pudiera  ocurrir un crecimiento futuro del banco de datos que este maneja.     <br>       <br>   Debido al gran tama&ntilde;o que suelen alcanzar  los bancos de datos de los AFIS es necesaria la reducci&oacute;n del espacio de  b&uacute;squeda. Por ejemplo una de las formas m&aacute;s conocidas de lograrlo es mediante  la indexaci&oacute;n (Maltoni, 2009). Por el contrario en muchos casos no se cuenta con algoritmos de  indexaci&oacute;n o con otras t&eacute;cnicas que agilicen el proceso de b&uacute;squeda. Entonces  es necesario recurrir a un acercamiento m&aacute;s rudimentario y simple a trav&eacute;s de  la comparaci&oacute;n de la huella introducida en el sistema con cada una de las  huellas almacenadas en el banco de datos. Aunque resulte impracticable esta opci&oacute;n, la elecci&oacute;n de una adecuada  estrategia de b&uacute;squeda puede influir en la disminuci&oacute;n de los tiempos del  proceso.    <br>       <br> La estrategia de b&uacute;squeda utilizada  est&aacute; estrechamente vinculada a la eficiencia del proceso en general, dentro de  la cual se incluyen factores importantes como la arquitectura del sistema y las  caracter&iacute;sticas del hardware, en cuanto a velocidad de procesamiento de CPU y  memoria RAM se refiere. Aumentar la potencia de hardware de las unidades de  c&oacute;mputo u optar por una arquitectura distribuida con varios nodos de b&uacute;squeda,  podr&iacute;an ser alternativas a tener en cuenta cuando se plantea una estrategia. Sin  embargo, cada una de estas propuestas tiene inconvenientes muy serios. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> La centralizaci&oacute;n del proceso de  b&uacute;squeda en un nodo con altas prestaciones de hardware permite fortalecer la  seguridad y en la pr&aacute;ctica suele ser inevitable (Rob, 2004).  Este nodo procesa toda la informaci&oacute;n de forma lineal afectando directamente al  tiempo de b&uacute;squeda, y su fallo podr&iacute;a provocar un colapso del sistema. Por otra  parte, utilizar un modelo distribuido aportar&iacute;a mayor flexibilidad en cuanto a  la cantidad de unidades participantes en la b&uacute;squeda, de modo que el proceso  ocurrir&iacute;a concurrentemente en todos los nodos disminuyendo te&oacute;ricamente el  tiempo de b&uacute;squeda. El fallo de un nodo no determina el fallo de la operaci&oacute;n  en general, ya que los dem&aacute;s podr&iacute;a completar el proceso de b&uacute;squeda. Sin  embargo, este modelo es muy dif&iacute;cil de implementar (Rivero, 2004).     <br>       ]]></body>
<body><![CDATA[<br>   En el departamento de Biometr&iacute;a del Centro  de Identificaci&oacute;n y Seguridad Digital (CISED) de la Universidad se las Ciencias  Inform&aacute;ticas (UCI) desarroll&oacute; un AFIS cuya estrategia de b&uacute;squeda de huellas  dactilares en el banco de datos se basa en un modelo centralizado. Su tiempo de  respuesta es de aproximadamente un segundo en identificar a un individuo  utilizando un banco de datos de 10 000 huellas. Este tiempo de respuesta resulta ineficiente teniendo en cuenta que el  n&uacute;mero de huellas almacenadas no es significativo comparado con otros bancos de  datos cuyas cifras se mueven en el orden de los millones. El problema se  agudiza si se tiene en cuenta que el aumento futuro de huellas registradas  influye directamente en el incremento de este tiempo, demorando la  identificaci&oacute;n, y por consiguiente, la p&eacute;rdida de calidad del AFIS como  producto.    <br>       <br>   Se podr&iacute;a pensar en la reutilizaci&oacute;n de  componentes destinados al proceso de b&uacute;squeda en los AFIS m&aacute;s conocidos y con  mejores resultados. Sin embargo, estos sistemas han sido desarrollados bajo  licencias privativas y de ellos s&oacute;lo se conoce la informaci&oacute;n referente a sus  principios de funcionamiento y estrategias de b&uacute;squeda.     <br>       <br>   Este trabajo se centra  en el desarrollo de un sistema que permita distribuir el proceso de b&uacute;squeda de  huellas dactilares en el banco de datos de un AFIS. Su objetivo es obtener  mejores tiempos de respuesta en el proceso de identificaci&oacute;n, teniendo en  cuenta la escalabilidad del sistema y el crecimiento futuro del banco de datos. </font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">MATERIALES Y M&Eacute;TODOS </font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la actualidad los AFISs y los  sistemas de informaci&oacute;n en general que necesitan manejar grandes cantidades de  datos en tiempos cada vez menores, as&iacute; como compartir recursos para llevar a  cabo tareas cada vez m&aacute;s complejas, utilizan el procesamiento distribuido. Este  tipo de enfoque se refiere a varias computadoras aut&oacute;nomas conectadas mediante  una red de comunicaciones y equipadas con programas que les permitan coordinar sus  actividades y compartir recursos (Coulouris, 2001). Por ejemplo <em>ExpressID AFIS</em> de la empresa francesa <em>Innovatrics</em> es un sistema distribuido  que presenta una arquitectura escalable, permitiendo a los componentes del  servidor de comparaci&oacute;n ser instalados en varios ordenadores para distribuir la  carga de trabajo e incrementar la velocidad de comparaci&oacute;n, siendo capaz de  realizar b&uacute;squedas en bancos de datos de millones de huellas dactilares (Innovatrics, 2013).     <br>       <br>   Cuba tambi&eacute;n ha adoptado este concepto  de distribuci&oacute;n en la soluci&oacute;n <em>BIOMESYS  AFIS</em> comercializada por <em>DATYS, Tecnolog&iacute;as y Sistemas</em>. Se basa principalmente en un cl&uacute;ster de b&uacute;squeda y comparaci&oacute;n. Este cl&uacute;ster tiene una infraestructura en la que se incluyen un servidor que  distribuye la b&uacute;squeda (master), un servidor de contingencia (spare) y n  servidores de comparaci&oacute;n. La soluci&oacute;n a las solicitudes de b&uacute;squeda se realiza  de forma paralela &iacute;ntegramente en memoria RAM en cada servidor de comparaci&oacute;n,  en los cuales est&aacute; segmentado el banco de datos.    ]]></body>
<body><![CDATA[<br>   El aporte de la presente soluci&oacute;n se  basa en realizar esta distribuci&oacute;n pero utilizando para ello las  potencialidades de los middlewares distribuidores de mensajes. Entre los  principales softwares de este tipo en el mercado destacan RabbitMQ, ApacheQpid  y OpenAMQ. Son todos proyectos de c&oacute;digo libre que implementan el protocolo AMQP y cuyos resultados son satisfactorios para lograr un entorno  distribuido. OpenAMQ posee una velocidad de 600 mil msj/seg en un  corredor sostenido por un d&iacute;a de trabajo completo y 300 ms de latencia, cifras adecuadas  para la presente soluci&oacute;n. Sin embargo, OpenAMQ tiene el inconveniente de no  ser completamente fiel al est&aacute;ndar, pues deshecha parte de sus funcionalidades.    <br>       <br>   ApacheQpid junto con RabbitMQ son los &uacute;nicos  servidores que implementan en su totalidad el protocolo. Ambos son l&iacute;deres en  su aplicaci&oacute;n y han sido utilizados en proyectos de gran envergadura como OpenStack  (Bryant, 2012) y el corredor Qpid C++  de Red Hat MRG (Foundation) con excelentes &iacute;ndices  de distribuci&oacute;n. Sin embargo, al emparejarlos se determin&oacute; que las  potencialidades de OTP Erlang para la ejecuci&oacute;n distribuida y conmutaci&oacute;n ante  errores presentes en RabbitMQ, aporta un mayor rendimiento al sistema a  desarrollar. Otra de las razones por las que <em>RabbitMQ</em> se present&oacute; como mejor candidato es la posibilidad que  brinda de crear cl&uacute;steres, caracter&iacute;stica que permite alcanzar una alta disponibilidad en  las comunicaciones.    <br>       <br> En cuanto a la administraci&oacute;n de los  distintos elementos del corredor, con <em>RabbitMQ</em> es mucho m&aacute;s sencilla que con <em>OpenAMQ</em> y <em>ApacheQpid</em>, pues cuenta con una interfaz web para el control de los  mismos.  </font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">RESULTADOS Y DISCUSI&Oacute;N </font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La soluci&oacute;n de  esta investigaci&oacute;n es un sistema que permite involucrar varios nodos a la  b&uacute;squeda subdividi&eacute;ndola, de forma tal que se realiza m&aacute;s r&aacute;pidamente  considerando el futuro incremento del banco de datos. El enfoque de la  distribuci&oacute;n aporta adem&aacute;s de rapidez una mayor tolerancia ante los fallos (Coulouris, 2001), ya que la ca&iacute;da de  un nodo de b&uacute;squeda no supone el colapso del AFIS, sino solo una nueva  distribuci&oacute;n entre los nodos disponibles en el momento. El sistema est&aacute;  conformado por dos m&oacute;dulos para lograr la distribuci&oacute;n del proceso de b&uacute;squeda.    <br>       <br>   En el primer  m&oacute;dulo dedicado a la distribuci&oacute;n, se chequea peri&oacute;dicamente la disponibilidad  de los distintos servidores de b&uacute;squeda. Es responsable de distribuir el banco  de datos entre los servidores de b&uacute;squeda que han sido seleccionados para  trabajar, balanceando la carga de forma tal que se maximice la utilizaci&oacute;n de  los recursos y se obtenga el mejor desempe&ntilde;o del sistema. Tambi&eacute;n atiende las solicitudes  de identificaci&oacute;n, delegando la b&uacute;squeda en los servidores destinados a esta  tarea, para posteriormente procesar sus respuestas. Monitorea el estado de los  servidores de b&uacute;squeda, as&iacute; como genera <em>logs</em> sobre las solicitudes atendidas.    ]]></body>
<body><![CDATA[<br>       <br>   El segundo m&oacute;dulo lo  constituyen los servidores de b&uacute;squeda, los cuales buscan en su porci&oacute;n del  banco de datos el individuo al que corresponde la huella dactilar cuya  comparaci&oacute;n se requiere y responden en consecuencia al resultado obtenido.     <br>   El dise&ntilde;o del sistema est&aacute; orientado a la extensibilidad y adaptabilidad (Cointe, 1999) con el objetivo de  que pueda ser utilizado no solo por sistemas basados en el reconocimiento de  huellas dactilares, sino tambi&eacute;n por otros sistemas biom&eacute;tricos. Para ello se  definieron conceptos que propician dentro del negocio la abstracci&oacute;n y la  extensibilidad, como por ejemplo: <em>Tipo de  servidor de b&uacute;squeda</em> y <em>banco de datos</em>,  debido a que por cada sistema biom&eacute;trico existir&aacute; un tipo de servidor de  b&uacute;squeda y un banco de datos al que consultar. La l&oacute;gica de los servidores de  b&uacute;squeda es definida en dependencia de su tipo, es decir, el sistema biom&eacute;trico  que en el futuro utilice el servicio de distribuci&oacute;n deber&aacute; implementar las  peculiaridades de sus servidores de b&uacute;squeda, como est&aacute; soluci&oacute;n est&aacute; dirigida  a solucionar los inconvenientes detectados en el AFIS del CISED, el sistema  desarrollado estructura, hasta el momento, el comportamiento de los servidores  de b&uacute;squeda del mismo.     <br>       <br>     <strong>Arquitectura</strong>    <br>       <br>   Para el desarrollo  del sistema se utiliz&oacute; un estilo arquitect&oacute;nico basado en la configuraci&oacute;n cliente-servidor.  En consecuencia con este modelo el sistema soporta el procesamiento  distribuido, permitiendo la implementaci&oacute;n de mecanismos eficientes de  tolerancia a fallos (Kendall, 2005). La arquitectura propuesta (Ver <a href="#f01">figura 1</a>)  garantiza en general expandir al AFIS para mejorar su rendimiento en forma  din&aacute;mica, aumentando el tama&ntilde;o del banco de datos y su carga de trabajo con el  m&iacute;nimo aumento de componentes, minimizando as&iacute; el costo de las expansiones a  largo plazo.    <br>       <br>   Para  la implementaci&oacute;n de la arquitectura cliente-servidor se utiliz&oacute; como patr&oacute;n  arquitect&oacute;nico n-capas, espec&iacute;ficamente 4 capas:</font></p> <ul>   <font face="Verdana, Arial, Helvetica, sans-serif"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">  </font>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Capa de Dominio: Contiene la interfaz de administraci&oacute;n,  as&iacute; como toda la l&oacute;gica del sistema, desde la atenci&oacute;n de las solicitudes de distribuci&oacute;n  e identificaci&oacute;n hasta la gesti&oacute;n de las entidades del sistema.</font></li>       ]]></body>
<body><![CDATA[<li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Capa de Procesamiento: Contiene la l&oacute;gica  de los servidores de b&uacute;squeda, que incluye consultas al banco de datos biom&eacute;trico  y la b&uacute;squeda de la huella dactilar de un individuo que se desee identificar.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Capa de Persistencia de datos: Est&aacute;  conformada por el banco de datos biom&eacute;trico al que los servidores de b&uacute;squeda consultar&aacute;n  siempre que se requiera distribuirlo, as&iacute; como por el banco de datos del  sistema que almacenar&aacute; toda la informaci&oacute;n persistente.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Capa de Comunicaci&oacute;n: Contiene un servidor  distribuidor de mensajes encargado de distribuir mensajes de forma segura y  eficiente a trav&eacute;s del <em>middleware</em> <em>RabbitMQ</em>. Es la capa intermediaria en la  comunicaci&oacute;n entre: Publicador de solicitudes y distribuidor, Distribuidor y  servidores de b&uacute;squeda.</font></li>     </ul>     <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><a name="f01"></a><img src="/img/revistas/rcci/v8n4/f0110414.jpg" width="395" height="282"></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Entre las restricciones  de la arquitectura se encuentra que el crecimiento del banco de datos est&aacute;  limitado por las condiciones de almacenamiento existentes en los distintos servidores  de b&uacute;squeda y por la cantidad de solicitudes que se requiera alcanzar. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El balanceo de carga juega un papel muy  importante en el sistema desarrollado, ya que es muy dif&iacute;cil predecir el tama&ntilde;o  de la porci&oacute;n del banco de datos que debe asign&aacute;rsele a cada servidor de  b&uacute;squeda, de modo que la carga computacional se mantenga uniforme y se consiga  la m&aacute;xima velocidad de ejecuci&oacute;n posible (Dormido, 2003). El m&eacute;todo utilizado para realizar la asignaci&oacute;n  tiene en cuenta que tan apto es un servidor para ejecutar la b&uacute;squeda, tomando  en consideraci&oacute;n dos propiedades fundamentales:</font></p> <ul type="disc">       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Memoria       RAM disponible: Una vez asignada la porci&oacute;n del banco de datos cada       servidor de b&uacute;squeda debe cargarla en su memoria RAM, por lo que debe       tenerse la precauci&oacute;n de no colapsar el servidor con una asignaci&oacute;n que no       est&eacute; en correspondencia con su disponibilidad. Dado el caso de que un servidor no pueda       asumir la porci&oacute;n de datos asignada, restricci&oacute;n de la arquitectura antes       mencionada, el distribuidor manejar&aacute; la excepci&oacute;n informando al usuario       sobre las caracter&iacute;sticas del evento ocurrido. Es responsabilidad del       usuario, teniendo en cuenta la informaci&oacute;n proporcionada, tomar las       acciones convenientes para poder realizar la distribuci&oacute;n exitosa del       banco de datos. </font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Velocidad de procesamiento de CPU: Cada servidor       buscar&aacute; en la porci&oacute;n del banco de datos que se le haya asignado cuando se       le solicite realizar una identificaci&oacute;n, por lo que la velocidad del CPU       influye en qu&eacute; tan r&aacute;pido se ejecute este proceso.</font></li>     </ul>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La funci&oacute;n de aptitud est&aacute; definida como la rapidez  asociada a propiedades antes mencionadas (Guti&eacute;rrez, 2004). El c&aacute;lculo se basa en la sumatoria  entre estas propiedades, donde cada una de ellas est&aacute; multiplicada por un peso  que depender&aacute; de su importancia para el desempe&ntilde;o del sistema: </font><font face="Verdana, Arial, Helvetica, sans-serif"><img src="/img/revistas/rcci/v8n4/fo0110414.jpg" width="223" height="21"></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Donde: </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">dRAM<sub>i</sub>: Memoria RAM  disponible del servidor de b&uacute;squeda <em>i</em>.    <br> vCPU<sub>i</sub>: Velocidad de procesamiento del CPU del servidor de b&uacute;squeda <em>i</em>.    <br> a&nbsp;y b: Pesos asignados  a la memoria RAM disponible y a la velocidad de procesamiento de CPU respectivamente  en una escala de [0; 1] (a = 0,6 y b = 0,4).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para realizar el c&aacute;lculo de la funci&oacute;n de aptitud es  necesario llevar las variables a una escala com&uacute;n, ya que si se trabaja con los  valores originales la funci&oacute;n de aptitud se volver&iacute;a muy variada para cada  servidor de b&uacute;squeda, debido a que la variable con mayor escala definir&iacute;a por completo  la funci&oacute;n haciendo insignificante el valor total de la otra variable. En este caso  la memoria RAM es expresada en MB y la velocidad de CPU en MHz, garantizando de  esta forma que ambas variables se encuentren en la misma escala.</font></p>     <div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una vez obtenida la funci&oacute;n de  aptitud se calcula la capacidad de carga de cada servidor de b&uacute;squeda. Consiste  en el porciento que representa la funci&oacute;n de aptitud del servidor <em>i</em> con respecto a la sumatoria de los valores de aptitud de todos los  servidores activos:</font>   <font face="Verdana, Arial, Helvetica, sans-serif">    <br>       <br>   <img src="/img/revistas/rcci/v8n4/fo0210414.jpg" width="213" height="32"></font></div>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Donde:    ]]></body>
<body><![CDATA[<br>       <br> CC<sub>i</sub>: Capacidad de carga del servidor de b&uacute;squeda <em>i</em>.    <br> SFA: Sumatoria de los  valores de aptitud de aptitud de todos los servidores activos. </font></p>     <p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Con los porcentajes de carga calculados ya se est&aacute; en condiciones de determinar  el tama&ntilde;o de la porci&oacute;n del banco de datos que puede asign&aacute;rsele a cada  servidor de b&uacute;squeda, estableciendo una correspondencia entre el porcentaje de  carga y el tama&ntilde;o del banco de datos:</font> <font face="Verdana, Arial, Helvetica, sans-serif">    <br>       <br>   <img src="/img/revistas/rcci/v8n4/fo0310414.jpg" width="103" height="28"></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Donde:    <br>       <br>   PBD<sub>i</sub>: Porci&oacute;n del banco  de datos que debe asign&aacute;rsele al servidor de b&uacute;squeda <em>i</em>.    <br> BD: Tama&ntilde;o del banco  de datos.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">PBD<sub>i</sub>:</font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Representa la cantidad m&aacute;xima de usuarios que puede  ser asignada al servidor <em>i</em> para la b&uacute;squeda.  Si se le asigna un valor mayor que este se estar&iacute;a sobrecargando al servidor,  mientras que si se le asigna un valor menor se desaprovecha su capacidad.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Tratamiento de  fallos</strong>    <br>       <br>   Para tratar un fallo primeramente es  necesario tener conocimiento de qu&eacute; est&aacute; ocurriendo un evento adverso. Para ello  el sistema cuenta con varias v&iacute;as para detectar que un servidor de b&uacute;squeda ha  colapsado y para informar cu&aacute;ndo una funcionalidad no ha podido ser ejecutada.    <br>   La primera de ellas est&aacute; asociada a la  detecci&oacute;n de los servidores de b&uacute;squeda que realizar&aacute; el distribuidor frecuentemente  en intervalos de tiempo. Esta inspecci&oacute;n permitir&aacute; no solo conocer cu&aacute;ndo ha  dejado de ofrecer servicios un servidor, sino tambi&eacute;n, detectar nuevos servidores  de b&uacute;squeda.    <br>       <br>   Por el contrario el caso m&aacute;s cr&iacute;tico que puede  presentarse es la ca&iacute;da de un servidor durante el proceso de b&uacute;squeda. Como  cada servidor tiene cargada en su memoria RAM la porci&oacute;n del banco de datos que  se la ha asignado, un fallo significa que existe un rango de datos en el cual  no se realiza la b&uacute;squeda y que en el peor de los casos contiene el individuo a  identificar. Cuando esta situaci&oacute;n se presenta, otro servidor, una vez que ha  terminado su b&uacute;squeda, asume el trabajo que no se ha realizado y env&iacute;a una  notificaci&oacute;n al distribuidor informando el nombre en la red del servidor que ha  interrumpido sus servicios para que posteriormente se realice una  redistribuci&oacute;n del banco de datos.    <br>       <br>     <strong>Pruebas</strong>     <br>       ]]></body>
<body><![CDATA[<br> Debido a la necesidad de medir el  rendimiento del sistema con un banco de datos de tama&ntilde;o representativo para la validaci&oacute;n  de los resultados de la investigaci&oacute;n, se utiliz&oacute; un banco de datos con 14 mil  usuarios para un total de 28 mil huellas dactilares almacenadas, pues por cada  usuario se tomaron las impresiones dactilares de sus dos pulgares. En la <a href="#f02">figura  2</a> se pueden observar los resultados obtenidos al identificar a individuos en  distintos intervalos del banco de datos. Para ello el sistema de distribuci&oacute;n  emple&oacute; 3 y 6 servidores de b&uacute;squeda respectivamente.</font></p>     <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><a name="f02"></a><img src="/img/revistas/rcci/v8n4/f0210414.jpg" width="507" height="273"></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Al aumentar los datos a procesar (aumento  del n&uacute;mero de iteraciones) el modelo centralizado ralentiza la identificaci&oacute;n  con un incremento promedio de 117,0449 ms por cada 2 000 huellas a comparar, o  sea, 1 000 individuos a analizar. Por el contrario, con el sistema de distribuci&oacute;n  los tiempos de respuesta del AFIS se reducen en m&aacute;s de un 50 % con solo 3  servidores de b&uacute;squeda. N&oacute;tese que al aumentar el n&uacute;mero de servidores de  b&uacute;squeda disminuyeron a&uacute;n m&aacute;s los tiempos de respuesta. Debe tenerse en consideraci&oacute;n que los tiempos de  respuesta del AFIS con el sistema de distribuci&oacute;n est&aacute;n afectados por la  latencia de la infraestructura de red sobre la que se ejecute el sistema. Es  por ello que en la Figura 2 se perciben incrementos y decrementos bruscos en  los tiempos de respuesta, en lugar de una funci&oacute;n creciente.     <br>       <br> Aunque los resultados  anteriores demuestran la efectividad de la distribuci&oacute;n para optimizar el  proceso de b&uacute;squeda, a continuaci&oacute;n se presentar&aacute;n los tiempos de b&uacute;squeda  locales obviando la latencia de la red, o sea, el tiempo que demora el servidor  de b&uacute;squeda donde se hace la identificaci&oacute;n positiva en culminar el proceso,  obviando el tiempo que transcurre en la notificaci&oacute;n del resultado a la capa  del AFIS encargada de procesarlo (Ver <a href="#f03">figura 3</a>). El promedio de tiempo perdido por  la latencia de la infraestructura de red (Mesa, 2009)  donde se realizaron las pruebas fue de aproximadamente 254,054 ms. Sin embargo,  como se ha podido apreciar, este tiempo de demora no afect&oacute; en gran medida los  tiempos de respuesta reportados por el AFIS con el sistema de distribuci&oacute;n.</font></p>     <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><a name="f03"></a><img src="/img/revistas/rcci/v8n4/f0310414.jpg" alt="f03" width="554" height="294"></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Si se analizan las  comparaciones por segundo que realiza el sistema de distribuci&oacute;n, con solo seis  servidores de b&uacute;squeda este es capaz de comparar 23 133,2 huellas. Aunque no  supera los resultados de sistemas como el <em>ExpressID  AFIS</em> y el <em>BIOMESYS AFIS</em> con 85  millones y m&aacute;s de un mill&oacute;n de comparaciones por segundo respectivamente, constituye  un paso de avance para el desarrollo de sistemas biom&eacute;tricos en Cuba. Debe  tenerse en cuenta que la cifra alcanzada no resulta modesta si se considera que  solo estuvieron involucrados seis servidores de b&uacute;squeda <em>Dual Core</em> con 1GB de memoria RAM, caracter&iacute;sticas inferiores  comparadas con los cl&uacute;steres de b&uacute;squeda de los sistemas antes mencionados.     <br>   Otras pruebas realizadas  fueron las pruebas de estr&eacute;s para validar el mecanismo de tolerancia a fallos implementado.  Para ello se simul&oacute; un ambiente de despliegue inestable, interrumpiendo el  funcionamiento de uno de los servidores de b&uacute;squeda intencionalmente durante el  procesamiento de las solicitudes. Los resultados obtenidos demostraron que  cuando colapsa un servidor de b&uacute;squeda durante el proceso de identificaci&oacute;n, aunque  la operaci&oacute;n no se detiene, los tiempos de respuesta tienden a aumentar en la  medida en que sea mayor la porci&oacute;n de datos cargada en cada servidor de  b&uacute;squeda.    <br>       <br> El tiempo de respuesta  cuando est&aacute; fallando un servidor de b&uacute;squeda (Ver <a href="/img/revistas/rcci/v8n4/f0410414.jpg" target="_blank">figura 4</a>) se duplica en  comparaci&oacute;n con el funcionamiento del sistema en condiciones normales. Sin  embargo, la estrategia de recuperaci&oacute;n ante fallos utilizada garantiza una  respuesta ante este evento que incluye seguir procesando nuevas solicitudes de  identificaci&oacute;n. Como puede observarse en la gr&aacute;fica el tiempo de recuperaci&oacute;n  promedio es de 795.42 ms, pero vale destacar que puede reducirse si se  adicionan m&aacute;s servidores de b&uacute;squeda.</font></p>     ]]></body>
<body><![CDATA[<p align="center">&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>CONCLUSIONES</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Durante el transcurso de esta  investigaci&oacute;n se comprob&oacute; que el sistema desarrollado para la distribuci&oacute;n del  proceso de b&uacute;squeda de huellas dactilares, cobra especial importancia por el  aporte econ&oacute;mico que supone la inclusi&oacute;n de un AFIS eficiente en las soluciones  inform&aacute;ticas del CISED, y particularmente su utilizaci&oacute;n en los sistemas de  control de acceso dentro de la Universidad y el pa&iacute;s. Algunas de las  conclusiones obtenidas luego de terminada la primera versi&oacute;n del sistema para  la distribuci&oacute;n de la b&uacute;squeda son:    <br>       <br>   1. La definici&oacute;n de la arquitectura  cliente-servidor y el uso del patr&oacute;n n-capas permitieron que el sistema soporte  el procesamiento distribuido, previendo el crecimiento modular y la alta  escalabilidad, as&iacute; como la implementaci&oacute;n de mecanismos eficientes de  tolerancia a fallos.    <br>       <br>   2. El componente encargado de la  distribuci&oacute;n que forma parte del sistema final, tiene un alto nivel de  independencia, que puede ser usado por otros sistemas biom&eacute;tricos que solo  tendr&iacute;an que implementar la arquitectura especifica de sus servidores de  b&uacute;squeda.     <br>       <br> 3. Las pruebas de rendimiento  permitieron validar la hip&oacute;tesis planteada, ya que el AFIS del CISED haciendo  uso del sistema de distribuci&oacute;n, reporta mejores tiempos de respuesta y garantiza  que cuando un servidor colapse durante el proceso de identificaci&oacute;n el sistema  contin&uacute;e funcionando.</font></p>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>REFERENCIAS    BIBLIOGR&Aacute;FICAS</B></font>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">BOUYSSOUNOUSE, B.   2005. Telecomunication Software Infracstructure. Embedded Systems Design: The   ARTIST Roadmap for Research and Development. s.l.: Springer, 2005, pp.   131-132.    </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">BRYANT, R. 2012. [Online] 2012. [Cited: 18 enero   2013.] http://fedoraproject.org/wiki/Features/OpenStack_using_Qpid.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">COINTE, P. 1999. Meta-Level Architectures and   Reflection: Second International Conference, Reflection'99 Saint-Malo, France,   July 19-21, 1999 Proceedings. s.l.: Springer, 1999.    </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">COULOURIS, G. 2001. Sistemas Distribuidos. Madrid:   Addison Wesley, 2001.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">DORMIDO, S. 2003.   Procesamiento paralelo: teor&iacute;a y programaci&oacute;n. Madrid: s.n., 2003.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">FOUNDATION, APACHE SOFTWARE. 2012. ApacheQpid.   [Online] [Cited: 18 enero 2012.] https://cwiki.apache.org/qpid/faq.html.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">GUTI&Eacute;RREZ, G, R.   2004. Estrategias para el balanceo din&aacute;mico de la carga en sistemas   distribuidos.     2004.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">INNOVATRICS. 2013. ExpressID AFIS. [Online] 2013.   [Cited: 16 enero 2013.] http://www.innovatrics.com/products/expressid-afis.    </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">KENDALL, K. E. Y KENDALL, J. E. 2005. Tecnolog&iacute;a Cliente Servidor. An&aacute;lisis y dise&ntilde;o. s.l.:   Pearson Educaci&oacute;n, 2005, pp. 622-624.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">KOMARINSKI, P. 2005. History of Automated   Identification Systems. Automated Fingerprint Identification System (AFIS). s.l.:   Elsevier Academic Press,     2005.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">MALTONI, D Y   MAIO, D. 2009. Handbook of fingerprint recognition. Second Edition. Londres: Springer,     2009.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">MESA, A. 2009.   Variables que afectan el desempe&ntilde;o de los cluster. M&eacute;todo para el manejo del   balanceo de carga en sistemas de c&oacute;mputo distribuido de alto desempe&ntilde;o. Colombia:   s.n., 2009, p. 9.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">MU&Ntilde;OZ, A L. 2009.   Tesis Doctoral: Contribuci&oacute;n al reconocimiento de huellas dactilares mediante   t&eacute;cnicas de correlaci&oacute;n y arquitecturas hardware para el aumento de   prestaciones. Madrid: Universidad Carlos III de Madrid. Departamento de   Tecnolog&iacute;a Electr&oacute;nica,     2009.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">RABBITMQ. RabbitMQ. [Online] RabbitMQ. [Cited: 19   Enero 2013.] http://www.rabbitmq.com/features.html..</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">RIVERO, E C,   GUARDIA, CARLOS R, REIG, J C. HERN&Aacute;NDEZ. 2004. Bases de datos distribuidas.   Bases de datos relacionales: dise&ntilde;o f&iacute;sico. s.l.: Univ Pontifica Comillas,   2004.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ROB, P Y CORONEL,   C. 2004. Sistemas de bases de datos: dise&ntilde;o, implementaci&oacute;n y administraci&oacute;n.   s.l.&nbsp;: Thomson,     2004.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ROEBUCK, K. 2011. Advanced Message Queuing Protocol   (Amqp): High-Impact Strategies - What You Need to Know: Definitions,   Adoptions, Impact, Benefits, Maturity, Vendors.     2011.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">VIDELA, A Y WILLIAMS, J.W. 2012. RabbitMQ in Action   Distributed Messaging For Enyone. s.l.: Manning Publications Company,     2012.</font></p>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Recibido: 21/03/2014       <br> Aceptado: 8/10/2014  </font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[BOUYSSOUNOUSE]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
</person-group>
<source><![CDATA[Telecomunication Software Infracstructure. Embedded Systems Design: ARTIST Roadmap for Research and Development.]]></source>
<year>2005</year>
<page-range>131-132</page-range><publisher-name><![CDATA[Springer]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[BRYANT]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[OpenStack_using_Qpid]]></source>
<year>2012</year>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[COINTE]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
</person-group>
<source><![CDATA[Meta-Level Architectures and Reflection: Second International Conference]]></source>
<year>1999</year>
<publisher-name><![CDATA[Proceedings. s.l.: Springer]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[COULOURIS]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<source><![CDATA[Sistemas Distribuidos.]]></source>
<year>2001</year>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[DORMIDO]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[Procesamiento paralelo: teoría y programación]]></source>
<year>2003</year>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="">
<collab>APACHE SOFTWARE</collab>
<source><![CDATA[ApacheQpid.]]></source>
<year>2012</year>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[GUTIÉRREZ]]></surname>
<given-names><![CDATA[G, R]]></given-names>
</name>
</person-group>
<source><![CDATA[Estrategias para el balanceo dinámico de la carga en sistemas distribuidos]]></source>
<year>2004</year>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="">
<collab>INNOVATRICS</collab>
<source><![CDATA[ExpressID AFIS]]></source>
<year>2013</year>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KENDALL]]></surname>
<given-names><![CDATA[K. E]]></given-names>
</name>
<name>
<surname><![CDATA[KENDALL]]></surname>
<given-names><![CDATA[J. E]]></given-names>
</name>
</person-group>
<source><![CDATA[Tecnología Cliente Servidor. Análisis y diseño]]></source>
<year>2005</year>
<page-range>622-624</page-range><publisher-name><![CDATA[Pearson Educación]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KOMARINSKI]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
</person-group>
<source><![CDATA[History of Automated Identification Systems. Automated Fingerprint Identification System (AFIS)]]></source>
<year>2005</year>
<publisher-name><![CDATA[Elsevier Academic Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[MALTONI]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[MAIO]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<source><![CDATA[Handbook of fingerprint recognition.]]></source>
<year>2009</year>
<publisher-name><![CDATA[Springer]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[MESA]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Variables que afectan el desempeño de los cluster. Método para el manejo del balanceo de carga en sistemas de cómputo distribuido de alto desempeño.]]></source>
<year>2009</year>
<page-range>9</page-range></nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[MUÑOZ]]></surname>
<given-names><![CDATA[A L]]></given-names>
</name>
</person-group>
<source><![CDATA[Tesis Doctoral: Contribución al reconocimiento de huellas dactilares mediante técnicas de correlación y arquitecturas hardware para el aumento de prestaciones.]]></source>
<year>2009</year>
<publisher-name><![CDATA[Universidad Carlos III de Madrid. Departamento de Tecnología Electrónica]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="">
<collab>RABBITMQ</collab>
<source><![CDATA[RabbitMQ]]></source>
<year>2013</year>
</nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[RIVERO]]></surname>
<given-names><![CDATA[E C]]></given-names>
</name>
<name>
<surname><![CDATA[GUARDIA]]></surname>
<given-names><![CDATA[CARLOS R]]></given-names>
</name>
<name>
<surname><![CDATA[REIG]]></surname>
<given-names><![CDATA[J C]]></given-names>
</name>
</person-group>
<source><![CDATA[Bases de datos distribuidas. Bases de datos relacionales: diseño físico]]></source>
<year>2004</year>
<publisher-name><![CDATA[Univ Pontifica Comillas]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B16">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[ROB]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[CORONEL]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Sistemas de bases de datos: diseño, implementación y administración.]]></source>
<year>2004</year>
<publisher-name><![CDATA[Thomson]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B17">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[ROEBUCK]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
</person-group>
<source><![CDATA[Advanced Message Queuing Protocol (Amqp): High-Impact Strategies - What You Need to Know: Definitions, Adoptions, Impact, Benefits, Maturity, Vendors]]></source>
<year>2011</year>
</nlm-citation>
</ref>
<ref id="B18">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[VIDELA]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[WILLIAMS]]></surname>
<given-names><![CDATA[J.W]]></given-names>
</name>
</person-group>
<source><![CDATA[RabbitMQ in Action Distributed Messaging For Enyone]]></source>
<year>2012</year>
<publisher-name><![CDATA[Manning Publications Company]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
