Introducció
Jo treballo en una empresa en què ens trobem molts llocs de treball de processament per lots de milions de registres de dades de cada dia i he estat pensant darrerament sobre totes les màquines que se sentin al voltant de cada un i cada dia sense fer res durant diverses hores. No seria bo si poguéssim utilitzar aquestes màquines per reforçar el poder de transformació dels nostres sistemes? En aquest conjunt d'articles que vaig a veure els beneficis potencials de l'ocupació d'una oficina de la xarxa utilitzant entorns virtualitzats.
En la part 1 em va donar una visió general del sistema i les tecnologies que utilitzarà, així com es discuteix algunes de les possibles raons per les quals es vol crear una xarxa d'oficines.
Treball de control
Si vostè estarà executant treballs, llavors anem a necessitar alguna forma de manejar-los. El seu sistema de control de treballs (en el servidor de treball) ha de ser molt ben pensat, fins i tot abans d'intentar executar una xarxa d'oficines. Així que en primer lloc, quines són les tasques d'un sistema de control de treball:
- Treballs de la mà a terme a petició dels treballadors
- Digueu als treballadors quin tipus de treballs s'executin
- Seguiment dels treballs
- Assegurar que els treballs només s'executen una vegada
- Proporcionar les dades del treball als treballadors, o si més no dir on aconseguir-
El sistema també ha de ser extensible, una solució que funciona per ara en un sol cas es pot estendre per executar diversos tipus de treballs com el negoci veu la pena en una solució de xarxa. Per exemple, els treballs poden guanyar les prioritats, més d'un tipus de treball pot existir (és a dir, diverses bases de codi), amb el temps pot fins i tot executar diverses màquines diferents treballadors que estan optimitzades per a cada tipus de treball (tot i que s'allunya dels treballadors "genèrics 'idea). Sempre intento pensar en el futur en el desenvolupament de sistemes, una visió a curt termini pot conduir a la frustració a llarg termini i el temps de desenvolupament més gran.
Servidor de tasques de
Anem a necessitar un lloc per al control dels nostres llocs de treball a partir de, aquest ha de ser l'únic sistema de la xarxa que compta amb un localitzador de recursos fixos, ja sigui una adreça IP, nom de host, l'adreça URL (utilitzant DNS intern), etc Això es deu a els treballadors necessiten saber on buscar feina, els treballadors necessiten per trobar el sistema de control de treball (no el sistema de control de treball trobar als treballadors).
El servidor de treball en si no té realment una tasca complicada (en un sistema bàsic de tota manera), que necessita per emmagatzemar una llista de llocs de treball, lliurar treballs, rebre els resultats, i posteriorment emmagatzemar per a la seva posterior recuperació. Com aquestes parts (com ara "mà llocs de treball") es defineixen poden ser molt bàsiques. Més endavant es pot ampliar el sistema per incloure una interfície d'administració per afegir, editar, esborrar, suspendre treballs, però això està més enllà d'aquest exercici.
No hi ha cap raó llavors que el servidor de treball no podia ser una màquina virtual que s'executa al servidor de processament principal, sempre que no drena massa recursos de la mateixa. El servidor de treball però cal una alta disponibilitat, si es cau en un divendres a la nit vostè va a perdre un cap de setmana de tractament, el que podria costar-li un parell de setmanes de temps de processament (en comparació amb el servidor de processament principal només) . És possible que vulgueu considerar la possibilitat del seu servidor de treball en un entorn d'equilibri de càrrega d'alta disponibilitat.
Configuració bàsica
La configuració bàsica del nostre servidor de treball consistirà en el que estic trucant a un dels meus servidors Bizkit (que és Linux Li, m ySql, P HP). El codi que s'executa en els treballadors thea realment esbrinar quins treballs es poden executar mitjançant la interacció amb bases de dades amb el treball del sistema de control. Més endavant es podria crear un servei web i la mà en realitat a llocs de treball en lloc que els treballadors fan la feina dura sí, però per ara seguirem utilitzant el principi KISS (Keep It Simple, Estúpid!).
Per tant, anem a crear tres mySQL per fer front a les taules de llocs de treball. Aquests treballs es ``, `jobRecords` i el `jobResults`.
Aquí estic usant SQL Buddy una gran alternativa a poc a phpMyAdmin només perquè és més fàcil d'instal lar en CentOS (per a altres veure: 10 grans alternatives a phpMyAdmin )
Aquesta taula es compon de 5 camps de simple,
- Identificació: identifiquen el treball
- Nom: Podria ser una referència de client, o qualsevol nombre d'altres identificadors
- Estat: Vostè necessita saber que el treball és, per exemple,
- 0: No s'ha iniciat
- 1: Recollit
- 2: Completat
- started_by: Qui va començar a fer la feina? Això no és del tot necessari, però és un agradable de tenir. Et suggereixo que els treballadors de seguiment per la seva adreça IP a la xarxa
- started_at: Quan el treballador iniciar el treball? Mitjançant el seguiment dels treballs que no hagin completat dins de X quantitat de temps que sabem que hem de recollir el treball de nou i començar a processar per un altre treballador. Els treballadors podrien deixar de processar / fora de línia per a qualsevol nombre de raons, manca de llum, caiguda, pèrdua de xarxa, etc
És fàcil com aquesta taula podria ser ampliat amb un uns pocs camps addicionals per permetre el seguiment de les estadístiques, una columna de temps d'arribada per veure quant temps va prendre el treball, un comptador per veure quants treballadors va prendre el treball (òbviament això ha de tendeixen a 1), prioritat dels treballs, la llista pot seguir i seguir. En els escenaris de treball més complex que seria possible especificar la quantitat de memòria que el treballador hauria de tenir accés a (i per tant, només l'ús adequat de treballadors), o fins i tot quin tipus de treball seria necessari.
Permet afegir un exemple alguns treballs:
La taula següent de nou és bastant senzill d'entendre, aquests són els nostres registres de treballs. Estan vinculats a la taula de treball principal per una columna `jobs_id`. La composició d'aquesta taula depèn molt de les dades que ha de proporcionar als seus treballadors, permet fer un exemple molt simple, on tenim quatre columnes:
- id: identificador del registre
- Nom: nom de la persona
- Direcció: Direcció de la Persona
- jobs_id: 'Identificador de la tasca que aquest registre està vinculat a
La taula de la tercera i última consisteix en una taula de resultats, té molt de la mateixa marca fins a la nostra taula, com els registres, i amb l'addició d'algunes columnes poden ser part de la taula de registres:
- job_record_id: Enllaç el resultat a la taula de treball
- Resultats: Les dades de resultat
... I això és tot el que necessita per al control de treball! (Encara que a un nivell molt bàsic) En el meu cas em va assenyalar a una altra taula en la que les meves dades de procés es troba, però això podria molt fàcilment ser un arxiu, els paràmetres per executar el codi de simulació, el que sigui.
Selecció d'un treball
Com es va esmentar anteriorment, els treballadors a fer la nostra gestió de treball per nosaltres, per ara, així que tot el que necessitem realment és trobar una feina que les necessitats de processament i obtenir la informació. Com fem això? Així recollir els criteris de selecció d'ocupació i buscar feina en SQL vaig fer el següent:
- Tenir treballs que no estan marcats com completa, però a partir dels nostres treballadors i recuperar els (substitut __ME__ amb un identificador més fàcil, seria l'adreça IP):
ACTUALITZACIÓ `llocs de treball` SET `estat` = 0 on `status` I `= 1 started_by` = __ME__;
- Utilitzant els criteris de selecció de tasques, seleccioneu un treball i dir-li al sistema de control que aquest treballador es tracta que:
ACTUALITZACIÓ `llocs de treball` SET `estat` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `estat` = 0 o
(`Status` I `= 1 started_at`> DATE_SUB (NOW (), interval d'una hora X)) ORDER BY `id` ASC;
Per l'acaparament dels treballs que no han donat resultats en X quantitat de temps que ens assegurem que tots els treballs s'executen en el cas d'un treballador de xocar o anar sense permís.
- A continuació prendre les dades de llocs de treball seguit pels mateixos registres:
SELECT * FROM `llocs de treball` WHERE `started_by` = __ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __JOBID__;
Un cop finalitzat el treball d'inserir els nostres registres de resultats i marcar el treball el més complet. Recordeu que treballs es poden suspendre / reprendre en qualsevol moment, permetre certa solidesa en el seu guió. És possible que la tasca es suspèn la meitat del camí a través de l'actualització del sistema de control de treballs per comprovar el nombre de registres en un lloc de treball i el nombre de resultats torna a guardar en el sistema de control de treball seria un encert.
A més, si bé això demostra com els treballs poden ser seleccionats i administrats des d'un marc de consulta SQL que realment hauria de ser l'abstracció del seu control sobre el treball de manera que si vostè decideix passar a utilitzar un servei web, un sistema de fitxers basat en XML , o qualsevol altre nombre de sistemes que no afectarà el codi per sobre d'ella.
Treball de configuració
El següent aspecte a considerar és la grandària del treball i la configuració. En jugar amb la configuració de treball que pot aconseguir un alt equilibri entre la velocitat, la duplicació de processos, i la fiabilitat. Prengui un parell d'escenaris de A:
- Llocs de treball prengui un dia per a executar cada un: Això significa que els seus treballadors necessiten 15 dies per processar cada treball (recordeu que el 10% de l'energia per 2/3rds de l'època). Això clarament no és una bona configuració, la mida del seu treball és massa gran! Es necessitaria com a mínim el doble de temps per aconseguir un treball processat si el treballador s'absenten sense permís inicial (temps per recollir que no ha tornat un resultat més el temps de reprocessament). En un ideal que li agradaria tenir almenys una feina de jornada completa fàcilment aclarit pel final de cada període d'inactivitat llarga, d'aquesta manera a mantenir els llocs de treball marcant més i en el pitjor cas, un treball que prendria dos dies per al procés si el primer faltaran.
- Llocs de treball prengui un minut per córrer: Això significa que els treballadors prenen uns 15 minuts per executar cada treball. Si bé aquest principi pot semblar ideal, el guany de processament de treball addicional durant l'hora de dinar, coffee break, reunions, etc aquest escenari posa la tensió en altres àrees del seu sistema i presenta els seus propis problemes. Per exemple, en primer lloc la configuració / processament relació de temps que anirà a la dreta cap avall, per tant perdre l'eficiència del sistema. La xarxa serà constant flux d'informació de treball per al personal dels treballadors de diversos frustrants que estan dong seu dia a dia. També vas a posar més pressió sobre el servidor de processament de treball, ja que ha de repartir munts i munts de petites peces de treball sobre una base regular. Finalment, en aquesta situació si el servidor de treball de baixa que crearà un registre de tornada enorme de treball no realitzat, mentre que més llocs de treball podrien continu de processament feliçment ignorant que el servidor de treball estava experimentant dificultats.
En realitat no hi haurà una configuració ideal per a la configuració de la xarxa, moltes coses depenen dels recursos disponibles, tipus d'ocupació, els requisits de treball de temps de resposta, capacitat de xarxa, i així successivament. No obstant això, algunes directrius serien:
- Treballs de mida de manera que cada treballador pot obtenir a través de llocs de treball almenys 3.4 en un període de 15 hores (el període més llarg possible el temps d'inactivitat)
- Jugar amb la mida del treball per tal que el temps d'instal lació es converteix en bastant insignificant en comparació amb el temps de processament (tenint en compte el punt anterior).
- Si un treball no acaba en el doble de la quantitat de temps (potser menys) que espera que es completi de suposar que el seu passat sense permís i començar a processar amb un altre treballador. Això significa que vostè pot haver d'esperar fins a tres vegades la durada normal d'un lloc de treball a què es completi (possiblement més si el treball de fallar). És possible que vulgueu reduir aquest temps, però vagi amb compte de no reduir massa, ja que pot començar a duplicar les tasques de processament en una base regular.
- Llocs de treball ha de ser independent de les necessitats externes, tant com sigui possible. El servidor de treball, per exemple, només s'ha de contactar a l'inici i al final de cada treball.
- No saturi la seva xarxa, això té dos efectes negatius, al seu personal durant el dia es troba amb la xarxa de frustració i els problemes es poden experimentar amb les connexions s'esgoti el temps un problema que només va a empitjorar a mesura que l'escala de la seva xarxa.
- Garantir llocs de treball es pot executar en els seus treballadors. Si els treballs es tornen massa espai de memòria llocs de treball intensiu o intensiu del disc començarà a avortar i l'únic que notarà és una caiguda en el nombre de treballs processats sense cap raó real de per què.
Resultats de la presentació d'un treball
En presentar els resultats d'un treball és important comprovar que els resultats no han estat presentats per un altre treballador, especialment si el treball actual ha estat inactiu des de fa algun temps.
Quan els resultats es presenten perquè el nombre de resultats coincideix amb el nombre de registres en el treball.
Com es va indicar anteriorment, i no està de més insistir, construir la tolerància a fallades en la recuperació de llocs de treball i presentació de resultats. Els treballadors poden (i el més probable és que) entrar en la manera de suspensió en la majoria dels inconvenients dels temps i això ha de ser atesos. A més, un cop més abstracció de la seva presentació resultats ajudaran a atendre futurs canvis en el seu sistema de control de treball molt més fàcil de tractar.
Resum
En aquest seccion_a hem vist què és un servidor de control de treball que ha de fer i com arribar a un sistema molt bàsic establert. Parlem de com recuperar un lloc de treball del sistema de control i de la millor manera de configurar llocs de treball per aprofitar al màxim el nostre sistema de xarxa de la seva oficina. Per finalitzar, un paràgraf o dos sobre la presentació dels resultats al servidor de control de treball va ser presentat.
- Un servidor de control de treball administra els treballs i assegura que totes les unitats de treball es completen
- Mitjançant l'abstracció del seu treball de selecció / resultats de la presentació que podem canviar la tecnologia del servidor de control sense problemes molt
- Configuri el seu treball per assegurar-se que s'executi de forma ràpida i eficient, sense posar massa pressió sobre la seva infraestructura de xarxa, i sense duplicar les tasques de processament en una base regular.
- Assegureu-vos de construir la tolerància a fallades i checking error en la seva rutina, els treballadors poden suspendre i reprendre la majoria dels inconvenients dels temps. Recordeu verificar si els resultats han estat presentats per un altre treballador.
La propera vegada
En la part 3 crearem la nostra màquina de processament virtual i configurar les finestres de les nostres màquines per convertir-se en temps d'inactivitat dels treballadors.