Posts tagged: base de datos

Office Computing Reixa utilización de ambientes virtuais - Parte 4

Por , venres 04 de decembro de 2009 11:59

Introdución

Eu traballo nunha empresa na que corremos moitos traballos en lote procesar millóns de rexistros de datos de cada día e eu estiven a pensar recentemente sobre as máquinas que se sentan ao redor de cada día sen facer nada durante varias horas. Non sería bo se puidésemos utilizar esas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou ollar para os potenciais beneficios da contratación dunha oficina de reixa utilización de ambientes virtualizados.

Na parte 3 , creamos a nosa máquina de procesamento virtual e configurar o Windows para facer máquinas de tempo ocioso dos traballadores.

Executando o código máis recente

Inevitablemente, despois de crear a súa lóxica de negocio traballadores vai cambiar, erros serán atopados, código máis rápido máis eficiente será producido deixando os seus traballadores sentados ao redor de procesamento de datos usando código smelly vello . Como entón asegurar que estamos sempre a través da versión máis recente e maior dos nosos scripts de procesamento?

Hai algúns moi fáciles formas simples que poderiamos facelo, o truco, con todo, é reducir o poder de procesamento e tráfico de rede para alcanzar isto. Imos comezar a máis simple das solucións e melloralas lo lentamente ao longo dun par de iterações.

O primeiro método sería simplemente conectar co noso servidor de control de traballo (vía samba, FTP, ou similar) e tire abaixo a versión de código. Non é moi eficiente, pero vai facer o traballo. Permite mellorar iso un pouco, como sobre a creación dun guión rsync e utilizar ese tempo cada vez? Alternativamente o que sobre a colocación do noso script última transformación en subversión comprobar o código inicialmente e despois é só actualizar o noso código en cada run ( svn update )?

Ao final, pode acabar cun guión bash (chamado polo cron cada 10 minutos), que parece tan sinxelo coma isto:

  #! / Bin / sh
 se ps ax | grep-v grep | grep php > / dev / null
 entón
     echo "Job está a procesar, de saída"
 outro
     echo "O traballo non está en execución, comezar agora"
     cd / ruta / a / traballo / copia
     svn update
     php yourJobProcessingScript.php
 fi 

Agora podemos estar seguro de que cada rolda estamos sempre en execución o código máis recente. Estamos garantindo que a actualizar a nosa base de código cada vez que facemos unha carreira e reducindo o tráfico da rede por trasladar só as diferenzas de arquivo en toda a nosa rede.

Na miña configuración de demostración, eu fixen exactamente como descrito anteriormente. Subversion foi instalado no meu servidor de procesamento de traballo e eu simplemente tirou o último código dun "traballador" filial usando 'svn update'. Eu tamén engade unha etiqueta número de versión para o meu programa de procesamento que foi devolto á base de datos como parte do retorno de resultados. Desta forma, puiden ver que o meu código estaba sendo actualizado cada vez que eu copiei o meu tronco no ie sector de traballo que eu estaba sempre executar o script máis recente de procesamento.

Empregando os datos máis recentes

O procesamento do traballo fai uso de fontes de datos, a continuación, nalgún momento estes van ser actualizados. A menos que chamar as súas fontes de datos en unha base moi frecuente vai inundar a rede con tráfico así que os traballadores comezan a correr levando todo a un impasse. Para a miña solución, decidín que me gustaría pasar miñas fontes de datos de todo coas miñas VMS.

Manteña vostede cabalos alí! E se as miñas fontes de datos son enormes? Ben este é realmente un caso de que a cantidade de datos que estamos a falar? Pode ser máis rendible para instalar un maior disco duro adicional en cada máquina que mercar un servidor de procesamento adicional. Esta é unha cuestión de orzamento e ata a empresa para decidir. Poida que sexa a que as súas fontes de datos son tan grandes que non é máis inviábel para manter esa cantidade de datos nas súas máquinas de traballo. Nese caso o que faría? Así, poderiamos mirar para chamar a un servidor de datos local, pero iso pode causar problemas coa rede. Neste caso un sistema de rede, como iso se pode facer irrealista para incluír no seu ambiente de escritorio. Pode ser tamén que podes ollar para estratexias alternativas de execución, por exemplo, só chamar seus traballadores oito horas - seis horas cada noite e / ou optimización de solicitudes de datos de orixe.

Seguindo adiante, imos dicir os nosos datos cantidade de fontes de 100GB de datos. Ben, si que é un pouco de datos para se desprazar na rede nunha actualización. Como é seguro que temos a copia máis recente dos datos neste caso? Rsync é unha posibilidade, pero persoalmente creo que, executando o seu último fonte de datos no servidor de procesamento de traballo e como facer esa configuración como un mestre na replicación (cun ​​rexistro bin bo tempo) pode ser o camiño a seguir:

