Categoría: Programación Web

Enrutar las solicitudes de sitemap.xml al controlador personalizado / acción

Por , miércoles 06 de enero 2010 12:13a.m.

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

Código de ejemplo para la salida se puede ver mediante la creación de una acción en el controlador apropiado (por ejemplo mi mapa se encuentra en el controlador de índice, la acción mapa):

 < php
 clase IndexController
     se extiende Zend_Controller_Action
 {
     / **
      * Interpreta un mapa basado en 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 puede rápida y fácilmente pueden generar utilizando Zend_Navigation , un gran tutorial rápido (y en general muy útil para Zend Framework tutoriales) es Zend yesos - 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 basada en

Por , viernes 01 de enero 2010 22:40

He creado una respuesta a este cargo que requiere menos configuración, consulte Diseño de Módulo de base - Zend Framework .

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

  / Aplicación
     / Controladores
         ...
     / Modelos
     / Modules
         / Default
             / Controladores
             / Layout
                 / Scripts
             / 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 = "/ modules / member / layouts / scripts"
     affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ modules / afiliado / 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
     {
         / **
          * Establece camino trazado 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 el ayudante de acción:
      ...
         / **
          * Establece los guiones de diseño en función de cada módulo
          * /
         protegidos _initLayoutHelper function ()
    	 {
    	     $ This-> bootstrap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         nueva Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Doctrina: Hora y fecha predeterminados 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 utilizar la doctrina ORM para los modelos de mi base de datos. Tengo que configurar el esquema de lo que me permitió establecer una fecha y hora predeterminadas por un `` de la columna de fecha y hora, por ejemplo, al agregar un nuevo mensaje me da la hora y fecha actuales. 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)
     email: 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:
         discapacitados: true
   columnas:
     Identificación:
       Tipo: entero
       primaria: true
       autoincrement: true
     name: String (255)
     email: string (300)
     message: String (2000)

PHP Design Patterns - patrón Observer

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 me he decidido por el código 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 les notifica automáticamente de cualquier cambio de estado, por lo general, llamando uno de sus métodos . Se utiliza principalmente para poner en práctica los sistemas distribuidos de control de eventos.

Como los sistemas se hacen más débilmente acoplados asegurarse de que cuando un evento ocurre todos los sistemas que requieren el conocimiento de estos cambios son informados. 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, las etiquetas, los usuarios de correo electrónico suscrito, 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 los observadores (es decir, un motor de búsqueda de actualizaciones de observador, un generador de sitemap, 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 Observer' leyendo »

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 sobre todos los equipos que se sientan alrededor de cada uno y todos los días sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos usar las máquinas para reforzar el poder de transformación 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 las máquinas de las ventanas para convertirse en tiempo de inactividad los trabajadores.

La ejecución del último código

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

Hay unas cuantas formas sencillas muy fácil que podemos 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 más de un par de iteraciones.

El primer método sería simplemente conectarse a nuestro servidor de control de trabajos (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. Permite 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 nuestro último guión de transformación en la subversión revisando el código inicialmente y luego simplemente actualizar el código en cada ejecución ( 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 "Job 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 esto actualizando nuestra base de código cada vez que llevamos a cabo una carrera y la reducción de tráfico de la red sólo la transferencia de las diferencias de archivos a través de nuestra red.

En mi configuración de demostración, hice exactamente como antes. Subversion ha instalado en mi servidor de procesamiento de tareas 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 he copiado de mi tronco en la rama de los trabajadores, es decir que yo era definitivamente la ejecución del script de procesamiento más avanzada.

Utilizando los últimos datos

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

Mantenga usted caballos allí! ¿Qué pasa si mis fuentes de datos son enormes? Bueno, esto realmente es un caso de cómo los datos de cuánto estamos hablando? Puede ser más rentable la instalación de un adicional en el disco duro de mayor capacidad en cada máquina que comprar un servidor de procesamiento adicional. Esta es 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 su trabajador. En ese caso, ¿qué harías? Bien podríamos considerar llamar a un servidor de datos locales, pero esto podría causar problemas en la red. En este caso, un sistema de red de este tipo puede llegar a ser poco realista para incluir en su entorno de oficina. También puede ser que usted puede mirar en estrategias alternativas de funcionamiento, por ejemplo, sólo llamando a sus trabajadores 8 p.m.-06 a.m. cada noche y / o limitación de peticiones origen de datos.

Pasando digamos que nuestra cantidad de datos de fuentes de 100 GB de datos. Bueno, sí que es un poco de datos para moverse por la red en una actualización. ¿Cómo nos aseguramos de tener 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 larga y bonita) podría ser el camino a seguir:

replicación Mediante el establecimiento de cada uno de sus trabajadores como un esclavo de las actualizaciones del servidor de control de trabajo de sus fuentes de datos tengan un efecto positivo muy bien a sus trabajadores sin un gran incremento en la actividad de red (es decir, a menos que realice una actualización de datos de gran tamaño y de todos sus trabajadores una patada en a la vez). Esto tiene ventajas sobre rsync en que no tendría una larga pausa antes de cada trabajo, como las actualizaciones de base de datos, 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 Inicial replicar el control de trabajos servidores de conjunto de datos. Por cada trabajador adicional de la configuración de la 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 que 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 el mismo archivo.Una También hablamos sobre cómo 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í, zona que permite que mantengamos con la lógica de negocios e información en nuestro sistema de red de oficinas. Habrá, obviamente, innumerables alternativas para realizar estas tareas, pero en este caso fueron dos ejemplos simples para demostrar cómo es fácil es una solución de conseguir.

La próxima vez

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 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 sobre todos los equipos que se sientan alrededor de cada uno y todos los días sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos usar las máquinas para reforzar el poder de transformación 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 ejecutará, y el número 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.

La creación de su trabajador - o servidor LIMP

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

  • Instalación de 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í va una: Creación 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 de cliente y el sistema operativo vaya no hay ninguna razón convincente grandes 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 es 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 "el uso más rápido y más fácil para usted" mentalidad de aquí), así que si el sistema operativo X se ejecuta su código más rápido y más eficiente uso que en su lugar:)

Importante asegurarse de que su máquina virtual utiliza DHCP, de lo contrario para cada máquina virtual nuevo tendrá 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 mano IPs para usted. Por lo tanto, puede copiar la máquina virtual de la oficina sin tener que preocuparse sobre la configuración de cada uno hacia arriba (esto mejora la escalabilidad y reduce la administración de los trabajadores).

El proceso que se debería tratar de lograr sería la de obtener una máquina física nueva, instalación de VirtualBox, y luego más o menos implementar la imagen virtual sin necesidad de mucho más. Podría ser conveniente para la configuración de todos sus trabajadores en una subred diferente para que pueda al menos ver cuántas máquinas están en funcionamiento. 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 la que 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 de los dos más evidentes:

  • Perpetuamente 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 descuento a este método como un accidente de la escritura y, potencialmente, a sus trabajadores dejarán de funcionar sin algún tipo de intervención.
  • La ejecución de cron script basado: cada X minutos el demonio cron se inicia una llamada al script para que funcione. Sin algunas comprobaciones que esto podría dar lugar a muchas muchas copias de sus ejecutar el script de los trabajadores.

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

  1. Obtener una lista de procesos y grep para este '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 en PHP
  3. Guión trabajador termina su ejecución
  4. Listo para volver a la llamada 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 "Job está procesando, la salida"
 más
     echo "El trabajo no se ejecuta, comienza ahora"
     php yourJobProcessingScript.php
 fi 

Nota: se hacen eco de la 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 de trabajo virtual, rápido, sencillo y fácil de copia a cada nueva pieza de hardware que se recibe. La "inteligencia" del sistema de red realmente no es visualizada en el sistema operativo, es 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 ).

La 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 ha llamado a su trabajador GridMachine el comando para cargar a 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 utilizar:

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

Esto iniciará la máquina virtual sin la interfaz gráfica de usuario y permitir que se guarde el estado 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 -> 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 su guión 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, Windows le pedirá que desea ejecutar esta tarea, te sugiero que 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 seleccione Mostrar opciones avanzadas para esta tarea.

Para el final de la caja de texto ejecutar añadir nuestro "startvm GridMachine 'cadena y asegurar que sólo se ejecutan cuando se conecte se queda sin marcar. Visite el siguiente horario de trabajo y cambiar el horario de bajar a la opción 'cuando está en reposo ", elija la cantidad de tiempo que le gustaría que la máquina se espera antes de pasar a la siguiente ficha.

Por último, desmarca la opción que establece 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.

horario

Que es continuación de la configuración del host de Windows!

Resumen

En esta parte hemos creado una máquina virtual para que actúe como un trabajador, así como la forma en que nos llame y ejecutar scripts de procesamiento de los 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 se reanuda el uso de la máquina. Esperemos que en este momento estás viendo lo fácil que es crear un sistema y están ansiosos por conseguir algunos experimentos se va!

La próxima vez

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 datos, de modo que los resultados obtenidos están 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 sobre todos los equipos que se sientan alrededor de cada uno y todos los días sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos usar las máquinas para reforzar el poder de transformación 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 uso todos los días 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 lograr esto pudiera no ser cierto todo el artículo que voy a cambiar las cosas para la simplicidad, o para producir escenarios de uso más interesante.

Estos entornos virtualizados se pueden ejecutar en máquinas Windows ya que es lo que la mayoría de las oficinas de ejecutar. 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 fácil de desplegar nuevas máquinas a medida que estén disponibles. Además, las nuevas máquinas virtuales no deberán exigir ningún tipo de configuración adicional, ya que reduce en gran medida la escalabilidad y la facilidad con la que puede ser el sistema de red extendida.

¿Por qué implementar un Grid Computing Office?

En primer lugar usted puede estar pensando, ¿por qué no usar un recurso de computación en la nube como plataforma de Amazon EC2 ? Bien 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 computación en la nube 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 cerca y tener un control total sobre el hardware también
  • 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
  • Que no le gusta la lluvia, las nubes indican 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 un Grid Computing Oficina

Bueno, vamos a hacer algo de matemáticas (y en cierto estilo de la física le permite hacer algunas suposiciones de barrido). Imagine que tiene gran servidor de procesamiento fornido funcionamiento 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% más potente que el procesamiento de romper fornido. (Todos los resultados aquí están redondeadas a subestimar aumentar el rendimiento).

Por lo tanto, una potencia de la máquina * 10% * 2 / 3 = 0,067 es decir, el tiempo de procesamiento de un escritorio en el tiempo de inactividad podría proceso de seis puestos de trabajo completo por día.

Si ahora la escala esto se requieren 15 computadoras de escritorio ociosa para procesar tantos puestos de trabajo por día, como su servidor de procesamiento principal lo hace.

Así, en nuestra oficina pretender de 50 máquinas podríamos aumentar nuestra capacidad de procesamiento de un 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, por no invertir en nuevo hardware de su empresa acaba de aumentar su capacidad de procesamiento por lotes 4 veces! Potencialmente se va a aumentar su consumo de energía, sino de la mayoría de entornos de oficina que han estado en las máquinas en general, a la izquierda en la noche de todos modos, por lo que podría ver esto como una iniciativa ecológica.

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

Tecnologías

Lo que usted necesita? (O más bien lo que hizo que yo uso):

  • Máquinas de oficina de inactividad (en mi caso un repuesto viejas ventanas portátil XP)
  • VirtualBox (u otro software de cliente de virtualización)
  • Una máquina virtual con PHP, MySQL running ejecutando un sistema operativo reducido, estoy llamando a estos servidores de mi cojera:)
  • Los trabajos se ejecuten
  • Trabajo de servidor (puede ser otra máquina virtual en alguna parte)

