Agregar dinámicamente páginas a un contenedor en tiempo de ejecución Zend_Navigation

Por , jueves 07 de enero 2010 22:50

En una continuación de mi último post sobre Zend_Navigation y dirigir las peticiones a sitemap.xml al controlador personalizada / acción , este post es sobre dymnamically añadir páginas a un contenedor Zend_Navigation en el tiempo de ejecución / script.

Su muy bien especificar las páginas en un ini o xml archivo, pero en algún momento va a haber cambio de las páginas del sitio que desea, como parte de un menú, mapa del sitio, o para ser incluido en su ruta de navegación. Por lo tanto lo que tenemos que hacer es añadir páginas a nuestro contenedor Zend_Navigation en tiempo de ejecución. Ejemplos de esto sería en la adición de noticias, blogs, o comentarios de página, etc

Continuar leyendo 'dinámicamente agregar páginas a los contenedores Zend_Navigation en tiempo de ejecución' »

Dirigir las peticiones a sitemap.xml al controlador personalizada / acción

Por , miércoles 6 de enero de 2010 12:13 am

Con el fin de las solicitudes directas de / sitemap.xml a un controlador de la costumbre y la acción en su Zend Framework aplicación sólo tiene que añadir lo siguiente en su fichero de configuración application.ini o alternativa (por ejemplo, yo uso navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = índice de
 resources.router.routes.sitemap.defaults.action = mapa del sitio

Ejemplo código para la salida puede ser visto por la creación de una acción en el controlador adecuado (por ejemplo mi mapa se encuentra en el controlador de índice, la acción del sitio):

 < php
 clase IndexController
     se extiende Zend_Controller_Action
 {
     / **
      * Representa un mapa del sitio sobre la base de la configuración Zend_Navigation
      * /
     sitemapAction función pública ()
     {
    	 echo $ this-> view-> de navegación () -> Mapa del sitio ();
    	 $ This-> view-> layout () - disableLayout> ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps de forma rápida y sencilla se generará utilizando Zend_Navigation , un gran tutorial rápido (y, en general muy útil para Zend Framework tutoriales) es yesos Zend - dinámica de la creación de un menú de un mapa de sitio y el pan rallado .

Zend Framework por módulo la configuración de base

Por , viernes 01 de enero 2010 22:40

He creado una respuesta a este cargo que requiere menos configuración, consulte Diseño basado en el módulo - Zend Framework .

Cuando se utiliza el Zend Framework con los módulos, es obvio que si se está ejecutando varias (sub-) los sitios de la misma aplicación que no necesariamente quieren las mismas secuencias de comandos de diseño para cada parte. Me decidí a ir con la estructura siguiente sitio:

  / Aplicación
     O los controladores
         ...
     O los modelos
     / Modules
         / Default
             O los controladores
             / Diseño
                 / Scripts
             O puntos de vista
                 / Scripts
         / AnotherModule
             ...
     / Scripts

El problema fue la creación de los guiones de diseño en función de cada módulo. La respuesta llegó mediante el uso de un ayudante de acción. La creación de los diseños en función de cada módulo consta de tres pasos:

  1. Application.ini (o la configuración de configuración similar):
      admin.resources.layout.layoutPath APPLICATION_PATH = "/ modules / admin / layouts / scripts"
     default.resources.layout.layoutPath APPLICATION_PATH = "/ modules / default / layouts / scripts"
     member.resources.layout.layoutPath APPLICATION_PATH = "/ módulos / member / layouts / scripts"
     affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ modules / afiliados / layouts / scripts" 
  2. Crea tu ayudante de acción:
      <? Php
     / **
      * Establece la ruta de distribución en función de cada módulo
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Since 01/01/2010
      * /
     clase Pro_Controller_Action_Helper_SetLayoutPath
         se extiende Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Juegos de ruta de un diseño basado en el módulo
          * /
         preDispatch función pública ()
         {
        	 $ Module = $ this-> getRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ('arranque')) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ modulo] ['recursos'] ['layout'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  [Módulo $] $ config ['recursos'] ['layout'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ('layout')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. Y, por último boostrap al ayudante de acción:
     ...  / *** Establece los guiones de diseño en función de cada módulo * / protected function _initLayoutHelper () {$ this-> arranque ('frontController'); Zend_Controller_Action_HelperBroker $ layout = :: addHelper (nuevo Pro_Controller_Action_Helper_SetLayoutPath ());} .. . 

Doctrina: Hora y fecha predeterminada NOW ()

Por , miércoles 30 de diciembre 2009 18:30

He estado luchando con la creación de un esquema de base de datos para un nuevo Zend Framework proyecto. Estoy uso tratando de usar Doctrina ORM para mis modelos de bases de datos. Necesito configurar el esquema para que me permitió fijar una fecha y hora predeterminadas por un `` de la columna de fecha y hora, por ejemplo, cuando se añade un nuevo mensaje me da la fecha y hora actual. Después de mucho buscar y experimentar encontré la solución, así que estoy compartiendo.

En el esquema YAML archivo, simplemente haga lo siguiente:

 Mensaje:
   Actas:
     Timestampable:
       de creación:
         Nombre: created_at
         Tipo: fecha y hora
         formato: Ymd H: i: s
       Actualizado el:
         Nombre: last_updated
         Tipo: fecha y hora
         formato: Ymd H: i: s
   columnas:
     Identificación:
       Tipo: entero
       primaria: true
       autoincrement: true
     name: String (255)
     correo electrónico: string (300)
     message: String (2000)

Si por el contrario usted no quiere una `updated_at` de la columna se puede utilizar el siguiente:

 Mensaje:
   Actas:
     Timestampable:
       de creación:
         Nombre: created_at
         Tipo: fecha y hora
         formato: Ymd H: i: s
       Actualizado el:
         personas con discapacidad: true
   columnas:
     Identificación:
       Tipo: entero
       primaria: true
       autoincrement: true
     name: String (255)
     correo electrónico: string (300)
     message: String (2000)

PHP Patrones de Diseño - Diseño de Observadores

Por , martes 29 de diciembre 2009 22:02

He estado leyendo Head First Design Patterns recientemente y he decidido a escribir algunos de los patrones como ejemplos de PHP para mi propio beneficio. El primero que he decidido código de arriba es el patrón Observer . La definición formal del patrón Observer es la siguiente:

El patrón de observador (un subconjunto de la asíncrono de publicación / suscripción patrón ) es un software de patrón de diseño en el que un objeto , llamado el tema, mantiene una lista de sus dependientes, llamados observadores, y notifica de forma automática de cualquier cambio de estado, por lo general mediante una llamada uno de sus métodos . Se utiliza principalmente para poner en práctica los sistemas distribuidos de control de eventos.

Como los sistemas se vuelven más imprecisa de asegurarse de que cuando un evento ocurre todos los sistemas que requieren el conocimiento de estas actualizaciones se informó. Por ejemplo, una entrada del blog, después de guardar un mensaje que tenga que actualizar un motor de búsqueda (por ejemplo, Lucene), actualizar nuestro mapa del sitio, etiquetas, usuarios de correo electrónico suscritos, etc El patrón de observador permite a los desarrolladores añadir detectores adicionales sin necesidad de editar su objeto observable . Mediante la inyección de observadores (es decir, un motor de búsqueda de actualizaciones de observador, un mapa de su sitio, etc) en un tema (blog, es decir después de la edición del sistema) se puede permitir que el que llevar a cabo todas las actualizaciones necesarias sin ningún cambio.

Continuar 'Patrones de diseño PHP - Patrón Observador de lectura »

Oficina de Grid Computing utilizando entornos virtuales - Parte 4

Por , viernes 04 de diciembre 2009 23:59

Introducción

Yo trabajo en una empresa donde nos encontramos muchos puestos de trabajo de procesamiento por lotes de millones de registros de datos cada día y he estado pensando recientemente acerca de todas las máquinas que se sientan alrededor de cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En este conjunto de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

En la parte 3 que hemos creado nuestra máquina de procesamiento virtual y configurar máquinas de las ventanas para convertirse en trabajadores a tiempo de inactividad.

Ejecutar el último código

Inevitablemente, después de crear la lógica empresarial los trabajadores va a cambiar, los insectos se encuentra, el código más rápido y eficiente se produce lo que deja a sus trabajadores se sentaron alrededor de procesamiento de datos mediante código de oloroso viejo . Entonces, ¿cómo nos aseguramos de que siempre estamos usando la versión más reciente y más grande de nuestros scripts de procesamiento?

Hay unas cuantas formas sencillas muy fácil que podríamos hacer esto, el truco, sin embargo, es reducir la potencia de procesamiento y tráfico de la red para lograr esto. Vamos a empezar con el más simple de las soluciones y mejorar poco a poco durante un par de iteraciones.

El primer método sería simplemente conectarse a nuestro servidor de control de trabajo (a través de samba, FTP, o similar) y bajar la última versión del código. No es muy eficiente, pero va a hacer el trabajo. Vamos a mejorar en eso un poco, ¿qué hay de la creación de un script de rsync y el uso que cada vez que en su lugar? Por otra parte ¿qué hay de poner nuestra última secuencia de comandos de transformación en la subversión revisando el código al principio y luego sólo la actualización de nuestro código en cada carrera ( svn update )?

Al final, podría terminar con un script bash (llamado por cron cada 10 minutos), que parece tan simple como esto:

  #! / Bin / sh
 si ps ax | grep-v grep | grep php > / dev / null
 entonces
     echo "El trabajo se está procesando, la salida"
 más
     echo "El trabajo no se ejecuta, comienza ahora"
     cd / ruta / a / trabajo / copia
     svn update
     php yourJobProcessingScript.php
 fi 

Ahora podemos estar seguros de que con cada carrera que definitivamente estamos ejecutando el código más reciente. Estamos garantizando la presente mediante la actualización de nuestra base de código de tiempo todos y cada uno llevamos a cabo una carrera y la reducción de tráfico de la red transfiriendo únicamente las diferencias de archivos a través de nuestra red.

En mi configuración de demostración, lo hice exactamente como antes. Subversion se ha instalado en mi servidor de procesamiento de la tarea y simplemente sacó la última versión del código de un "trabajador" Poder usar 'svn update'. También he añadido una etiqueta de número de versión de mi script de transformación que fue devuelto a la base de datos como parte de la devolución de resultados. De esta manera pude ver que mi código se actualiza cada vez que me copian mi tronco en la rama de los trabajadores, es decir que yo estaba definitivamente de ejecutar el script de procesamiento más avanzada.

Utilizando los últimos datos

Si el procesamiento de la tarea hace uso de las fuentes de datos a continuación, en algún momento estos van a ser actualizado también. A menos que usted llame a sus fuentes de datos sobre una base muy poco frecuente que va a inundar la red con el tráfico tan pronto como los trabajadores empezarán a llevar todo a un punto muerto. Para mi solución, decidí que me gustaría mover mis fuentes de datos con mis máquinas virtuales.

Mantenga eres caballos allí! ¿Qué pasa si mis fuentes de información son enormes? Bueno, esto realmente es un caso de cantidad de datos que estamos hablando? Puede ser más rentable instalar una adicional en el disco duro de mayor capacidad en cada máquina que comprar un servidor de procesamiento adicional. Se trata de una cuestión de presupuesto y corresponde a la empresa para decidir. Es tal vez que sus fuentes de datos son tan grandes que es sólo factible para mantener esa cantidad de datos en las máquinas de sus trabajadores. En ese caso, ¿qué harías? Bien podríamos considerar llamar a un servidor de datos local, pero esto podría causar problemas en la red. En este caso un sistema de rejilla tal como esto puede llegar a ser poco realista para incluir en su entorno de oficina. También puede ser que usted puede mirar en otras estrategias de ejecución, por ejemplo, sólo llamar a sus trabajadores 8 p.m.-06 a.m. cada noche y / o de limitación de las solicitudes de origen de datos.

Pasando digamos que nuestros datos la cantidad de fuentes de 100 Gb de datos. Bueno, sí que es un poco de los datos para moverse por la red en una actualización. ¿Cómo nos aseguramos de que tenemos la última copia de los datos en este caso? Rsync es una posibilidad, pero personalmente creo que mediante la ejecución de su última fuente de datos en el servidor de procesamiento de la tarea y configurarlo como un maestro en la replicación (con un registro de bin bien larga) podría ser el camino a seguir:

replicación Al establecer cada uno de sus trabajadores como un esclavo de las actualizaciones del servidor de control de trabajo a sus fuentes de datos tengan un efecto positivo muy bien a sus trabajadores sin un gran aumento en la actividad de red (es decir, a menos que realice una actualización de datos de gran tamaño y todos los trabajadores entran en juego a la vez). Esto tiene ventajas con respecto a rsync en que no se obtendría de una larga pausa antes de cada trabajo, como las actualizaciones de base de datos, el mysql demonio en su trabajo continuamente actualizar sus datos, mientras que el proceso continúa.

Así es como puedo configurar mi servidor de demostración. Para configurar la replicación He seguido la guía en el sitio de MySQL ( Configuración de la replicación ) y en 20 minutos tuve a mi trabajador inital replicar el trabajo de control de servidores de conjunto de datos. Por cada trabajador adicional de los parámetros de replicación y el proceso de trabajo cada vez que la máquina virtual se ha copiado.

Resumen

En esta sección del artículo, hemos visto lo fácil e indoloro que es mantener el código de procesamiento hasta la fecha por rsync using o subverion (SVN) para hacer el trabajo y reducir el tráfico de red en la misma time. También hablamos sobre la forma para mantener su información de la fuente de datos puesta al día por lo que le alcancen a cada uno de sus trabajadores. Así, la zona asegurando que cumplimos con la lógica de negocio y la información en nuestro sistema de red de la oficina. Habrá, obviamente, existen varias alternativas para realizar estas tareas, pero aquí son dos ejemplos simples para demostrar cómo es fácil es una solución de conseguir.

El tiempo siguiente

En la parte final de esta serie, bien llamada la parte 5 , vamos a discutir la implementación de este sistema. Voy a resumir lo que se ha aprendido y lo que he conseguido crear.

Oficina de Grid Computing utilizando entornos virtuales - Parte 3

Por , viernes 04 de diciembre 2009 23:37

Introducción

Yo trabajo en una empresa donde nos encontramos muchos puestos de trabajo de procesamiento por lotes de millones de registros de datos cada día y he estado pensando recientemente acerca de todas las máquinas que se sientan alrededor de cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En este conjunto de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

En la parte 2 nos fijamos en los puestos de trabajo de un servidor se ejecutan, y la cantidad de empleos se debe configurar con el fin de lograr la mayor cantidad de procesamiento al tiempo que garantiza que cada trabajo se procesa sin falta.

Configuración de su trabajador - o servidor LIMP

El siguiente paso en el proceso es la creación de sus trabajadores virtuales. Para ello voy a utilizar una instalación de CentOS usando VirtualBox. Voy a instalar MySQL y PHP en el servidor, también conocido como una cojera (Nux Li, m ySQL, P HP) Servera (que puede haber hecho que el nombre de arriba).

  • Instalar VirtualBox en su máquina Windows (seguir el enlace)
  • Descargar e instalar CentOS (versión actual 5.3) dentro de una máquina virtual creada

No tiene sentido que me iba a la que probablemente hay 1,000 's de gran tutoriales por ahí (bueno, aquí está uno: Crear y Managing máquina virtual con VirtualBox CentOS ). El punto importante a señalar es que supongo que llamé a mi máquina virtual GridMachine.

En cuanto a mis opciones de virtualización del cliente y el sistema operativo vaya no hay ninguna razón convincente grande para cada elección. VirtualBox es algo que yo uso en mi máquina de casa y con el apoyo de los tres principales sistemas operativos. Elegí CentOS como un sistema operativo estable, la buena y yo lo uso en mi propio servidor web. Yo soy un gran creyente en las herramientas adecuadas para el trabajo (aunque estoy aplicando la «utilización más rápida y más fácil para usted" mentalidad de aquí), así que si el sistema operativo X se ejecuta el código más rápido y más eficiente el uso que, en lugar :)

Es importante destacar que asegurarse de que su máquina virtual utiliza DHCP, de lo contrario para cada máquina virtual nueva tendría que ser configurado por separado, que es algo que no want.By mediante DHCP no es necesario configurar la red de forma individual para las máquinas de los trabajadores, DHCP entregará a direcciones IP para usted. Por lo tanto usted puede copiar su máquina virtual sobre la oficina sin tener que preocuparse sobre la configuración de cada uno de ellos hacia arriba (esto mejora la escalabilidad y disminuye la administración de los trabajadores).

El proceso que se debería tratar de lograr sería la de obtener una nueva máquina física, instalación de VirtualBox, y luego más o menos implementar la imagen virtual sin necesidad de mucho más. Podría ser sabio para configurar todos sus trabajadores en una subred diferente para que pueda al menos ver cuántas máquinas se están ejecutando. También tendrá que configurar sus máquinas en un contrato de arrendamiento a largo o ilimitado concesión DHCP.

Cómo ejecutar los trabajos en el trabajador

Esta es un área interesante y hay varios métodos válidos para el procesamiento de puestos de trabajo del trabajador. Aquí sólo voy a hablar sobre los dos más evidentes:

  • Perpetuamente de ejecutar el script: Un script, ya sea un script de shell, o un script PHP se ejecuta una vez en el trabajador y se ejecuta como parte de un bucle infinito. He descontado este método como un choque de la secuencia de comandos y, potencialmente, los trabajadores dejarán de funcionar sin algún tipo de intervención.
  • La ejecución de script basado en Cron: cada X minutos el demonio cron se inicia una llamada a la secuencia de comandos para que funcione. Sin algunas comprobaciones que esto podría dar lugar a muchas muchas copias de la secuencia de comandos de funcionamiento de los trabajadores.

Mi decisión fue ir con cron que se inicia un script de shell cada minutes. 10 Mi script realiza las siguientes tareas:

  1. Obtenga una lista de procesos y grep esto para 'php'. Si no lo encuentra y luego continúe.
  2. Llame a su código de trabajo, en mi caso esto sería algo basado PHP
  3. Guión trabajador termina su carrera
  4. Listo para ir de nuevo en la convocatoria correspondiente al lado

Mi script bash se ve algo como lo siguiente:

  #! / Bin / sh
 si ps ax | grep-v grep | grep php> / dev / null
 entonces
     echo "El trabajo se está procesando, la salida"
 más
     echo "El trabajo no se ejecuta, comienza ahora"
     php yourJobProcessingScript.php
 fi 

Nota: el eco del son casi completamente inútil, pero puede ayudar a la próxima persona que venga a tratar de modificarlos.

Con esto concluye la puesta en marcha de la máquina virtual de trabajo, rápido, simple y fácil de copiar a cada nueva pieza de hardware que se recibe. La 'inteligencia' del sistema de red realmente no es visualizada en el sistema operativo, su todo que ver con el código creado para procesar los trabajos, la configuración del trabajo, y en asegurarse de que el trabajo se ejecute en su caso (es decir, cuando el host está inactivo ).

Configuración de Windows para inicializar los trabajadores

La primera tarea es trabajar en el comando necesario para ejecutar la máquina virtual desde la línea de comandos de Windows. Si ha instalado VirtualBox en la ubicación predeterminada y que ha llamado a su trabajador GridMachine el comando necesario para cargar hasta su trabajador es:

  "C: \ Archivos de programa \ Sun \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Sin embargo, para ejecutar el script en una 'cabeza' del Estado tenemos que usar:

  "C: \ Archivos de programa \ Sun \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - VRDP = apagado 

Esto iniciará la máquina virtual sin la interfaz gráfica de usuario y permitir que se guarde el estado con gracia. El segundo argumento se apaga RDP por lo que no entra en conflicto con Windows RDP, o le dará un mensaje sobre la escucha en el puerto 3389. El nombre de máquina virtual entre mayúsculas y minúsculas!

A continuación, tendrás que configurar las ventanas cerradas para dar inicio a nuestra máquina virtual de los trabajadores una vez que la máquina ha estado inactiva. Para hacer esto (en Windows XP) tendrás que ir a Inicio -> Todos los programas -> Accesorios -> Herramientas del sistema -> Tareas programadas de la siguiente manera:

las tareas programadas

Luego haga clic en "Agregar tarea programada" seguido por vaya a agregar un programa a medida. Vaya a la secuencia de comandos VBoxManage y haga clic en Aceptar. Programe su tarea para cualquiera de las opciones (vamos a cambiar esto en un minuto) y continuar. Después de saltar la siguiente pantalla de Windows le pedirá que se desea ejecutar esta tarea, me gustaría sugerir ya sea "Administrador" o crear un nuevo usuario privilegiado. Recuerde que no queremos interferir en la cuenta personal de serie en la máquina en cualquier momento. Haga clic en Siguiente y comprobar las opciones muestran avanzadas para esta tarea.

Para el final de la caja de texto de ejecución añadir nuestro "startvm GridMachine 'cadena y asegurar que sólo se ejecutan cuando se conecte se deja sin marcar. Visita a la tarea de programación que viene y cambiar la programación de bajar a la opción 'cuando está en reposo ", elija la cantidad de tiempo que le gustaría que la máquina sea inactivo antes de pasar a la siguiente pestaña.

Por último desmarque la opción que dice detener la tarea si se ha estado ejecutando X cantidad de tiempo, pero no marca la opción para detener la tarea si la máquina ya no es ociosa.

programar

Eso es todo entonces para la configuración del host de Windows!

Resumen

En esta parte hemos puesto en marcha una máquina virtual para que actúe como un trabajador, así como la forma en que nos llame y ejecutar nuestros scripts de procesamiento de trabajos (para mí un script PHP). A partir de aquí vamos a ver cómo crear nuestras copias de Windows para poner en marcha la máquina virtual en el modo de cabeza cuando el ordenador esté inactivo, y guardar su estado cuando el usuario vuelve a la utilización de la máquina. Esperemos que en este momento estás viendo lo fácil que es instalar este sistema y está ansioso por conseguir algunos experimentos se va!

El tiempo siguiente

En la Parte 4 vamos a estar buscando en el uso de herramientas para asegurarse de que está ejecutando la última versión de las fuentes de código y los datos para que los resultados obtenidos son siempre al día con la última información de negocio y la lógica.

Oficina de Grid Computing utilizando entornos virtuales - Parte 1

Por , viernes 04 de diciembre 2009 23:23

Introducción

Yo trabajo en una empresa donde nos encontramos muchos puestos de trabajo de procesamiento por lotes de millones de registros de datos cada día y he estado pensando recientemente acerca de todas las máquinas que se sientan alrededor de cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En este conjunto de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

Como PHP desarrollador que voy a utilizar las herramientas que utilizo cada día es decir, Linux, MySQL , PHP, VirtualBox y Subversion (SVN). Sin embargo espero que esta guía se adaptará a otros idiomas y las tecnologías igual de bien.

La solución que proporcione será muy vagamente basada en el tipo de procesamiento que íbamos a necesitar para alcanzar sin embargo esto no puede ser verdad todo el artículo que voy a cambiar las cosas para la simplicidad, o para producir escenarios de uso más interesantes.

Estos entornos virtualizados se pueden ejecutar en máquinas Windows ya que esto es lo que la mayoría de las oficinas de correr. El tratamiento que las máquinas de oficina no debe interferir con el personal con esas máquinas, que no requieren mantenimiento en la máquina, y ser de fácil despliegue de nuevas máquinas a medida que estén disponibles. Además, las nuevas máquinas virtuales no requiere ninguna configuración adicional ya que esto reduce en gran medida la escalabilidad y la facilidad con la que se puede ampliar el sistema de red.

¿Por qué implementar una red de computación de oficina?

En primer lugar usted puede estar pensando, ¿por qué no usar un recurso de computación en la nube como plataforma EC2 de Amazon ? Bueno, las razones pueden ser varias, por ejemplo:

  • Usted no va a confiar a ciertos datos a un entorno de cloud computing
  • No se puede poner ciertos datos en un entorno de cloud computing por razones legales (por ejemplo, datos de abandonar el país), lo que puede por razones legales, por ejemplo, los registros del NHS.
  • Usted quiere mantener sus unidades de procesamiento de cierre y tener un control total sobre el hardware demasiado
  • Usted no tiene los fondos del proyecto a ejecutar instancias de nubes
  • Su oficina no tiene una conexión a Internet y por lo tanto, que no es posible utilizar un recurso de nubes
  • ¿No te gusta la lluvia, las nubes sugieren la lluvia, por lo tanto, mantenerse bien lejos

Estoy seguro de que la lista podría continuar, pero creo que es suficiente por ahora.

Ventajas de una red de computación de Office

Bueno, vamos a hacer algunos las matemáticas (y en cierto estilo de la física le permite hacer algunas suposiciones de barrido). Imagina que tienes gran servidor de procesamiento fornido correr 100 puestos de trabajo por día. En su oficina tiene 50 máquinas que están inactivos 16 horas al día, cada una de estas máquinas es de 10% tan poderoso como el procesamiento de Sever fornido. (Todos los resultados aquí se redondean a subestimar aumento de rendimiento).

Por lo tanto, una máquina de energía * 10% * 2/3 = 0,067 es decir, el tiempo de procesamiento de un escritorio en el tiempo de inactividad podría procesar 6 puestos de trabajo completos por día.

Si ahora escalar esto se requieren 15 computadoras de escritorio de inactividad para procesar los trabajos de la mayor cantidad por día que el servidor de procesamiento principal lo hace.

Así pues, en nuestra oficina de simulación de 50 máquinas podríamos aumentar nuestra capacidad de procesamiento de 1 servidor de hasta 4 servidores de procesamiento completo, o podríamos estar procesando 400 puestos de trabajo por día en lugar de 100.

Nótese, sin la inversión en nuevo hardware de su empresa acaba de aumentar su capacidad de procesamiento por lotes 4 veces! Potencialmente, usted va a aumentar su consumo de energía, sino de la mayoría de entornos de oficina que he estado a las máquinas por lo general a la izquierda en la noche de todos modos, por lo que podría ver esto como una iniciativa verde.

Otras ventajas también significa que la inversión en nuevo (o actualizado) servidores de procesamiento puede ser retrasada si sus máquinas de oficina son suficientes y que a medida que mejora la potencia de sus máquinas de oficina de su red de oficinas se vuelve más poderosa de forma automática.

Tecnologías

Lo que usted necesita? (O más correctamente, ¿qué puedo utilizar):

  • Máquinas de oficina Idle (en mi caso un repuesto vieja computadora portátil Windows XP)
  • VirtualBox (u otro software de cliente de virtualización)
  • Una máquina virtual con PHP, MySQL running ejecutando un sistema operativo de corte hacia abajo, voy a llamar a estos servidores mi cojera :)
  • Los trabajos se ejecuten
  • Servidor de trabajo (puede ser otra máquina virtual en alguna parte)

Trabajos típicos

Los tipos de trabajos que este sistema está diseñado para funcionar es como sigue:

  • Sistema recibe una lista de datos sobre los que tenemos que coincidir y devolver los resultados
  • La coincidencia consiste en la comprobación / buscar varias fuentes de datos (bastante estático)
  • Los resultados de las fuentes de datos pueden requerir una mayor validación, la fusión, el control de fuentes de datos adicionales en respuesta a los resultados
  • Los datos se devuelven con los registros que coinciden, plenamente validada y procesada
  • Cada registro dentro de un trabajo es independiente del resto

Así que, básicamente estamos viendo los trabajos en ejecución que requieren de una mezcla de búsquedas de bases de datos y algunos procesamiento de números, un escenario bastante típico en un entorno empresarial.

Soluciones de redes no sólo son ventajosas para procesar los trabajos de este tipo. Básicamente, cualquier proceso que puede ser dividido en unidades independientes se pueden ejecutar en paralelo. Ver esta wikipedia para ver ejemplos y más información: Grid Computing , pero un par de ejemplos famosos son Seti @ Home y BIONC . Existen marcos para el funcionamiento de las redes de computación, y éstos están bien vale la pena analizar.

¿Qué vamos a lograr?

Al final de estos artículos espero demostrar que el despliegue de una red de oficina no tiene que ser muy costoso o que consume tiempo. Voy a hablar:

  • Configuración del sistema de control de trabajo, configuración del trabajo
  • Creación de una máquina de procesamiento virtual correspondiente
  • ¿Cómo configurar el sistema en una máquina Windows
  • Velar por que está utilizando el último código y los datos
  • Implementación y evaluación comparativa
  • De cara al futuro

Voy a ser la construcción (ok he construido, a continuación, para escribir esto) una aplicación de ejemplo para poner a prueba los conceptos en un equipo local con Windows XP y mi 'GridMachine' máquina virtual. Mi servidor de control de trabajo va a ser mi máquina principal que corre Fedora 11 .

Esto es de ninguna manera la intención de demostrar un sistema completo de trabajo robusta, su significado más de una manifestación y discusión de mostrar que estas cosas se puede lograr en un espacio de tiempo razonablemente corto ya un bajo costo. Por favor, no dude en enviarnos sus comentarios, correcciones o mejoras y haré mi mejor esfuerzo para mantener este artículo actualizado para que coincida.

El tiempo siguiente

En la parte 2 voy a empezar a mirar en el sistema de control de trabajo, y buscar en la cantidad de empleos se debe configurar con el fin de lograr la mayor cantidad de procesamiento al tiempo que garantiza que cada trabajo se procesa sin falta.

Oficina de Grid Computing utilizando entornos virtuales - Parte 2

Por , viernes 04 de diciembre 2009 23:23

Introducción

Yo trabajo en una empresa donde nos encontramos muchos puestos de trabajo de procesamiento por lotes de millones de registros de datos cada día y he estado pensando recientemente acerca de todas las máquinas que se sientan alrededor de cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En este conjunto de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

En la parte 1 me dio una visión general del sistema y las tecnologías que va a utilizar, así como se discute algunas de las posibles razones por las que se desea crear una red de oficinas.

Control de Tareas

Si usted va a estar ejecutando trabajos entonces usted va a necesitar una cierta manera de gestionarlos. Su sistema de control de trabajos (en su servidor de trabajo) tiene que ser muy bien pensado, incluso antes de intentar ejecutar una red de oficinas. Así, en primer lugar, ¿cuáles son las tareas de un sistema de control de trabajo:

  • Repartir puestos de trabajo a petición de los trabajadores
  • Dígales a los trabajadores qué tipo de trabajos se ejecuten
  • Seguimiento de los trabajos
  • Asegúrese de que los trabajos sólo se ejecutará una vez
  • Proporcionar los datos de empleo a los trabajadores, o por lo menos les diga dónde conseguirlo

El sistema también debe ser extensible, una solución que funciona por ahora en un solo caso puede ser ampliado para ejecutar varios tipos de puestos de trabajo como el negocio ve la pena en una solución de red. Por ejemplo, los trabajos pueden tener prioridades, más de un tipo de trabajo puede existir (es decir, varias bases de código), con el tiempo incluso se puede ejecutar varias máquinas diferentes de los trabajadores que están optimizados para cada tipo de trabajo (a pesar de que se mueve lejos del trabajador "genérico idea). Siempre trato de pensar en el futuro, cuando el desarrollo de sistemas, una visión a corto plazo puede conducir a la frustración a largo plazo y el tiempo de desarrollo mayor.

Servidor de tareas de

Vamos a necesitar un lugar para controlar nuestros puestos de trabajo a partir, este debe ser el único sistema en su red que tiene un localizador de recursos fijos, ya sea una dirección IP, nombre de host, la dirección URL (usando DNS interno), etc Esto es porque los trabajadores tienen que saber dónde buscar trabajo, los trabajadores necesitan para encontrar el sistema de control de trabajos (no el sistema de control de trabajo de encontrar a los trabajadores).

El servidor de trabajo en sí no tiene realmente una tarea complicada (en un sistema básico de todos modos), es necesario almacenar una lista de puestos de trabajo, repartir puestos de trabajo, recibir los resultados, y posteriormente almacenarlos para su posterior recuperación. ¿Cómo estas partes (por ejemplo, 'mano puestos de trabajo ") se definen pueden ser muy básicas. Más adelante podemos ampliar el sistema para incluir una interfaz de administración para agregar, editar, eliminar, suspender puestos de trabajo, pero esto está más allá de este ejercicio.

No hay ninguna razón que sea entonces cuando su servidor de trabajo no puede ser una máquina virtual se ejecuta en el servidor de procesamiento principal, siempre que no drena demasiados recursos de la misma. El servidor de trabajo sin embargo es necesario una alta disponibilidad, si se cae en un viernes por la noche vas a perder un fin de semana de tratamiento, lo que podría costarle un par de semanas de tiempo de procesamiento (en comparación con el servidor de procesamiento principal solamente) . Es posible que desee considerar la posibilidad de su servidor de trabajo en un entorno de equilibrio de carga de alta disponibilidad.

Configuración básica

La configuración básica de nuestro servidor de trabajo consistirá en lo que estoy llamando a uno de mis servidores Bizkit (que es nux Li, m ySql, P HP). El código que se ejecuta en los trabajadores thea realmente averiguar qué puestos de trabajo que se puede ejecutar mediante la interacción con bases de datos con el empleo de sistemas de control. Más adelante se podría crear un servicio web y la mano en realidad a puestos de trabajo en lugar de tener a los trabajadores hacer el trabajo duro sí, pero por ahora vamos a seguir utilizando el principio KISS (Keep It Simple, Stupid!).

Por lo tanto, vamos a crear tres mySQL para hacer frente a las tablas de puestos de trabajo. Estos serán puestos de trabajo ``, `jobRecords`, y `jobResults`.

puestos de trabajo de mesa Aquí estoy usando SQL Buddy una gran alternativa poco a phpMyAdmin sólo porque es más fácil de instalar en CentOS (para que otros vean: 10 grandes alternativas a phpMyAdmin )

Esta tabla se compone de 5 campos simples,

  • Identificación: identificar en forma única el trabajo
  • Nombre: ¿Podría ser una referencia cliente, o cualquier número de otros identificadores
  • Estado: Es necesario saber dónde está el trabajo es menos, por ejemplo,
    • 0: No se ha iniciado
    • 1: Recogido
    • 2: Completa
  • started_by: ¿Quién ha empezado a hacer el trabajo? Esto no es del todo necesario, pero es un agradable de tener. Te sugiero que los trabajadores de seguimiento por su dirección IP en la red
  • started_at: ¿Cuándo el trabajador iniciar el trabajo? Mediante el seguimiento de los trabajos que no hayan completado dentro de X cantidad de tiempo que sabemos que necesitamos para recoger el trabajo de nuevo y comenzar a procesar por otro trabajador. Los trabajadores podrían detener el procesamiento / go en línea para cualquier número de razones, falta de luz, accidente, pérdida de red, etc

Es fácil cómo esta tabla se puede ampliar con algunos campos adicionales para permitir el seguimiento de las estadísticas, una columna de tiempo de llegada para ver cuánto tiempo tomó el trabajo, un contador para ver cuántos trabajadores tomó el puesto de trabajo (obviamente, esto tiene que tienden a 1), prioridad del trabajo, la lista puede seguir y seguir. En los escenarios de trabajo más complejos sería posible especificar la cantidad de memoria que el trabajador tendría que tener acceso a (y por lo tanto, sólo utilizan los trabajadores adecuados), o incluso qué tipo de trabajador se requiere.

Permite agregar unas pocas empleos ejemplo:

puestos de trabajo de ejemplo

La tabla siguiente de nuevo es bastante sencillo de entender, estos son nuestros registros de trabajos. Están vinculados a la mesa de trabajo principal por una columna de `jobs_id`. La composición de esta tabla depende mucho de los datos que necesita para abastecer a sus trabajadores, vamos a hacer un ejemplo muy simple, donde tenemos cuatro columnas:

  • Identificación: Identificación del expediente
  • Nombre: Nombre de la persona
  • Dirección: Dirección de la Persona
  • jobs_id: El ID de trabajo que este disco está ligado a

La tabla de la tercera y última consiste en una tabla de resultados, se tiene mucho el mismo constituyen como nuestra tabla de registros, y con la adición de algunas columnas podría ser parte de la tabla de registros:

  • job_record_id: Vincular el resultado a la mesa de trabajo
  • Resultado: Los datos de los resultados

... Y eso es todo lo que necesitas para el control del trabajo! (Aunque a un nivel muy básico) En mi caso estoy señaló a otra mesa donde mis datos en el proceso se encuentra, pero esto podría fácilmente un archivo de estado, los parámetros para ejecutar código de simulación, lo que sea.

Selección de un puesto de trabajo

Como se mencionó anteriormente, los trabajadores a hacer nuestra gestión de trabajo para nosotros, por ahora, así que todo lo que tenemos que hacer realmente es encontrar un trabajo que necesita tratamiento y obtener la información. ¿Cómo hacemos esto? Bien elegir a nuestros criterios de selección de empleo y buscar trabajo, en SQL hice lo siguiente:

  1. Tome todos los puestos de trabajo que no están marcados como completa, pero desde nuestro trabajo y recuperar los (sustituya ME__ __ con un identificador más fácil, sería la dirección IP):
      UPDATE `puestos de trabajo` SET `status` = 0 donde `status` = 1 `Y` = __ started_by ME__; 
  2. Utilizando los criterios de selección de trabajo, seleccione un trabajo y decirle al sistema de control que este trabajador se trata de que:
      UPDATE `puestos de trabajo` SET `status` = 1, `started_by` = __ ME__, `started_at` = NOW () donde `status` = 0 o
     (`Status` = 1 `Y` started_at> DATE_SUB (NOW (), intervalo de una hora X)) ORDER BY `id` ASC; 

    Por trabajos que llaman la que no han devuelto los resultados en X cantidad de tiempo que nos aseguramos de que todos los trabajos se ejecutan en el caso de un trabajador se caiga o ausentarse sin permiso.

  3. A continuación tomar los datos de puestos de trabajo seguido por los mismos registros:
      SELECT * FROM `puestos de trabajo` WHERE `started_by` = __ ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __ JOBID__; 

Una vez finalizado el trabajo que insertar nuestros registros de resultados y marcar el trabajo lo más completo. Recuerde que como puestos de trabajo se puede suspender / reanudar en cualquier momento y permitir cierta solidez en su guión. Puede ser que suspende la tarea a medio camino a través de la actualización del sistema de control de trabajos para comprobar el número de registros en un puesto de trabajo y el número de resultados guardados de vuelta al sistema de control de trabajo sería un acierto.

Además, si bien esto demuestra cómo los trabajos se pueden seleccionar y gestionar desde un marco de consulta SQL que realmente se debe abstraer de su control sobre el trabajo de modo que si usted decide pasar a utilizar un servicio Web, un sistema de archivos basado en XML , o cualquier otro número de sistemas que no afectará el código encima de ella.

Tarea de configuración

El siguiente aspecto a considerar es el tamaño del trabajo y la configuración. Al jugar con la configuración del trabajo que se puede lograr un excelente equilibrio entre la velocidad, el proceso de replicación, y la fiabilidad. Tome un par de escenarios Ofa:

  1. Ofertas de empleo tomar 1 cada día para funcionar: Esto significa que sus trabajadores necesitan 15 días para procesar cada puesto de trabajo (recuerde que el 10% de la energía para 2/3rds de la época). Esto claramente no es una buena configuración, el tamaño de su trabajo es demasiado grande! Se necesitaría por lo menos el doble de tiempo para conseguir un trabajo procesado si el trabajador se ausentan sin permiso inicial (tiempo para recoger a que no ha devuelto un resultado más el tiempo de reprocesamiento). En un ideal que tendría al menos un trabajo de jornada completa facilitado el claro al final de cada período de inactividad, de esa manera a mantener los puestos de trabajo marcando más y en el peor caso, un trabajo que tomaría dos días para el proceso si el primero van a faltar.
  2. Ofertas de empleo tomar 1 minuto para correr: Esto significa que sus trabajadores dura unos 15 minutos para ejecutar cada trabajo. Si bien este principio puede parecer ideal, ganancia de procesamiento de trabajo adicional durante la hora del almuerzo, coffee break, reuniones, etc este escenario pone la tensión en otras áreas de su sistema y presenta sus propios problemas. Por ejemplo, en primer lugar la configuración de / procesamiento relación de tiempo va a ir a la derecha hacia abajo, por lo tanto perder la eficiencia del sistema. La red va a ser la información del trabajo constante de transmisión al personal de los trabajadores de varios frustrantes que son dong de su trabajo del día a día. También vas a poner más esfuerzo en su trabajo como servidor de procesamiento que tiene que repartir montones y montones de pedazos pequeños de trabajo sobre una base regular. Por último, en esta situación si el servidor de trabajo de baja que vas a crear un registro de nuevo mucho trabajo sin terminar, mientras que trabajos más grandes podría, continuó el procesamiento felizmente ignorante de que el servidor de trabajo estaba experimentando dificultades.

En realidad no habrá una configuración ideal para la configuración de la red, mucho depende de los recursos disponibles, los tipos de trabajo, los requisitos de trabajo de entrega a tiempo, la capacidad de la red, y así sucesivamente. Sin embargo, algunas pautas serían los siguientes:

  • Trabajos de tamaño de modo que cada trabajador puede obtener a través de puestos de trabajo por lo menos 3-4 en un período de 15 horas (el más largo período de tiempo de inactividad es probable)
  • Juega con el tamaño del trabajo de manera que el tiempo de preparación llega a ser bastante insignificante en comparación con el tiempo de procesamiento (teniendo en cuenta el punto anterior).
  • Si un trabajo no se completa en el doble de la cantidad de tiempo (tal vez menos) que espera que se complete que asumir que su AWOL ido y comenzar a procesar con otro trabajador. Esto significa que usted puede tener que esperar hasta tres veces la longitud normal de un puesto de trabajo a que se complete (posiblemente más si el trabajo de fallar). Es posible que desee reducir este tiempo, pero ten cuidado de no reducir demasiado como usted puede comenzar a duplicar las tareas de procesamiento en una base regular.
  • Ofertas de empleo debe ser independiente de las necesidades externas, tanto como sea posible. El servidor de trabajo, por ejemplo, sólo se debe contactar al inicio y al final de cada trabajo.
  • No sature su red, esto tendrá dos efectos negativos, a su personal durante el día se encuentra con la red de frustración y los problemas se pueden experimentar con las conexiones el tiempo de espera de un problema que sólo va a empeorar a medida que ampliar su red.
  • Asegúrese de puestos de trabajo se puede ejecutar en sus trabajadores. Si los trabajos se vuelven demasiado espacio de memoria puestos de trabajo intensivos o intensivos en el disco comenzará a abortar y lo único que notará es una caída en el número de trabajos procesados ​​sin ninguna razón real de por qué.

Presentación de los resultados de un trabajo

Al presentar los resultados de un trabajo, es importante comprobar que los resultados no han sido facilitados por otro trabajador, especialmente si el trabajador actual ha estado inactivo durante algún tiempo.

Cuando los resultados se presentan asegurarse de que el número de resultados coincide con el número de registros en el trabajo.

Como se dijo anteriormente, y no está de más insistir, construir la tolerancia a fallos en la recuperación de puestos de trabajo y presentación de resultados. Los trabajadores pueden (y lo más probable) entra en modo de suspensión en el más incómodo de veces y esto tiene que ser atendidos. También una vez más, abstrayendo de su presentación resultados ayudarán a atender a los cambios futuros en el sistema de control de trabajo mucho más fácil de tratar.

Resumen

En este seccion_a hemos visto lo que es un servidor de control de trabajo que tiene que hacer y cómo llegar a un sistema muy básico establecido. Hablamos de cómo recuperar un trabajo desde el sistema de control y de la mejor manera de configurar puestos de trabajo para aprovechar al máximo nuestro sistema de red de su oficina. Para finalizar, un párrafo o dos sobre la presentación de los resultados de vuelta al servidor de control de trabajo se presentó.

  • Un servidor de control de trabajo administra los trabajos y asegura que todas las unidades de trabajo se completan
  • Al abstraer el trabajo de seleccionar o resultados de la presentación podemos cambiar la tecnología del servidor de control sin problemas mucho
  • Configure sus puestos de trabajo para asegurarse de que se ejecute de forma rápida y eficiente, sin poner demasiada presión sobre la infraestructura de red, y sin duplicar tareas de procesamiento en una base regular.
  • Asegúrese de que usted construye tolerancia a fallos y checking error en sus rutinas, los trabajadores pueden suspender y reanudar y el más incómodo de los tiempos. Recuerde que debe comprobar si los resultados se han presentado ya por otro trabajador.

El tiempo siguiente

En la parte 3 vamos a crear nuestra máquina virtual de procesamiento y establecer nuestras máquinas Windows para convertirse en trabajadores a tiempo de inactividad.

Oficina de Grid Computing utilizando entornos virtuales - Parte 5

Por , viernes 04 de diciembre 2009 23:03

Introducción

Yo trabajo en una empresa donde nos encontramos muchos puestos de trabajo de procesamiento por lotes de millones de registros de datos cada día y he estado pensando recientemente acerca de todas las máquinas que se sientan alrededor de cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En este conjunto de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

En la Parte 4 se observó el uso de herramientas para asegurar que se está ejecutando la última versión de las fuentes de código y los datos para que los resultados obtenidos son siempre al día con la última información de negocio y la lógica.

Pre-Despliegue

Antes de implementar el sistema de red, si hay una cosa que hacer y una sola cosa es comparar su sistema actual! No importa lo que dicen sus colegas sobre la cantidad de trabajo extra que su sistema se va a hacer a menos que tenga los números para apoyar lo que sus garantías no son otra cosa. Así,

  • número de registros que puede procesar en la actualidad? Por día? Por hora?
  • ¿Cuánto tiempo suelen tardar en dar la vuelta un puesto de trabajo?
  • ¿Cuánto más la capacidad tiene?

También hay preguntas adicionales:

  • Si su servidor de procesamiento (o uno de los servidores de procesamiento) se cae, ¿cómo afecta esto a sus capacidades, va a estar paralizado?
  • ¿Qué ventajas espera / espera obtener de un sistema de red?
  • ¿Son sus máquinas de oficina capaz de ejecutar los trabajos?
  • ¿Está usted (o puede ser convertida puestos de trabajo) para wrok en este estilo de correr?

El principal punto último es tomar su tiempo en cualquier cambio de esta envergadura. Actualice el código de procesamiento para trabajar con la nueva metodología de referencia, una vez más. Es posible que configurar el servidor de procesamiento para ejecutar una máquina virtual, después de su procesamiento de todos los servidores acaba de ser otro trabajador (sólo un muy poderoso relativamente). Deje que el nuevo proceso para resolver.

Despliegue

Mi sugerencia sería hacer estallar en la oficina de un fin de semana realizar todas las instalaciones y la configuración. ¿Es esto justo antes de quince días de vacaciones y dejar para otro pobre hombre para hacer frente a las consecuencias tal vez no ... ...

Implementación de un sistema como este tiene que ser lenta. A pesar de ser relativamente fácil de configurar este sistema afectará a la infraestructura de toda la oficina (y el digital). En primer lugar, lanzar un par de máquinas a la vez, el tráfico de monitor de red, como los anfitriones de los trabajadores realizan en el día a día. Es posible que necesite modificar la configuración de su trabajo en respuesta a los hallazgos.

Una vez que el sistema se ha asentado con unas pocas máquinas (digamos el 10% de todas las máquinas de oficina, es decir, 5) mantener la vigilancia del tráfico de red y máquina host de referencia performance. Siguiente de nuevo, ahora se debe procesar los trabajos de un 33% más que sus puntos de referencia en primer lugar. Compruebe esto es así, o que eres por lo menos en este estadio. Si no es así, investigar lo que está pasando antes de seguir adelante. Repita este ciclo hasta que felizmente han todas las máquinas de oficina funcionando sin matar a rendimiento de la máquina individual o de molienda de la red a un punto muerto.

En todo momento mantenga la evaluación comparativa, incluso después de todas las implementaciones se hacen. Compruebe cómo las nuevas actualizaciones de código afectan a la velocidad de su sistema, compruebe todos los trabajadores están informando y procesar los trabajos. Poco a poco (muy lentamente) Incremento de la configuración de su trabajo para obtener lo mejor de sus trabajadores y de la red.

¡Detente!

¿Qué pasa si usted quiere evitar que sus trabajadores se ejecuten en algún momento? Todos ellos están corriendo por ahí, la regeneración, y haciendo todo lo posible para procesar los datos como los insectos hambrientos. La respuesta puede parecer obvio, pero vale la pena añadir en caso de su pasado por alto. Basta con editar el script de procesamiento con una salida (0) or die () u otra declaración de matar a su trabajo de procesamiento. Una razón importante por la que siempre tratamos de actualizar a la última secuencia de comandos de procesamiento antes de correr!

Demostración del sistema

Para escribir esta serie de artículos cortos que he creado una red muy pequeña para demostrar las tecnologías y metodologías. He leído un montón de artículos, tutoriales, y utiliza diversas herramientas para configurar y monitorear lo que estaba pasando. De ninguna manera he salido y saturado de una oficina entera con el tráfico y ni he tenido acceso a un personal permanente de los miembros de PC para ver cómo el rendimiento de acogida se vio afectada.

Mi sistema de demostración era muy humilde por cierto. Utilicé mi escritorio normal de configurar como un servidor de control de trabajo. En esta había instalado MySQL server instalado configura como un maestro en la replicación, PHP , Â y SVN vinculados a través de apache (para el acceso a través de VM de los trabajadores).

Entonces creó una máquina de trabajo CentOS en VirtualBox en un hijo de 6 años portátil con Windows XP. Puedo configurar las tareas programadas como se especifica después de copiar la máquina virtual en la máquina y la dejó ir.

La máquina virtual se creó con PHP, la subversión, y mySQL. Revisé una rama llamada "trabajador" de mi repositorio de control de trabajo de servidores y se aseguró de que podría ser actualizada con 'svn update'. A continuación tengo que instalar MySQL como un esclavo y comprobar que los datos se replica de MySQL en el servidor de control de trabajo hasta la máquina virtual de los trabajadores. Después de todo esto tengo que instalar el script y el trabajo de cron.

Mi script de procesamiento, básicamente, se fue a lo largo de las líneas de este material (muy simple):

  • Leer en el campo Nombre
  • Contó el número de nombres similares en una tabla de la fuente de información que obre en la máquina virtual
  • Contó el número de nombres que el anterior pero la división del nombre por espacios (es decir, nombre, medio, apellido)
  • Repite este proceso 1.000 veces

Cada puesto de trabajo tomó aproximadamente 20 minutos para correr. En un momento abrí varias copias de la máquina virtual de trabajo en la computadora portátil ventanas y observó a los puestos de trabajo puede realizar la sesión por cada una de las direcciones IP de los trabajadores. En este punto, también confirmó que la replicación se reiniciará automáticamente.

Dejar la computadora portátil al ralentí como resultado un trabajador de comenzar a procesar los trabajos desde el servidor de control de trabajo. Al reanudar el uso del ordenador portátil se produjo un retraso de unos 30-60 segundos, se trata de una buena cantidad de tiempo y el personal tendría que ser conscientes de que su máquina puede hacer una pausa por un corto tiempo al volver a la máquina. Las nuevas máquinas no pueden tener una pausa de este tiempo. El beneficio de la cantidad de procesamiento realizado por estas máquinas durante períodos de inactividad que más que compensan los miembros del personal han tenido que esperar un período corto (por ejemplo 1 minuto) al llegar a sus máquinas de la mañana (yo con frecuencia esperar más que esto para un Windows Defender actualizar a tener lugar), siempre y cuando se hicieron conscientes de ello (tiempo útil para tomar un café por la mañana!).

En general me siento seguro de que me han demostrado las tecnologías que se podrían utilizar para crear tal sistema. He demostrado que este sistema funciona en una escala de (muy) pequeña y con un poco más la experimentación podría ser ampliado a utilizar los recursos de las máquinas de una oficina. Si no llegan al punto de hacer esto yo estaría muy interesado en saber / ver si alguien más lo hace.

Conclusiones y evaluación

El siguiente paso lógico sería hacer que un ejemplo del mundo real y empezar a implementar un sistema como éste dentro de un entorno de oficina y ver qué pasa. Pedirle a un negocio que se comprometan a ello sin una compañía de abrir caminos para probar la tecnología y la eficacia puede ser un poco difícil. Grid / computación distribuida es muy popular entre algunos círculos es y tiene algunas aplicaciones de gran tamaño (BIONC, SETI @ home, Folding @ Home, etc.) No obstante, encontrar una escala más pequeña y simple sistema como este en mis búsquedas que deberán poner en marcha dentro de un entorno de oficina.

He creado un sistema básicamente gratis utilizando software de código abierto y la herramientas disponibles en casi cualquier oficina. Las tecnologías fueron demostradas y mostrar básicamente para realizar y trabajar como se esperaba. Espero que demuestran que con el trabajo no es mucho y con una configuración muy simple que usted puede implementar una red de oficinas del sistema de computación que es de gran alcance, una barata y escalable, todo al mismo tiempo.

Una vez que el sistema está en marcha y funcionando casi no hay fin a la cantidad de personalización y mejoras que puede hacer. Por ejemplo las estadísticas / evaluación comparativa se pueden añadir fácilmente que muestra el valor de dicho sistema todos los días. Las nuevas máquinas se pueden añadir de forma rápida y con la misma facilidad y cuando llegan con las actualizaciones para el hardware existente reforzar su potencia de procesamiento.

Espero que hayas disfrutado de la lectura de esta serie de artículos y su dado que pensar en el funcionamiento de un sistema de red de oficinas. La solución que aquí se presenta no necesariamente funcionará en todas las situaciones, pero debe ser adaptable para que pueda obtener su tratamiento de los datos se realizaron con su propia solución.

Por favor, no dude en enviarnos sus comentarios, correcciones o mejoras y haré mi mejor esfuerzo para mantener este artículo actualizado para que coincida.













Panorama Theme by Themocracy

6 visitantes en línea ahora
4 personas, 2 bots, 0 miembros
Número máximo de visitantes de hoy: 12 a 01:24 am UTC
Este mes: 26 en 04/04/2012 22:27 UTC
Este año: 69 en 27-02-2012 09:56 UTC
En total: 130 en 28-03-2011 22:40 UTC