replicación Ao definir cada un dos seus traballadores como un escravo para o traballo actualizacións do servidor de control das súas fontes de datos pode escorrer ben aos seus traballadores, sen un gran aumento na actividade da rede (que é a menos que executar unha actualización de datos enorme e os seus traballadores entran en acción dunha vez). Isto ten vantaxes sobre rsync en que non ía estar unha longa pausa antes de cada traballo, como as actualizacións da base de datos, o mysql servizo no seu traballo continuamente actualizar os seus datos, o procesamento continúa.

Isto é como eu configurar o meu servidor de demostración. Para configurar a replicação seguín a guía no sitio web de MySQL ( Configurar replicación ) e en 20 minutos eu tiña o meu traballo inital replicar o traballo de control conxunto de datos servidores. Para cada traballador adicional a configuración de replicación e proceso de traballo cada vez que a máquina virtual foi copiado.

Resumo

Nesta sección do artigo vimos como é doado e indolor e para manter o seu código de procesamento ata a data por using rsync ou subverion (SVN) para facer o traballo e reducir o tráfico de rede no mesmo time. Tamén discutir como para manter as súas informacións de fonte de datos up-to-date, permitíndolles a escorrer para cada un dos seus traballadores. Así, área que garanta a manter-se coa lóxica de negocio e información no noso sistema de rede da oficina. Non será, obviamente, moitas alternativas para a execución destas tarefas, pero aquí foron dous exemplos sinxelos para mostrar como é fácil solución está por vir.

Próxima vez

Na parte final desta serie, apropiadamente chamado Parte 5 , imos discutir a implantación deste sistema para. Vou resumir o que foi aprendido eo que eu puiden crear.

Office Computing Reixa utilización de ambientes virtuais - Parte 1

Por , venres 04 de decembro de 2009 11:23

Introdución

Eu traballo nunha empresa na que corremos moitos traballos en lote procesar millóns de rexistros de datos de cada día e eu estiven a pensar recentemente sobre as máquinas que se sentan ao redor de cada día sen facer nada durante varias horas. Non sería bo se puidésemos utilizar esas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou ollar para os potenciais beneficios da contratación dunha oficina de reixa utilización de ambientes virtualizados.

Como PHP desenvolvedor vou usar as ferramentas que eu uso todos os días, ou sexa, Linux, MySQL , PHP, VirtualBox e Subversion (SVN). Con todo, eu espero que esta guía pode adaptarse a outras linguaxes e tecnoloxías tamén.

A solución que fornecer serán moi vagamente baseado no tipo de procesamento que sería necesario para conseguir, pode non ser verdade a través de todo o artigo como eu vou cambiar as cousas para a simplicidade, ou para producir escenarios de uso máis interesantes.

Estes ambientes virtualizados serán executados en máquinas Windows porque é o que a maioría das oficinas executado. O tratamento que as máquinas de oficina non debe interferir co persoal utilizando esas máquinas, deben non necesitan de mantemento na máquina, e ser facilmente salientable para novas máquinas que estean dispoñibles. Ademais, novas máquinas virtuais non debe esixir calquera configuración adicional, xa que reduce a módulos ea facilidade con que o sistema de rede pode ser prorrogado.

Por que implantar un Grid Computing Office?

En primeiro lugar, pode estar a pensar, por que non usar un recurso de computación en nube como plataforma EC2 de Amazon ? Ben, as razóns poden ser varias, por exemplo:

  • Non vai confiar certos datos para un ambiente de computación en nube
  • Non podes poñer algúns datos nun entorno de cloud computing, por motivos legais (por exemplo, datos de deixar o país), potencialmente, por razóns legais, por exemplo, os rexistros do SNS.
  • Vostede quere manter as súas unidades de procesamento de pechar e ten control total sobre o hardware tamén
  • Non ten os fondos do proxecto de execución de instancias de nubes
  • Súa oficina non ten unha conexión a internet e, por tanto, que non é posible utilizar un recurso de nube
  • Non gusta de choiva, nubes de chuvia suxiren, polo tanto, a manter moi lonxe

Estou seguro que a lista podería continuar, pero eu creo que é suficiente polo de agora.

Vantaxes dun Grid Computing Oficina