Empleos típicos

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

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

Así que, básicamente estamos viendo ejecución de trabajos que requieren una combinación de búsquedas de bases de datos y un cálculo de números, un escenario bastante común en un entorno empresarial.

Soluciones de redes no sólo son ventajosas para el procesamiento de 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 informáticas, y que estos 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 oficinas no tiene que ser mucho muy costoso o de tiempo. Voy a hablar:

  • Configuración del sistema de control de trabajos, trabajo de configuración
  • La creación de una máquina de procesamiento virtual correspondiente
  • ¿Cómo configurar el sistema en una máquina Windows
  • Asegurar que está utilizando la última versión del código y los datos
  • Implementación y evaluación comparativa
  • De cara al futuro

Voy a ser la construcción (bueno he construido, y luego escribir esto) un ejemplo de aplicación 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 totalmente funcional robusta, su significado más de una manifestación y discusión que muestra que estas cosas se puede lograr en un espacio relativamente corto de tiempo ya un bajo costo. Por favor, no dude en enviarnos sus comentarios, correcciones o mejoras y que voy a hacer mi mejor esfuerzo para mantener este artículo actualizado para que coincida.

La próxima vez

En la parte 2 Voy a empezar por mirar el sistema de control de trabajo, y buscar la forma en que los trabajos deben estar configurados 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 sobre todos los equipos que se sientan alrededor de cada uno y todos los días sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos usar las máquinas para reforzar el poder de transformación 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.

