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

Por Watkin Steven Lloyd , venres 04 decembro 2009 11:23

Introdución

Eu traballo nunha empresa onde realizar traballos de procesamento por lotes moitos millóns de rexistros de datos de cada día e eu teño pensado recentemente sobre todas as máquinas que se senten ao redor de cada día sen facer nada por varias horas. Non sería bo se puidésemos utilizar estas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou mirar para os potenciais beneficios da contratación dunha oficina da rede usando ambientes virtualizados.

Na parte 1 eu dei unha visión xeral do sistema e as tecnoloxías que vai utilizar, así como discutidos algúns dos posibles motivos polos que desexa crear unha rede de oficina.

Job Control

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

  • Distribúe tarefas, a petición dos traballadores
  • Diga traballadores que tipo de traballos para seren executados
  • emprego Track
  • Asegúrese de que os traballos só son executados 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 prorrogado para executar varios tipos de traballos que a empresa ve o valor nunha solución de rede. Por exemplo, os traballos poden gañar prioridades, máis de un tipo de traballo pode haber (ou sexa, varias bases de código), eventualmente pode incluso realizar varias máquinas de traballo diferentes que están optimizados para cada tipo de traballo (aínda que isto non se afastar do "traballador xenérico 'idea). Sempre intento pensar no futuro cando os sistemas en desenvolvemento, unha visión a curto prazo pode levar á frustración a longo prazo e tempo de desenvolvemento aumentou.

Traballo de servidor

Imos ter que un lugar para o noso traballo de control, este debe ser o único sistema na súa rede que ten un localizador de recursos fixos, sexa un enderezo IP, nome do servidor da URL (mediante DNS interno), etc Isto é porque os traballadores teñen que saber onde buscar emprego, os traballadores necesitan atopar o sistema de control de traballo (non o sistema de control do traballo atopar os traballadores).

O servidor de traballo en si non ten realmente unha tarefa complicada (nun sistema básico de calquera maneira), el que almacenar unha lista de postos de traballo, distribuír tarefas, recibir os resultados, e posteriormente gardalas para a súa posterior recuperación. Como estas pezas (como "man de emprego") son definidos pode ser moi básico. Máis tarde, podemos estender o sistema para incluír unha interface de administración para engadir, editar, borrar, suspender os traballos, pero iso está alén deste exercicio.

Non hai ningunha razón, entón, que o teu servidor de emprego non podería ser unha máquina virtual rodando dentro do seu servidor de procesamento principal, sempre que non drena moitos recursos del. O servidor de traballo pero non necesitan de alta dispoñibilidade, se vai para abaixo unha noite de venres vai perder toda unha semana de tratamento, pode custa-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 balance de carga para alta dispoñibilidade.

Configuración básica

A configuración básica para o noso servidor de traballo estará composto por que eu estou chamando unha de Limp meus servidores (que é Li nux, ySql m, P HP). O código execución traballadores Thea vai realmente traballar para fóra o traballo que pode realizar, interactuar con bases de datos co traballo do sistema de control. Posteriormente, poderiamos crear un web service e realmente a entrega dos traballos en vez de ter os traballadores fan o traballo duro en si, senón por agora imos seguir usando o principio KISS (Keep it Simple, Stupid!).

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

táboa de empregos Aquí está a usar o SQL Buddy un pouco grande alternativa ao phpMyAdmin só porque é máis fácil de instalar no Center (para os outros, ver: 10 grandes alternativas ao phpMyAdmin )

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

  • ID: Identificar o traballo
  • Nome: Podería ser unha referencia de cliente, ou calquera número de outros identificadores
  • Estado: Debe saber que o traballo está, por exemplo,
    • 0: Non iniciado
    • 1: Peguei
    • 2: Rematada
  • started_by: Quen empezou a facer o traballo? Isto non é totalmente necesario, pero é bo ter. Eu suxiro seguimento dos traballadores polo seu enderezo IP na rede
  • started_at: Cando o traballador iniciar o traballo? Ao seguir os traballos que non teñan completado no prazo de X cantidade de tempo que sabemos que cómpre tomar o traballo, unha vez máis e comezar a procesar por outro traballador. Traballadores poden deixar o procesamento / go off-line para calquer número de razóns, falta de enerxía, accidente, perda de rede, etc

É doado coma este cadro podería ser estendido con algúns campos adicionais para permitir estatísticas de seguimento, unha columna horario de finalización para ver canto tempo o traballo tomou, un contador para ver cantos traballadores colleu o traballo (obviamente iso precisa tenden a 1), a prioridade dos traballos, a lista pode ir sobre e sobre. En escenarios máis complexa tarefa sería posible especificar a cantidade de memoria que o traballador terá acceso ó (e, polo tanto, utilizar só os traballadores máis axeitados), ou mesmo o tipo de traballo sería necesario.

Permite engadir un exemplo de algúns traballos:

emprego exemplo

A seguinte táboa de novo é ben sinxela de entender, estes son datos que o noso traballo. Están ligados á mesa de traballo por medio dunha columna `jobs_id». A composición desta táboa depende moito dos datos que cómpre proporcionar aos seus traballadores, imos facer un exemplo moi sinxelo, onde temos catro columnas:

  • gravar o id: identificación do
  • nome: é o nome da persoa
  • enderezo: o enderezo Persoa
  • jobs_id: O traballo de identificación de que este rexistro é ligada á

A táboa a terceira e última consiste nunha táboa de resultados, ten case a mesma cousa compoñen a nosa táboa de rexistros, e coa adición de algunhas columnas poderían ser parte da táboa de rexistros:

  • mesa de traballo job_record_id: Ligazón ao resultado do
  • Resultado: os datos do resultado

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

Seleccionando un emprego

Como dito anteriormente, os traballadores van facer o noso traballo de xestión para nós, por agora, para todo o que necesitamos realmente facer é atopar un traballo que precisa de tratamento e obter a información. Como fariamos iso? Ben, escollemos os nosos criterios de selección de emprego e buscar emprego, no SQL eu fixen o seguinte:

  1. Cara todos os traballos que non son marcadas como concluídas, mais do noso traballador e axustar-las (__ME__ substituír cun identificador, máis fácil sería a dirección IP):
      Update `jobs 'SET status` = 0 Where status = 1 `E` `= started_by __ME__; 
  2. Mediante o noso criterio de selección de emprego, elixe unha tarefa e dicir ao sistema de control que este traballador está lidando con iso:
      Update `jobs 'SET status = 1`, `` = started_by __ME__, started_at `` = Now () Where status `= 0 OR
     (`Status` = 1 AND `started_at`> DATE_SUB (Now (), intervalos X HORA)) ORDER BY `id` ASC; 

    Ao incorporarse os traballos que non devolveu resultados en X cantidade de tempo que asegurar que todos os traballos son executados en caso de un traballador deixar de funcionar ou ausentarse sen licenza.

  3. A continuación cara os detalles emprego seguido polos rexistros de si:
      SELECT * FROM `Where` emprego started_by `= __ME__ LÍMITE 1;
     SELECT * FROM `job_records` Where `id` = __JOBID__; 

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

Ademais, mentres este amosa como os traballos poden ser seleccionados e xestionado a partir dun cadro de consulta SQL que ten que realmente ser abstrair o seu control sobre o traballo de xeito que se decide pasar a utilizar un servizo web, un sistema baseado en arquivo XML , ou calquera outro número de sistemas que non afectará o código enriba del.

Job Configuration

O próximo aspecto a considerar é a dimensión do traballo e da configuración. A xogar coa configuración de traballo que poden acadar un excelente equilibrio entre a velocidade, a replicación de procesos e fiabilidade. Cara un par OFA escenarios:

  1. Jobs ter un día cada un para realizar: Isto significa que os traballadores necesitan 15 días para procesar cada traballo (lembre de 10% da enerxía para 2/3rds do tempo). Este non é claramente unha configuración intelixente, o tamaño do traballo é moi grande! Levaría polo menos o dobre do tempo para conseguir un emprego procesados ​​caso de que o traballador vaia AWOL inicial (tempo de incorporarse que non teña retorno 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 ausente, de que xeito 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. Emprego tomar un minuto para executar: Isto significa que os traballadores levan uns 15 minutos para realizar cada traballo. Aínda que isto poida parecer inicialmente ideal, gañou o 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 configurar o ratio tempo de procesamento está a ir dereito para abaixo, perdendo así a eficiencia do sistema. Súa rede vai ser sempre fluíndo información sobre o traballo aos traballadores varios funcionarios que están frustrando dong seu día a día. Tamén vai poñer máis presión sobre o seu traballo como servidor de procesamento ten de prato fóra lotes e lotes de pequenas pezas de traballo nunha base regular. Por fin, nesta situación, se o seu servidor de emprego descende vai crear un rexistro enorme parte posterior do traballo incompleto mentres traballos maiores de continuación do proceso podería alegría inconscientes de que o servidor estaba pasando por dificultades de emprego.

En realidade non haberá unha configuración ideal para a súa configuración de rede, depende moito dos recursos dispoñibles, tipo de traballo, as esixencias da función tempo de resposta, a capacidade de rede, e así por diante. Con todo, algunhas orientacións serían:

  • traballos en tamaño de modo que cada traballador pode pasar por polo menos 3-4 postos de traballo nun período de 15 horas (o máis longo período de tempo probable idle)
  • Xogar coa dimensión do traballo a fin de que o tempo de configuración tórnase moi insignificante cando se compara co tempo de procesamento (tendo en conta o punto anterior).
  • Un traballo non é concluído o dobre a cantidade de tempo (quizais menos), espera que completa ela asumir que AWOL seu pasado e comezar a proceso-lo con outro traballador. Isto significa que pode ter que agardar a tres veces o tamaño normal dun traballo para a conclusión (posiblemente máis, se o traballo subseguinte falla). Pode querer reducir este tempo, pero teña coidado de non reduci-lo moito como podes comezar a duplicación de tarefas de procesamento nunha base regular.
  • Traballos deben ser independentes das necesidades de fóra, na medida do posible. O servidor de emprego, por exemplo, só debe ser contacto no inicio e ao final de cada traballo.
  • Non saturado súa rede, terá dous efectos negativos, o seu equipo vai atopar durante o día utilizando a rede frustrante e problemas poden ser probados con conexións tempo de espera un problema que só vai peor a medida que a escala do grid.
  • Asegúrese de traballos poden ser executados nos seus traballadores. Os traballos de facerse demasiado espazo de memoria traballos intensivos ou intensivos de disco comezará a abortar eo único que vai notar un descenso 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 durminte por algún tempo.

Cando os resultados son presentados garantir que o número de resultados corresponde ao número de rexistros dentro do traballo.

Como dito anteriormente, e non pode ser subestimado, construír tolerancia a fallos en recuperación de traballos e presentación dos resultados. Os traballadores poden (e que seguramente) entrar no modo de suspensión no inconveniente a maioría das veces e iso ten que ser atendidas. Ademais, unha vez abstrair súa submisión resultados axudar a atender a futuras cambios no seu sistema de control de traballo moito máis fácil de manexar.

Resumo

Neste section nós miramos o que é un servidor de control de traballo ten que facer e como obter un sistema moi básico configurado. Discutir como recuperar un traballo dende o sistema de control ea mellor forma de configurar tarefas para obter o máximo do noso sistema de reixa de oficina. Para finalizar, un parágrafo ou dous sobre a presentación dos resultados ao seu servidor de control de traballo era presentado.

  • Un servidor de control de traballo xestiona emprego e asegura que todas as unidades de traballo son concluídas
  • Ao abstrair o traballo de seleccionar / submisión resultados podemos cambiar a tecnoloxía do control de servidor sen grandes problemas
  • Configure o seu traballo para garantir que sexan executados con rapidez e eficiencia, sen poñer demasiada presión sobre a infraestructura 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 retomar o inconveniente e na maioría das veces. Lembre-se de comprobar que os resultados xa foron presentados por outro traballador.

A próxima vez

Na parte 3 , imos crear o noso procesamento de máquina virtual e configurar o Windows para facer as nosas máquinas de traballadores a tempo ocioso.

Unha resposta para "Office Grid Computing utilización de ambientes virtuais - Parte 2"

  1. Hydrolyze di:

    Heya! concepto Bo, pero isto pode realmente facer o traballo?

Deixe unha resposta













Panorama Tema por Themocracy

7 visitantes en liña agora
2 visitantes, 5 bots, 0 membros
Max visitantes hoxe: 24 ás 00:36 UTC
Este mes: 26 en 2011/07/05 12:35 UTC
Este ano: 130 en 28-03-2011 22:40 UTC
Todas as horas: 130 en 28-03-2011 10:40 UTC