Ben, imos facer algunha matemática (e ao grande física realidade imos facer algunhas suposicións ampla). Imaxina que ten de procesamento do servidor gran executando beefy 100 postos de traballo ao día. Na súa oficina, ten 50 máquinas que están ociosos 16 horas ao día, cada unha destas máquinas é do 10% tan poderoso como o seu Sever procesamento robusto. (Todos os resultados aquí son redondeados a subestimar aumento de rendemento).

Así, unha máquina de poder do * 10% * 2/3 do tempo = 0,067 é dicir, procesamento escritorio 1 o tempo ocioso pode procesar 6 prazas de emprego completas por día.

Se agora escalar isto leva 15 escritorios ociosos para procesar traballos como moitos por día como o seu servidor de procesamento principal fai.

Así, na nosa oficina finxir de 50 máquinas, poderiamos aumentar o noso poder de procesamento a partir do 1 servidor ata 4 servidores de procesamento pleno, ou poderiamos estar procesar 400 empregos ao día en vez de 100.

Aviso previo, por ningún investimento en hardware novo a súa empresa acaba de ampliar a súa capacidade de procesamento en lote 4 veces! Potencialmente vai aumentar o seu consumo de enerxía, senón da maioría dos ambientes de escritorio que estiveron en máquinas son xeralmente deixadas pola noite de calquera xeito, así que podería ver isto como unha iniciativa verde.

Outras vantaxes tamén significa que o investimento en novas (ou actualizado) servidores de procesamento pode ser adiada se as máquinas da súa oficina son suficientes e que, como mellorar o poder das súas máquinas de oficina a súa reixa oficina faise máis poderosa automaticamente.

Tecnoloxías

O que precisa? (Ou máis correctamente o que eu uso):

  • Ociosos de máquinas de oficina (no meu caso un libre de idade fiestras portátil XP)
  • VirtualBox (ou outro software de virtualización de cliente)
  • Unha máquina virtual con PHP, MySQL running executando un corte OS, eu estou chamando eses servidores meus Limp :)
  • Traballos para seren executados
  • Servidor Job (pode ser outra máquina virtual nalgún lugar)

Empregos típicos

Tipo de emprego que este sistema está deseñado para executar é o seguinte:

  • Sistema recibe unha lista de datos sobre a que necesitamos para responder e devolver resultados
  • Correspondencia implica comprobar / buscar varias fontes (bastante fixa) de datos
  • Resultados das fontes de datos poden requirir unha validación adicional, fusión, comprobación de fontes de datos adicionais en resposta aos resultados
  • Os datos son devoltos con rexistros correspondentes debidamente validados e procesados
  • Cada rexistro dentro dun traballo é independente do resto

Entón, basicamente, estamos mirando para realizar traballos que requiren unha mestura de investigacións da base de datos e algún procesamento de números, un escenario bastante común en un ambiente de negocios.

Solucións de redes non só son vantaxosos para procesar os traballos deste tipo. Basicamente, calquera proceso que pode ser dividida en unidades independentes poden ser executados en paralelo. Vexa esta wikipedia exemplos e máis información: Grid Computing , pero un par de exemplos famosos son Seti @ Home e BIONC . Hai cadros para a execución de redes de computación, e estes valen a pena ollar en.

O que imos conseguir?

Ao final destes artigos, espero mostrar que a implantación dunha reixa de oficina non precisa estar consumindo moi caros ou de tempo. Estou indo para discutir:

  • Configurar o sistema de control de traballo, configuración de traballo
  • Creando unha máquina de procesamento virtual axeitada
  • Como configurar o sistema nunha máquina Windows
  • Garantir que está a usar o código máis recente e os datos
  • Implantación e avaliación do desempeño
  • Mirando cara o futuro

Eu estarei de construción (ok eu constrúe, entón escribín iso) unha aplicación de exemplo para probar os conceptos nunha máquina local usando o Windows XP e miña máquina GridMachine 'virtual. O meu servidor de control de traballo será a miña máquina principal, que corre o Fedora 11 .

Isto é así sentido para demostrar un sistema totalmente funcional robusto, o seu significado máis dunha demostración e discusión mostrando que estas cousas pode ser conseguida nun período de tempo razoablemente curto e con custos relativamente reducidos. Sinto-se libre para me enviar os comentarios, correccións ou melloras e eu vou facer o meu mellor para manter este artigo actualizado para corresponden.

Próxima vez

Na parte 2 vou comezar por ollar para o sistema de control de traballo, e ollar en como os traballos deben ser configurados para acadar maior cantidade de procesamento, garantindo que cada traballo é procesado, sen fallar.

Office Computing Reixa utilización de ambientes virtuais - Parte 2