Trabajo de control

Si usted va a estar ejecutando trabajos, entonces vamos a necesitar alguna forma de manejarlos. Su sistema de control de trabajos (en el servidor de trabajo) tiene que ser muy bien pensado antes incluso de intentar hacer funcionar una red de oficinas. Así que en primer lugar, ¿cuáles son las tareas de un sistema de control de trabajo:

  • Trabajos de la mano a cabo a petición de los trabajadores
  • Dígales a los trabajadores qué tipo de trabajos se ejecuten
  • Seguimiento de los trabajos
  • Asegurar que los trabajos sólo se ejecutan 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 se puede extender para ejecutar varios tipos de puestos de trabajo como las empresas ven el valor en una solución de red. Por ejemplo, los trabajos pueden ganar las 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 aleja de los trabajadores "genéricos 'idea). Siempre trato de pensar en el futuro en 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 el control de nuestros puestos de trabajo a partir de, 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 necesitan saber dónde buscar empleo, los trabajadores necesitan para encontrar el sistema de control de trabajo (no el sistema de control de trabajo encontrar a los trabajadores).

El servidor de trabajo en sí no tiene realmente una tarea complicada (en un sistema básico de todos modos), que necesita para 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 (tales como "mano puestos de trabajo") se definen pueden ser muy básicos. 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 luego de que su servidor de trabajo no podía ser una máquina virtual que se ejecuta en el servidor de procesamiento principal, siempre que no agotar los recursos de muchos de él. El servidor de trabajo sin embargo es necesario una alta disponibilidad, si se cae en un viernes por la noche que va 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 se puede ejecutar mediante la interacción con bases de datos con el trabajo del sistema de control. Más adelante se podría crear un servicio web y en realidad la mano de 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, Estúpido!).