Por , venres 04 de decembro de 2009 11:23

Introdución

Eu traballo nunha empresa na que corremos moitos traballos en lote procesar millóns de rexistros de datos de cada día e eu estiven a pensar recentemente sobre as máquinas que se sentan ao redor de cada día sen facer nada durante varias horas. Non sería bo se puidésemos utilizar esas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou ollar para os potenciais beneficios da contratación dunha oficina de reixa utilización de ambientes virtualizados.

Na parte 1 eu dei unha visión xeral do sistema e as tecnoloxías que están empregando, así como discutir algunhas das posibles razóns polo que desexa crear unha rede de oficina.

Job Control

Se indo para ser executado emprego, entón vai ter algunha forma de xestiona-los. O seu sistema de control do traballo (no seu servidor de emprego) ten que ser moi ben pensada antes de intentar realizar unha rede de oficina. Entón, en primeiro lugar, cales son as tarefas dun sistema de control de traballo:

  • Distribuír os traballos, a petición dos traballadores
  • Diga traballadores que tipo de postos de traballo para realizar
  • Traballos Pista
  • Asegúrese de que os traballos son executado só unha vez
  • Proporcionar datos de emprego aos traballadores, ou polo menos dicirlles onde obtelo

O sistema tamén debe ser extensible, unha solución que funciona de momento nun único caso pode ser estendido para realizar varios tipos de traballos como a empresa ve o valor nunha solución de rede. Por exemplo, os traballos poden gañar prioridades, máis dun tipo de traballo pode existir (ou sexa, varias bases de código), finalmente pode incluso realizar varias máquinas de traballo diferentes que son optimizados para cada tipo de traballo (a pesar de que non se afasta do traballador xenérico 'idea). Sempre intento pensar no futuro no desenvolvemento de sistemas, unha visión a curto prazo pode levar á frustración a longo prazo e tempo de desenvolvemento máis grande.

Servidor de traballo

Nós imos ter un lugar para controlar o noso traballo de, este debe ser o único sistema na súa rede que ten un fixo Resource locator, sexa un enderezo IP, o nome do host URL (usando DNS interno), etc Isto é porque os traballadores teñen que saber onde buscar emprego, os traballadores teñen que atopar o sistema de control de traballo (non o sistema de control de traballo atopar os traballadores).

O servidor de traballo en si non ten realmente unha tarefa complicada (nun sistema básico de todos os xeitos), el que almacenar unha lista de empregos, man de postos de traballo, recibir os resultados, e, posteriormente, almacena-los para a súa posterior recuperación. Como esas pezas (como "man de empregos") son definidos pode ser moi básico. Máis tarde, pode estender o sistema para incluír unha interface de administración para engadir, editar, borrar, suspender os traballos, pero iso está fóra deste exercicio.

Non hai ningunha razón que sexa, entón, que o teu servidor de traballo non podería ser unha máquina virtual executando dentro do seu servidor de procesamento principal, sempre que non drena moitos recursos del. O servidor de traballo con todo é necesario alta dispoñibilidade, se vai para abaixo nunha noite de venres vai perder un fin de semana enteiro de procesamento, potencialmente custando-lle un par de semanas por valor de tempo de procesamento (en comparación co seu servidor de procesamento principal só) . Pode querer poñer o seu servidor de traballo nun ambiente de balanceo de carga para alta dispoñibilidade.

Configuración básica

A configuración básica para o noso servidor de traballo consistirá en que eu estou chamando un dos meus servidores Bizkit (que é Li nux, m ySql, P HP). O código a executar en traballadores Thea vai realmente descubrir o que pode facer traballos, interactuar con bases de datos con emprego de sistemas de control. Posteriormente, poderiamos crear un servizo web e realmente man empregos en vez de ter os traballadores fan o traballo duro en si, pero por agora imos seguir usando o principio KISS (Keep it Simple, Stupid!).

Entón, imos crear tres MySQL táboas para manexar os traballos. Estes serán os `emprego`, `jobRecords` e `jobResults`.

emprego táboa Aquí está a usar SQL camarada unha boa alternativa pouco para phpMyAdmin só porque é máis fácil de instalar no CentOS (para outros o ven: 10 óptimas alternativas para phpMyAdmin )

Esta táboa está composta por 5 campos simple,

  • ID: Identificar o traballo
  • nome: Podería ser unha referencia de cliente, ou calquera número de outros identificadores
  • Estado: Ten que saber onde o traballo está, por exemplo,
    • 0: Non iniciado
    • 1: Colleu
    • 2: Feito
  • started_by: Quen comezou a facer o traballo? Iso non é totalmente necesario, pero é un bo ter. Eu suxiro que os traballadores de seguimento polo seu enderezo IP na súa rede
  • started_at: Cando o traballador iniciar o traballo? Ao seguir os traballos que non teñan completado dentro X cantidade de tempo que sabemos que necesitamos para incorporarse o traballo unha vez máis e comezar a procesar por outro traballador. Os traballadores poderían deixar o procesamento / go off-line para calquera número de razóns, falta de enerxía, accidente, perda de rede, etc

É doado como esta táboa pode ser estendido con algúns campos adicionais para permitir estatísticas de seguimento, unha columna de tempo de chegada para ver canto tempo o traballo levou, un contador para ver cantos traballadores colleu o traballo (obviamente iso necesita tenden a 1), a prioridade dos traballos, a lista pode ir sobre e sobre. En escenarios máis complexos de traballo sería posíbel especificar a cantidade de memoria que o traballador precisaría para enlazar (e, polo tanto, utilizar só os traballadores máis axeitados), ou mesmo o tipo de traballador sería necesario.

Permite engadir un exemplo poucos empregos:

emprego exemplo

A seguinte táboa de novo é moi sinxelo de entender, son datos que o noso traballo. Eles están conectados á táboa de traballos principal por unha columna `jobs_id`. A composición desta táboa depende moito dos datos que precisa ofrecer aos seus traballadores, imos facer un exemplo moi sinxelo, onde temos catro columnas:

  • id: identificación do rexistro
  • nome: o nome da persoa
  • Enderezo: Enderezo da Persoa
  • jobs_id: A ID de traballo que este rexistro está ligado á

A táboa terceiro e último está formado por unha táboa de resultados, que ten o mesmo facer se como a nosa táboa rexistros, e coa adición de algunhas columnas podería ser parte da táboa de rexistros:

  • job_record_id: vincular o resultado para a mesa de traballo
  • Resultado: Os datos do resultado

... E iso é todo que precisa para o control de traballo! (Aínda que a un nivel moi básico) No meu caso eu estou vinculado a outra táboa onde os meus datos para proceso foi localizado, pero isto pode só como facilmente ser un arquivo, os parámetros para executar código de simulación, o seu nome.

Seleccionando un emprego

Como mencionado anteriormente, os traballadores van facer o noso traballo de xestión para nós agora, para todo o que necesitamos realmente facer é atopar un traballo que precisa de procesamento e obter a información. Como faríamos isto? Ben escoller os nosos criterios de selección de emprego e buscar emprego, en SQL eu fixen o seguinte:

  1. Tome todos os traballos que non están marcadas como concluídas, mais do noso traballador e redefini-las (substitúa ME__ __ cun identificador máis doado, sería a dirección IP):
      Update `emprego` SET `status` = 0 Where `status` = 1 AND `started_by` = __ ME__; 
  2. Usando os nosos criterios de selección de emprego, seleccionar un traballo e dicir ao sistema de control que este traballador está lidando con iso:
      Update `emprego` SET `status` = 1, `started_by` = __ ME__, `started_at` = NOW () Where `status` = 0 OR
     (`Status` = 1 AND `started_at`> DATE_SUB (NOW (), INTERVAL Hour X)) ORDER BY `id` ASC; 

    Ao incorporarse emprego que non presentaron resultados en X cantidade de tempo que garantir que todos os traballos son executados en caso de un traballador non funcionar ou se ausentar sen licenza.

  3. A continuación cara os detalles emprego seguidos polos rexistros propios:
      SELECT * FROM `emprego` onde `started_by` = __ ME__ Limit 1;
     SELECT * FROM `job_records Where` id `= __ JOBID__; 

Tras a conclusión do traballo que inserir rexistros noso resultado e marcar o traballo como concluído. Lembre que os traballos poden suspender / renovar en calquera momento permiten algunha robustez no seu guión. Pode ser que a tarefa suspende a medio a actualización do sistema de control de traballo, entón comprobar o número de rexistros nun traballo eo número de resultados gardados ao seu sistema de control de traballo sería unha medida acertada.

Ademais, aínda que iso demostra como os traballos poden ser seleccionados e xestor a partir dun cadro SQL-consulta ten que realmente ser abstraindo o seu control sobre o traballo de modo que se decide pasar a usar un servizo web, un sistema de ficheiros baseado en XML , ou calquera outro número de sistemas que non afectará o código anterior.

Configuración do traballo

O seguinte aspecto a considerar é o tamaño do traballo e configuración. Ao xogar con a configuración do traballo, podemos atopar un equilibrio excelente entre a velocidade, a replicación de procesos, e fiabilidade. Dedique uns escenarios OFA parella:

  1. Emprego tomar 1 día a día para ser executado: Isto significa que os traballadores necesitan 15 días para procesar cada traballo (lembre-se 10% da enerxía para 2/3rds do tempo). Este non é claramente un sabio configuración, o tamaño do traballo é moi grande! Levaría polo menos o dobre do tempo para conseguir un emprego procesado debe o traballador ir AWOL inicial (tempo de coller que non retornou un resultado máis o tempo de reprocesando). Nun ideal que ten polo menos un traballo completo facilmente apurada ata o final de cada período de tempo ocioso, de que xeito se mantén os postos de traballo máis típico e, no peor caso, un traballo levaría dous días para o primeiro proceso debería van faltar.
  2. Traballos levar 1 minuto para executar: Isto significa que os traballadores levar uns 15 minutos para realizar cada traballo. Aínda que isto poida parecer inicialmente ideal, gañou procesamento traballo adicional durante a hora do xantar, coffee breaks, reunións, etc este escenario pon presión sobre outras áreas do seu sistema e presenta os seus propios problemas. Por exemplo, en primeiro lugar a súa razón de tempo de configuración / procesamento está a ir dereito para abaixo, perdendo así a eficiencia do sistema. Súa rede vai ser constantemente información sobre o traballo de streaming para o equipo varios traballadores frustrante que son dong seu traballo do día a día. Tamén vai poñer máis presión sobre o seu traballo como servidor de procesamento que ten que repartir lotes e lotes de pequenas pezas de traballo nunha base regular. Por fin, nesta situación, o seu servidor de emprego descende vai crear un rexistro de volta enorme de traballo incompleto mentres traballos maiores podería de procesamento continuou alegremente inconscientes de que o servidor estaba pasando por dificultades de emprego.

En realidade, non haberá unha configuración ideal para a súa instalación da reixa, moi depende dos recursos dispoñibles, tipo de traballo, requisitos do traballo tempo de produción, capacidade de rede, e así por diante. Con todo, algunhas directrices sería:

  • Traballos en tamaño de xeito que cada traballador pode pasar por polo menos 3-4 emprego nun período de 15 horas (o máis longo período de tempo probable idle)
  • Xoga co tamaño do traballo de xeito que o tempo de configuración tórnase bastante insignificante comparado co tempo de procesamento (tendo en conta o punto anterior).
  • Se un traballo non é concluído en dobrar a cantidade de tempo (quizais menos) se espera para completa-lo asumir que a súa AWOL ir e comezar a proceso-lo con outro traballador. Isto significa que pode ter que esperar ata tres veces a lonxitude normal de un traballo para a conclusión (posiblemente máis o traballo posterior falla). Pode querer reducir este tempo, pero Tomé coidado para non reduci-lo moito como podes comezar a duplicación de tarefas de procesamento nunha base regular.
  • Jobs debe ser independente das esixencias externas, na medida do posible. O servidor de emprego, por exemplo, só debe atoparse no inicio e final de cada traballo.
  • Non saturar a súa rede, este terá dous efectos negativos, o seu equipo vai atopar durante o día a través da rede frustrante e os problemas poden ser probados con conexións tempo de espera dun problema que só vai peor cando escalar a reixa.
  • Garantir os postos de traballo poden ser executados nos seus traballadores. Os traballos fanse moito espazo de memoria traballos intensivos ou intensivos disco comeza a abortar eo único que notará é unha gota no número de traballos procesados ​​sen motivo real.

Entregaren os resultados dun traballo

Ao presentar os resultados dun traballo é importante comprobar que os resultados non foron presentados por outro traballador, especialmente se o traballador actual estivo dormente por algún tempo.

Cando os resultados son presentados asegurar que o número de resultados coincide co número de rexistros dentro do traballo.

Como mencionado anteriormente, e non pode ser máis enfatizado, construír tolerancia a fallos na recuperación de traballos e presentación de resultados. Os traballadores poden (e seguramente) entrar no modo de suspensión no máis inconveniente de veces e iso debe ser servidos. Tamén unha vez abstraindo súa submisión resultados axudarán atender a futuras cambios no seu sistema de control de traballo moito máis doado de xestionar.

Resumo

Neste sectiona vimos o que é un servidor de control de traballo que facer e como obter un sistema moi básico configurado. Discutir como recuperar un traballo desde o sistema de control ea mellor forma de configurar traballos para obter o máximo do noso sistema de reixa oficina. Para finalizar, un parágrafo ou dous sobre como enviar os resultados ao seu servidor de control de traballo foi presentado.

  • Un servidor de control de traballo xere emprego e asegura que todas as unidades de traballo son concluídas
  • Ao abstraerse o seu traballo Select / resultados submisión podemos cambiar a tecnoloxía do servidor de control sen moitos problemas
  • Configure os seus traballos para garantir que se executan de forma rápida e eficiente, sen poñer demasiada presión sobre a infraestrutura de rede, e sen duplicar tarefas de procesamento nunha base regular.
  • Asegúrese de construír a tolerancia a fallos e checking erro nas súas rutinas, os traballadores poden suspender e renovar e máis inconveniente de veces. Teña en conta que comprobar os resultados xa foron presentados por outro traballador.

Próxima vez

Na parte 3 imos crear a nosa máquina de procesamento virtual e configurar nosas máquinas de fiestras para facer ausente dos traballadores a tempo.

Office Computing Reixa utilización de ambientes virtuais - Parte 5

Por , venres 04 de decembro de 2009 11:03

Introdución

Eu traballo nunha empresa na que corremos moitos traballos en lote procesar millóns de rexistros de datos de cada día e eu estiven a pensar recentemente sobre as máquinas que se sentan ao redor de cada día sen facer nada durante varias horas. Non sería bo se puidésemos utilizar esas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou ollar para os potenciais beneficios da contratación dunha oficina de reixa utilización de ambientes virtualizados.

Na Parte 4 miramos para o uso de ferramentas para garantir que estamos executando a última versión das fontes de código e datos, para que os resultados obtidos son sempre up-to-date coas últimas información da empresa e da lóxica.

Vista Replanteo

Antes de implantar o sistema de rede, se hai unha cousa que fai e unha cousa só que é referencia do seu sistema actual! Non importa o que dicir aos compañeiros sobre o que traballo extra o seu sistema vai facer menos que teña números para apoiar que as súas garantías non son nada. Así,

  • cantos rexistros pode procesar actualmente? Ao día? Por hora?
  • Canto tempo funcionar para virar un emprego?
  • Canto máis capacidade que ten?

Hai tamén cuestións adicionais:

  • Se o seu servidor de procesamento (ou un dos seus servidores de procesamento) vai para abaixo como isto afectará as súas capacidades, vai estar aleijado?
  • Que as vantaxes que espera / espera obter a partir dun sistema de rede?
  • Son máquinas da súa oficina capaz de realizar os traballos?
  • Son o seu (ou pode ser convertido emprego) para wrok neste estilo de correr?

O último punto importante é levar o seu tempo en calquera gran cambio como esta. Actualiza o teu código de procesamento para traballar coa nova metodoloxía de referencia, unha vez máis. Posiblemente configurar o servidor de procesamento para realizar unha máquina virtual, fin e ao cabo o seu servidor de procesamento será só outro traballador (só unha forma moi poderosa relativamente). Facer que o novo proceso para resolver.

Desenvolvemento

A miña suxestión sería a aparecer na fin de semana unha oficina realizar todas as instalacións e configuración. Faino inmediatamente antes de vacacións de dúas semanas e deixar a outro coitado para xestionar as consecuencias ... quizais non ...

Implantación dun sistema como este ten que ser lenta. A pesar de ser relativamente sinxelo de configurar este sistema ha afectar a súa infraestrutura de oficina enteiro (ben o dixital). En primeiro lugar, lanzar un par de máquinas ao mesmo tempo, monitorizar o tráfico da rede, como os anfitrións do traballador executar o día a día. Pode cambiar a configuración do traballo en resposta ás súas descubertas.

Unha vez que o sistema se estableceu con algunhas máquinas (digamos 10% de todas as máquinas de oficina, ou sexa, 5) manter o tráfico de monitores de rede e máquina host performance. referencia Seguinte de novo, agora ten que estar a procesar os traballos de 33% máis que os primeiros benchmarks. Comprobe isto é así, ou que é, polo menos, neste estadio. Se non, investigar o que está a suceder antes de continuar. Repita este ciclo ata que por sorte teñen todas as máquinas de oficina funcionando sen matar o performance da máquina individual e moenda súa rede a unha paralización.

En todo momento manter Benchmarking, mesmo despois de todos os implementacións poden facer. Comprobe como as actualizacións do código afecta a velocidade do seu sistema, asegúrese de todos os traballadores están relatando e procesar os traballos. Pouco a pouco (moi lentamente) aumentar a súa configuración de traballo para obter o mellor dos seus traballadores e de rede.

Pare!

E se queres deixar de funcionar os seus traballadores, nalgún momento? Eles están todos alí fóra, correndo, rexenerar, e tentar o mellor para procesar datos, como insectos famentos. A resposta pode parecer obvia, pero paga a pena engadir só no caso da súa esquecido. Só ten que editar o script de procesamento cun exit (0) ou morrer () ou algunha outra indicación de matar o seu traballo de procesamento. Unha razón importante para que nós sempre tentamos facer a actualización para o guión máis recente de procesamento antes de calquera carreira!

Sistema de demostración

Para escribir este conxunto de pequenos artigos que creei unha rede moi pequena para demostrar as tecnoloxías e metodoloxías. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.

Zend Framework: Fundamentals – Review

By , Saturday 28th November 2009 10:42 pm

My employer recently paid for a group of us developers to take the Zend Framework: Fundamentals course, here I'll summarise my thoughts and opinions on the course for others. For those looking to save time, here's my summary:

For developers who haven't had time to look at the Zend Framework this course (Zend Framework: Fundamentals) offers a good overall picture of the framework introducing you to the key areas and giving enough information in order to continue. For those who have spent time looking at the framework and have followed one or two tutorials this course does not offer much beyond.

Fondo

I've been a PHP developer for around 5-6 years, and have started working with the Zend Framework on a component basis over the last 6 months. I've developed and/or been a developer on a couple of small Zend Framework MVC sites. I'll be honest, I haven't had a huge amount of exposure to other frameworks from a coding point of view but have spent several hours researching the project websites and evaluating them. The framework and the community surrounding Zend Framework it is quite exciting and there seem to be huge possibilities in where its going.

About the Course

The course is delivered over 9 two hour webex sessions (with a 10-minute break in the middle). The time is spent going through a set of slides provided by Zend with discussion at any time. You can use a microphone to talk to the instructor, but to be honest I didn't see anyone use anything more than the chat window. In addition a VMWare Ubuntu machine is provided that has example code and projects set up an a trial version of Zend Studio. The course leader talks to attendees either over an integrated VoIP solution, or you can dial in using one of the many worldwide dial in numbers.

During the course the material consists of a brief overview of the Framework and the MVC pattern before heading into a sample guestbook application. The discussion demonstrated bootstrapping, Zend_Application, Db Tables, Database access, Forms, Filtering, ACL, Validating, etc, etc. Basically covering all the topics you'd require to get a basic site up an running all the time giving you the tools to go and get more advanced in the framework (although this did amount to 'See the website' much of the time).

Time is given to code up some examples, and to develop the 'guestbook' and simple 'wiki' application. Personally I felt that providing the code or each app and then asking us to develop what was essentially a copy alongside didn't really provide a good learning experience. I would have preferred to develop an application similar, but not identical. to the example application with the benefit of having a guide to refer to. 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.

Resumo

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.

Log to DB using Zend Framework

By , Tuesday 14th April 2009 9:06 pm

I've managed to get a site up and running with the Zend Framework , everything is logging nicely to FireBug/FirePHP so next step was to log to the DB. I also wanted to log some additional information using the framework such as user agent, date and time, get and post variables. So to extend the manual a little here's what I did:

// Set up logging to DB
$db = Zend_Registry ::get('dbAdapters');
$db = $db['general'];

$columnMapping = array( 'priority' => 'priority',
'message' => 'message',
'datetime' => 'timestamp',
'user_agent'=> 'user_agent',
'get_vars' => 'get_vars',
'post_vars' => 'post_vars',
'site' => 'site'
);

$writerDb = new Zend_Log_Writer_Db($db, 'error_logging', $columnMapping);
$logger = new Zend_Log($writerDb);

$logger->setEventItem('datetime',date('Ymd H:i:s'));
$logger->setEventItem('user_agent',$_SERVER['HTTP_USER_AGENT']);
$logger->setEventItem('get_vars',print_r($_GET,true));
$logger->setEventItem('post_vars',print_r($_POST,true));
$logger->setEventItem('site',SITE);

$logger->info('Informational message');

Where the array keys in $columnMapping are my column names. 'Priority' and 'message' are understood by Zend_Log_Writers but the additional fields were added to give me some additional information.

Obviously this assumes that you have logging working using one of the other writers first :)













Tema por Panorama Themocracy

9 visitors online now
6 guests, 3 bots, 0 members
Max visitantes hoxe: 22 ás 07:35 am UTC
Este mes: 26 en 2012/04/04 10:27 UTC
Este ano: 69 en 27-02-2012 09:56 pm UTC
Todas as horas: 130 en 28-03-2011 10:40 UTC