Por lo tanto, vamos a crear tres mySQL tablas para hacer frente a puestos de trabajo. Estos puestos de trabajo será ``, `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 ven: 10 grandes alternativas a phpMyAdmin )

Esta tabla se compone de 5 campos de simple,

  • Identificación: identificar de forma exclusiva el trabajo
  • Nombre: Podría ser una referencia de 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: Completado
  • started_by: ¿Quién empezó a hacer el trabajo? Esto no es del todo necesario, pero es un agradable de tener. Te sugiero que los trabajadores de seguimiento de su dirección IP en la red
  • started_at: ¿Cuándo el trabajador inicie el trabajo? Mediante el seguimiento de los trabajos que no hayan completado dentro de X cantidad de tiempo que sabemos que tenemos que recoger el trabajo de nuevo y empezar a procesar por otro trabajador. Los trabajadores podrían dejar de procesar / fuera de línea para cualquier número de razones, falta de luz, accidente, pérdida de red, etc

Es fácil cómo esta tabla podría ser ampliado con un campo adicional para permitir que unos pocos para 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 de los trabajos, la lista puede seguir y seguir. En los escenarios de trabajo más complejo que sería posible especificar la cantidad de memoria que el trabajador tendría que tener acceso a (y por lo tanto, sólo el uso adecuado de trabajadores), o incluso qué tipo de trabajador se requiere.

Permite añadir un ejemplo algunos trabajos:

puestos de trabajo 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 en una columna `jobs_id`. La composición de esta tabla depende mucho de los datos que debe proporcionar a sus trabajadores, vamos a hacer un ejemplo muy simple, donde tenemos cuatro columnas:

  • id: identificador del registro
  • Nombre: nombre de la persona
  • Dirección: Dirección de la Persona
  • jobs_id: El ID de la tarea que este disco está ligado a

La tabla de la tercera y última consiste en una tabla de resultados, tiene mucho de la misma marca hasta nuestra mesa, como los registros, y con la adición de algunas columnas pueden ser parte de la tabla de registros:

  • job_record_id: Enlace el resultado a la mesa de trabajo
  • Resultados: Los datos de resultado

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

Selección de un trabajo

Como se mencionó anteriormente, los trabajadores a hacer nuestra gestión de trabajo por nosotros, por ahora, así que todo lo que necesitamos realmente es encontrar un trabajo que las necesidades de procesamiento y obtener la información. ¿Cómo hacemos esto? Así recoger los criterios de selección de empleo y buscar trabajo en SQL hice lo siguiente:

  1. Tomar cualquier trabajo que no están marcados como completa, pero a partir de nuestros trabajadores y recuperar los (sustituto __ME__ con un identificador más fácil, sería la dirección IP):
     ACTUALIZACIÓN `puestos de trabajo` SET `estado` = 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:
      ACTUALIZACIÓN `puestos de trabajo` SET `estado` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `estado` = 0 o
     (`Status` = 1 `Y` started_at> DATE_SUB (NOW (), intervalo de una hora X)) ORDER BY `id` ASC; 

    Por el acaparamiento de puestos de trabajo que no han arrojado resultados en X cantidad de tiempo que nos aseguramos de que todos los trabajos se ejecutan en el caso de un trabajador de chocar o ir sin permiso.

  3. A continuación tomar los datos 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 insertamos nuestros registros de resultados y marca el trabajo lo más completo. Recuerde que como puestos de trabajo puede suspender / reanudar en cualquier momento y permitir cierta solidez en su guión. Puede ser que la tarea suspende la mitad del camino a través de la actualización del sistema de control de trabajo, así que comprobar el número de registros en un puesto de trabajo y el número de resultados vuelve a guardar en el sistema de control de trabajo sería un acierto.

Además, si bien esto demuestra cómo los trabajos pueden ser seleccionados y administrados desde un marco de consulta SQL que realmente debería ser la abstracción 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 por encima de ella.

Trabajo de configuración

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

  1. Puestos de trabajo tome un día cada uno para funcionar: esto significa que sus trabajadores necesitan 15 días para procesar cada trabajo (recuerde que el 10% de la energía para 2/3rds de la época). Claramente esta 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 por lo menos un trabajo de jornada completa fácilmente aclarado por el final de cada período de inactividad larga, 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 que los primeros van a faltar.
  2. Puestos de trabajo tome un minuto para correr: Esto significa que los trabajadores toman unos 15 minutos para ejecutar cada trabajo. Si bien este principio puede parecer ideal, ganancia de procesamiento 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 / procesamiento relación de tiempo que va a ir a la derecha hacia abajo, por lo tanto perder la eficiencia del sistema. La red va a ser constante flujo de información de trabajo para el personal de los trabajadores de varios frustrantes que son dong su día a día. También vas a poner más presión sobre el servidor de procesamiento de trabajos ya que tiene que repartir los lotes y lotes de pequeñas piezas de trabajo sobre una base regular. Por último, en esta situación si el servidor de trabajo de baja que va a crear un registro de vuelta enorme de trabajo no realizado, mientras que trabajos más grandes de la continuación de procesamiento podría 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 tiempo de respuesta, capacidad de 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 plazo de 15 horas (el período más largo posible el tiempo de inactividad)
  • Jugar con el tamaño del trabajo a fin de que el tiempo de preparación será bastante insignificante en comparación con el tiempo de procesamiento (teniendo en cuenta el punto anterior).
  • Si un trabajo no termina en el doble de la cantidad de tiempo (tal vez menos) que espera que se complete que suponer que su pasado sin permiso y comenzar a procesar con otro trabajador. Esto significa que usted puede tener que esperar hasta tres veces la duración 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 tenga cuidado de no reducir demasiado, ya que puede comenzar a duplicar las tareas de procesamiento en una base regular.
  • Puestos de trabajo 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 se agote el tiempo un problema que sólo va a empeorar a medida que la escala de su red.
  • Garantizar puestos de trabajo se puede ejecutar en sus trabajadores. Si los trabajos son demasiado espacio de memoria puestos de trabajo intensivo o intensivo del disco comenzará a abortar y lo único que notará es una caída en el número de trabajos procesados ​​sin razón real por qué.

Resultados de la presentación de un trabajo

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

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

Como se indicó 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 es que) entrar en el modo de suspensión en la mayoría de los inconvenientes de los tiempos y esto debe ser atendido. Además, una vez más abstracción de su presentación resultados ayudarán a atender a futuros cambios en su sistema de control de trabajo mucho más fácil de tratar.

Resumen

En este seccion_a hemos visto qué 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
  • Mediante la abstracción de su trabajo de selección / resultados de la presentación podemos cambiar la tecnología del servidor de control sin problemas mucho
  • Configure su 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 las tareas de procesamiento en una base regular.
  • Asegúrese de que construir la tolerancia a fallos y checking error en su rutina, los trabajadores pueden suspender y reanudar la mayoría de los inconvenientes de los tiempos. Recuerde que debe comprobar si los resultados han sido presentados por otro trabajador.

La próxima vez

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

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 sobre todos los equipos que se sientan alrededor de cada uno y todos los días sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos usar las máquinas para reforzar el poder de transformación 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 garantizar que se está ejecutando la última versión de las fuentes de código y datos, de modo que los resultados obtenidos están siempre al día con la última información de negocio y la lógica.

Antes del despliegue

Antes de implementar su sistema de red, si hay una cosa que hacer y solo una 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 que lo respalden sus garantías no son otra cosa. Por lo tanto,

  • 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 capacidad tiene?

También hay otras preguntas:

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

El punto principal es pasado a tomar su tiempo en cualquier cambio de esta envergadura. Actualizar el código de procesamiento para trabajar con la nueva metodología de referencia, una vez más. Es posible configurar el servidor de procesamiento para ejecutar una máquina virtual, después de todos los servidores de procesamiento sólo será otro de los trabajadores (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 puesta en marcha. ¿Es esto justo antes de vacaciones de dos semanas y dejar lo demás pobre hombre para hacer frente a las consecuencias ... tal vez no ...

De 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, controlar el tráfico 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 instalado con unas pocas máquinas (digamos 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 está al menos en este estadio. Si no es así, investigar lo que está pasando antes de seguir adelante. Repita este ciclo hasta que felizmente tiene todas las máquinas de oficina funcionando sin matar a rendimiento de la máquina individual o molienda de la red a un punto muerto.

Mantener en todo momento la evaluación comparativa, incluso después de todas las implementaciones se hacen. Comprobar cómo las nuevas actualizaciones del código afectan a la velocidad de su sistema, compruebe todos los trabajadores de informes y procesamiento de puestos de trabajo. Poco a poco (muy lentamente) el incremento de su configuración de trabajo para obtener lo mejor de sus trabajadores y de la red.

¡Alto!

¿Qué pasa si desea detener la ejecución de sus trabajadores en algún momento? Todos ellos están por ahí en funcionamiento, la regeneración, y haciendo todo lo posible para procesar los datos, como los insectos hambrientos. La respuesta puede parecer obvia pero vale la pena añadir en caso de su pasado por alto. Sólo tiene que editar el script de procesamiento con un exit (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 controlar 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 del 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 establecido como un servidor de control de trabajos. En esta había instalado mySQL instalado el servidor configurado como un maestro en la replicación, PHP , Â y SVN vinculados a través de apache (para el acceso a través de los trabajadores VM).

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

La máquina virtual creada con PHP, la subversión y mySQL. He comprobado una rama llamada "trabajador" de mi trabajo de control de los servidores de repositorio y se aseguró de que podría ser actualizada con 'svn update'. La próxima configuración de MySQL como un esclavo y verificar que los datos se replica a partir de MySQL en el servidor de control de trabajos hasta el VM de los trabajadores. Después de todo esto tengo que instalar el script y el trabajo cron.

Mi script de procesamiento prácticamente seguían las líneas de este (cosas muy simples):

  • Leer en el campo de nombre
  • Contó el número de nombres similares en una mesa de la fuente de los datos almacenados 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 trabajo tardó aproximadamente 20 minutos en ejecutarse. En un momento me abrió varias copias de la máquina virtual de trabajo en la computadora portátil ventanas y observó los trabajos se marcó en cada una de las direcciones IP de los trabajadores. En este punto, también confirmó que la replicación se reinicia automáticamente.

Dejando el portátil al ralentí como resultado un trabajador de comenzar a procesar trabajos desde el servidor de control de trabajo. Cuando se reanuda el uso de ordenador portátil se produjo un retraso de alrededor de 30-60 segundos, se trata de una buena cantidad de tiempo y 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 máquinas más nuevas pueden no tener una pausa de tanto 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 tener que esperar un período corto (1 minuto), al llegar a sus máquinas de la mañana (que con frecuencia esperar más que esto para un Windows Defender actualización tenga lugar), siempre y cuando se enteraron de esto (el tiempo útil para tomar un café por la mañana!).

En general me siento seguro de que me han demostrado las tecnologías que podrían utilizarse para crear un sistema. Me han 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 lo hago llegar al punto de hacer esto estaría muy interesado en saber / ver si alguien más lo hace.

Conclusiones / evaluación

El siguiente paso lógico sería hacer que un ejemplo del mundo real y empezar a implementar un sistema de este tipo 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. La red / 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 lo hice, sin embargo, encontrar una escala más pequeña y simple sistema de este tipo en mis búsquedas que podría ser lanzado dentro de un entorno de oficina.

He creado un sistema básicamente libre con software de código abierto en su mayoría y las herramientas disponibles en casi cualquier oficina. Las tecnologías se demostraron, básicamente, y mostrar el trabajo a realizar y 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, baratos, Â y escalable, todo al mismo tiempo.

Una vez que el sistema está en funcionamiento casi no hay fin a la cantidad de personalización y mejoras que puede hacer. Por ejemplo las estadísticas / benchmarking puede ser fácilmente añadido que muestra el valor de este 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 mejoras en el hardware existente reforzar su poder 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 hace uso de su propia solución.

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

Zend Framework: Fundamentos - Revisión

Por , el sábado 28 de noviembre 2009 22:42

Mi empleador ha pagado recientemente por un grupo de nosotros a los desarrolladores tomar el Zend Framework: Fundamentos supuesto, aquí voy a resumir mis ideas y opiniones en el curso de los demás. Para aquellos que buscan ahorrar tiempo, aquí está mi resumen:

Para los desarrolladores que no han tenido tiempo de mirar el Zend Framework este curso (Zend Framework: Fundamentos) ofrece una buena imagen global del marco de la introducción a las áreas clave y dar información suficiente para poder continuar. Para aquellos que han pasado tiempo buscando en el marco y han seguido uno o dos tutoriales este curso no ofrece mucho más allá.

Fondo

He sido un PHP desarrollador de alrededor de 5-6 años, y han comenzado a trabajar con el Zend Framework en función de los componentes en los últimos 6 meses. He desarrollado y / o ha sido un promotor en un par de pequeños Zend Framework MVC sites. Voy a ser honesto, no he tenido una enorme cantidad de exposición a otros marcos desde un punto de vista de la codificación, pero han pasado varios horas investigando los sitios web del proyecto y la evaluación de them.â El marco y la comunidad circundante Zend Framework es muy interesante y parece que hay grandes posibilidades de que su marcha.

Sobre el Curso

El curso se imparte dos horas más de 9 sesiones WebEx (con un descanso de 10 minutos en el centro). El tiempo se dedica a pasar por una serie de diapositivas proporcionadas por Zend con la discusión en cualquier momento. Usted puede utilizar un micrófono para hablar con el instructor, pero para ser sincero, no vi a nadie usar algo más que la ventana de chat. Además de una máquina VMWare Ubuntu es a condición de que haya un código de ejemplo y los proyectos de crear una versión de prueba de un Zend Studio. Las conversaciones director del curso a los asistentes ya sea a través de una solución integrada de VoIP, o puede marcar en el uso de uno de los muchos en todo el mundo en marcar los números.

Durante el curso el material se compone de una breve descripción del marco y el patrón MVC, antes de dirigirse a una aplicación de ejemplo el libro de visitas. El debate demostró bootstrapping, Zend_Application, tablas de BD, el acceso a bases de datos, formularios, filtrado, ACL, validación, etc, etc Básicamente, cubriendo todos los temas que le requieren para obtener un sitio básico hasta uno corriendo todo el tiempo que le da las herramientas para ir a buscar más avanzados en el marco (aunque esto se suma al 'Ver la página web de' la mayor parte del tiempo).

El tiempo se le da al código hasta algunos ejemplos, y para desarrollar el "libro de visitas y de sencilla aplicación" wiki ". Personalmente sentí que proporciona el código o la aplicación de cada uno y luego nos piden para desarrollar lo que era esencialmente una copia junto realmente no ofrecen una buena experiencia de aprendizaje. Yo hubiera preferido para desarrollar una aplicación similar, pero no idénticos. a la aplicación de ejemplo con el beneficio de tener una guía de referencia. Alternatively building the applications from scratch with the demonstrator would of possibly led to more questions about why and how , thus giving a better understanding of the framework, after all you can look up specifics after the course.

The last lecture consisted of working on the wiki application with help/guidance from the instructor. After the course feedback was taken, it was emphasised several times through the course that Zend takes feedback very seriously, in fact apparently our version of the course was quite new. Some of the other developers in the company will be taking the course soon so it will be interesting to see if this has happened.

The course style was informal, allowed for feedback and collaboration between attendees and the instructor. The course leader was friendly, approachable (email addresses were shared for questions), and whilst his presentation from the slides was a bit shaky seemed fully competent in the framework. He was clearly someone who used the framework on a regular basis rather than someone who is taught to teach the course, I liked the 'real world' experience in that respect.

Overall Feeling

In some ways I found the course a waste of time, in others it was very handy. Hopefully I'll get my reasons across clearly, and maybe provide some food for thought or useful feedback (knowing me this is unlikely!).

For myself this course was aimed at too low a level. Having gone through the quickstart guide, read Rob Allen's Zend Framework in Action, and worked with the framework a little I didn't really get anything too much. I would of liked the course to pick up from the end of the quickstart and develop additional skills.

That said, the course title does clearly state “Zend Framework: Fundamentals ” and in that aspect the course achieves what it sets out to do. Other members of the development team that haven't spent the time looking into the framework finished each session with enthusiasm and asked questions which was really nice to see.

All was not lost, it was good to spend time confirming the basic details of the framework and get to ask a couple of questions in areas where I wasn't 100%. It was also time that I got to sit down each day and think about coding using the framework and future projects, something I wouldn't of been able to do otherwise (can you imagine your company agreeing to that? :) ). Last but not least you also get a nice certificate from Zend to say that you attended the course (albeit by email).

Zend Framework Certification

This was one question that kept coming to mind during the course, would it prepare me for the certification? The quick, easy is a resounding No . The course instructor was quite clear on that with the additional advice that for the certification you should really be using the framework on a day to day basis and feel very comfortable and confident in its usage and methodologies.

Resumen

Given everything I've written above, I'll summarise everything in two easy bullet points:

  • New to Zend Framework: This course does exactly what you'd expect, it gives you a nice introduction to the framework and a good grounding on the basics from which you can build. The course seems to generate interest and enthusiasm for the framework amongst developers.
  • Used the Zend Framework: While it was nice to shore up some of the very basics I felt the time, effort, and funds to take the course could of been better spent elsewhere. It will be nice to see Zend create a new higher level course to take developers to the next level – at least to the standard of certification and beyond. For that I would sign up immediately.












Panorama Tema por Themocracy

10 visitantes en línea
6 personas, 4 bots, 0 miembros
Max visitantes de hoy: 18 a las 03:51 am UTC
Este mes: 47 en 10/03/2011 14:47 UTC
Este año: 130 en 28-03-2011 22:40 UTC
En total: 130 en 28-03-2011 22:40 UTC