Office Grid käyttäen virtuaaliympäristöjen - Osa 2
Johdanto
Olen töissä yrityksessä, jossa otamme monet erä työpaikkoja käsittely miljoonia levyjä tietojen joka päivä ja olen ajatellut taannoin kaikki koneet, jotka istuvat joka päivä tekemättä mitään useita tunteja. Eikö olisi hyvä, jos voisimme käyttää näitä koneita vahvistamaan tehosta meidän kanssa? Tämän kokoelman artikkeleita olen menossa katsomaan mahdollisia hyötyjä työllistää toimiston verkkoon käyttämällä virtualisoinnin ympäristöissä.
Vuonna Osa 1 annoin yleiskuvan järjestelmästä ja teknologiat aion käyttää sekä käsitellään joitakin mahdollisia syitä miksi haluaisi luoda toimiston verkkoon.
Job Control
Jos aiot olla käynnissä työpaikkoja sitten olet menossa on jonkin verran hallita niitä. Työsi valvontajärjestelmä (oman työpaikan palvelimelta) on todella hyvin mietitty ennen kuin edes yrittää juosta toimiston verkkoon. Joten ensinnäkin, mitä tehtäviä töitä valvontajärjestelmä:
- Jaa työpaikkoja pyynnöstä työntekijöiden
- Kerro työntekijöiden Millaisia työpaikkoja kulua
- Seuraa työpaikkaa
- Varmista, että työpaikat ovat vain ajaa kerran
- Tarjoa työtietoja työntekijöille, tai ainakin kertoa heille mistä sitä saa
Lisäksi järjestelmä on laajennettava ratkaisu, joka toimii nyt yhdessä tapauksessa voidaan pidentää suorittaa useita erilaisia työpaikkoja kuin yritys näkee arvokkaaksi verkkoon ratkaisu. Esimerkiksi työpaikkoja voi saada painopisteitä, enemmän kuin yksi työpaikka tyyppi voi olla (useita koodi emästen), lopulta ehkä jopa käyttää useita erilaisia työntekijän koneita, jotka on optimoitu kunkin työn (vaikka se ei siirry pois "yleinen työntekijä "idea). Pyri aina ajatella tulevaisuutta kehitettäessä järjestelmiä, lyhyen aikavälin visio voi johtaa pitkällä aikavälillä turhautumista ja lisääntynyt kehityksen aikaa.
Job Server
Olemme menossa tarvitse jonnekin ohjata työpaikkoja, se olisi vain järjestelmän oman verkon, joka on kiinteä Resource Locator on, että IP-osoite, palvelimen nimi, osoite (käyttämällä sisäisiä DNS), jne. Tämä johtuu Työntekijöiden on tiedettävä, mistä etsiä työtä, työntekijöitä täytyy löytää työpaikka valvontajärjestelmä (ei työtä valvontajärjestelmän löytää työntekijöitä).
Työ-palvelin itsessään ei todellakaan ole monimutkainen tehtävä (vuonna perusjärjestelmän muutenkin), se tarvitsee tallentaa luettelon työpaikkoja, ojentaa työpaikkoja, saada tuloksia, ja myöhemmin niitä voidaan varastoida myöhempää. Miten nämä osat (kuten "ojentaa työpaikkoja") on määritelty voi olla hyvin yksinkertainen. Myöhemmin voimme laajentaa järjestelmä koskemaan hallintaliittymä lisätä, muokata, poistaa, keskeyttää töitä, mutta tämä on kuin tämä harjoitus.
Ei ole mitään syytä niin että työsi palvelimelle ei voitu virtuaalikoneen käynnissä omassa tärkein käsittelystä palvelimen, kunhan se ei valua liikaa resursseja siihen. Työ-palvelin kuitenkaan ei tarvita korkeaa käytettävyyttä, jos se menee alas perjantai-iltana aiot menettää koko viikonlopun käsittely, mahdollisesti maksaa sinulle pari viikkoa arvosta käsittelyn ajan (verrattuna sinun tärkeimmät käsittely palvelin yksin) . Haluat ehkä harkitsemaan työsi palvelimen kuormitus tasapainoisen ympäristön korkean käytettävyyden.
Basic Setup
Perusasetukset työmme palvelin koostuu mitä Soitan eräs Limp palvelimia (eli Li Nux, m ySql, P HP). Koodi käynnissä Thea työntekijät todella selvittää, mitä työpaikkoja se voi hoitaa vuorovaikutuksessa työpaikkojen valvontajärjestelmä tietokantoihin. Myöhemmin voisimme luoda verkkopalvelun ja todella jakaa työpaikkoja sen sijaan työntekijät tekemään kovaa työtä itse, mutta nyt me jatkaa KISS periaate (Keep It Simple, Stupid!).
Joten, avulla muodostaa kolme MySQL taulukoita käsitellä työpaikkoja. Nämä ovat "työpaikkoja", "jobRecords`, ja `jobResults".
Tässä olen käyttäen SQL Buddy hyvin vähän vaihtoehtoja phpMyAdmin vain koska sen helpompi asentaa CentOS (ja muut näkevät: 10 Great vaihtoehtoja phpMyAdmin )
Tämä taulukko sisältää 5 yksinkertaisia kenttiä,
- id: tunnistaa työ
- nimi: Voisiko olla asiakkaan viite, tai useita muita tunnisteita
- Tila: Sinun täytyy tietää, missä työ on, esim.
- 0: Ei aloitettu
- 1: Piristyi
- 2: Päättyneet
- started_by: Kuka alkoivat tehdä työtä? Tämä ei ole täysin tarvita, mutta on mukava olla. I'd ehdottaa seuranta työntekijöiden IP-osoitteen verkko
- started_at: Milloin työntekijä aloittaa työn? Seuraamalla työpaikkoja, jotka eivät ole päätökseen X määrä aikaa tiedämme, että meidän poimia työn uudelleen ja aloittaa käsiteltäväksi toisen työntekijän. Työntekijät voisivat lopettaa jalostus / offline mahdollisesti useita syitä, sähkökatko, crash, verkko menetys, jne.
Se on helppoa, miten tämä taulukko voitaisiin laajentaa muutamia lisäkenttiä, jotta tilastojen seuranta, viimeistely-sarakkeeseen, miten kauan työ vei, joka laskuri kuinka monta työntekijää piristyi työ (ilmeisesti tämä on yleensä 1), työn etusijalle, lista voi jatkua loputtomiin. Monimutkaisissa työpaikka skenaarioita olisi mahdollista määrittää, kuinka paljon muistia työntekijällä olisi pääsy (ja siis vain sopivien työntekijöiden) tai jopa millainen työntekijä olisi tarpeen.
Lets lisätä muutama esimerkki työpaikkoja:
Seuraavassa taulukossa on taas melko helppo ymmärtää, nämä ovat meidän tehtävämme kirjaa. Ne liittyvät pääasiassa työpaikkojen taulukon sarakkeessa "jobs_id". Muodostavat tämän taulukon riippuu paljon tietoja, että sinun täytyy toimittaa teidän työntekijöiden avulla tehdä hyvin yksinkertainen esimerkki, jossa meillä on neljä saraketta:
- id: tunnus ennätys
- nimi: Henkilön nimi
- osoite: henkilön osoite
- jobs_id: työn tunnusta, että tämä levy on linkitetty
Kolmas ja viimeinen taulukko sisältää tulokset taulukossa, se on paljon samaa muodostavat kuin tietomme pöytä, ja lisäksi joidenkin sarakkeiden voisi olla osa kirjaa taulukon:
- job_record_id: Linkki tuloksen tehtävätaulukko
- tulos: tulostiedot
... Ja että kaikki mitä tarvitset työnohjausta! (Vaikkakin hyvin perustasolla) Minun tapauksessani olen todennut toiseen pöytään, jossa minun tietojen prosessi oli paikalla, mutta tämä voisi yhtä hyvin jo tiedoston parametrit suorittaa simulaation, you name it.
Valitseminen työpaikka
Kuten aiemmin todettiin, työntekijöiden teemme työn hallintaan meille nyt, niin kaikki meidän todellakin on löytää työpaikka, joka tarvitsee käsittely ja saada tietoa. Miten voisimme tehdä tämän? No valita työtämme valintaperusteet ja etsivät töitä, SQL tein seuraavat:
- Ota kaikki työpaikat, joita ei ole merkitty täydellisiä, mutta meidän työntekijä ja palauttaa ne (korvaa __ME__ kanssa tunniste, helpoin olisi IP-osoite):
UPDATE "työpaikkoja" SET "status" = 0, jos se "tila" = 1 ja "started_by" = __ME__; - Käyttämällä meidän tehtävämme valintaperusteet, valitse työ ja kerro ohjausjärjestelmä, tämä työntekijä on tekemisissä sen kanssa:
UPDATE "työpaikkoja" SET "status" = 1, "started_by" = __ME__, "started_at" = NOW () WHERE `tilalla" = 0 tai ("Status" = 1 ja "started_at"> DATE_SUB (NYT (), intervalli X TUNNIT)) ORDER BY `id` ASC;
Tarttumalla työpaikkoja, joita ei palauteta tuloksia X ajassa voimme varmistaa, että kaikki työpaikat ovat käytössä, jos työntekijä kaatuu tai menee AWOL.
- Seuraava napata työpaikkojen yksityiskohdista jälkeen kirjaa itselleen:
SELECT * FROM `työpaikkoja" kun "started_by" = __ME__ RAJA 1; SELECT * FROM `job_records" kun "id" = __JOBID__;
Päätyttyä työpaikka lisäämme tuloksemme kirjaa ja merkitä työn valmiiksi. Muista kuin työpaikkoja voi keskeyttää / jatkaa milloin tahansa sallia tietynlainen kestävyydestä script. Voi olla, että tehtävä keskeyttää puolivälissä päivittää työn valvontajärjestelmä, joten tarkkailun Tietueiden määrän työtä ja tulosten määrä tallentaa ne takaisin työn valvontajärjestelmä olisi viisasta.
Lisäksi vaikka tämä osoittaa, miten työpaikkoja voidaan valita ja hallita SQL-kyselyn runko sinun pitäisi oikeastaan olla abstracting oman työn hallintaa niin, että jos päätät siirtyä käyttämään verkkopalvelu, tiedoston perustuva järjestelmä, XML -tai muita useita järjestelmiä se ei vaikuta koodin yläpuolelle.
Job Configuration
Seuraavan huomioon otettava näkökohta on työn koon ja kokoonpanon. Pelaamalla työpaikkojen kokoonpano voimme löytää hyvä tasapaino nopeuden, prosessi replikointi ja luotettavuus. Ota pari OFA skenaarioita:
- Työt ottaa 1 päivä jokainen ajaa: Tämä tarkoittaa, että työntekijöiden on 15 päivää aikaa käsitellä kunkin työn (muista 10% tehon 2/3rds aikaa). Tämä ei selvästikään ole viisas kokoonpano työsi koko on aivan liian iso! Se veisi ainakin kaksinkertainen aika saada työtä jalostettu olisi ensimmäinen työntekijä mennä AWOL (aika poimia että se ei ole palannut tulos plus uudelleenkäsittely aikaa). Ihanteellisessa sinun on vähintään yksi täysi työ helposti tyhjenee jokaisen pitkän joutokäyntijakso, että miten pidät työpaikkaa tikittää yli ja pahimmassa tapauksessa työ kestäisi kaksi päivää prosessi olisi ensimmäinen kateissa.
- Työt kestää 1 minuutti kulua: Tämä tarkoittaa, että työntekijät kestää noin 15 minuuttia kulua kunkin työn. Vaikka tämä saattaa aluksi tuntua ihanteellinen, voit saada lisää työtä jalostukseen lounasaikaan, kahvitauot, kokoukset jne. Tässä tilanteessa asettaa paineita muilla oman järjestelmän ja tuo omat ongelmansa. Ensinnäkin esimerkiksi setup / käsittelyaika suhde on menossa alas, siis menettää järjestelmän tehokkuutta. Verkon tulee olla jatkuvasti streaming työpaikka tietoja eri työntekijöiden turhauttavaa henkilöstölle dong heidän päivittäisessä toiminnassaan. Olet myös menossa laittaa enemmän paineita työsi käsittely palvelimella, koska se on jaella paljon, paljon pieniä teoksia säännöllisesti. Lopuksi, tässä tilanteessa, jos työsi palvelin menee alas aiot luoda valtava takaisin loki keskeneräisiä työn suuremmassa työpaikkoja voisi jatkuvan käsittelyn autuaan tietämätön siitä, että työ-palvelin oli vaikeuksia.
Todellisuudessa siellä on kukaan ihanteellinen kokoonpano oman verkon asetukset, paljon riippuu käytettävissä olevista resursseista, eri työpaikkojen, työn läpimenoaika vaatimukset verkkotoiminnot, ja niin edelleen. Kuitenkin jotkut ohjeet olisivat:
- Koko työpaikkoja, jotta jokainen työntekijä voi saada läpi ainakin 3-4 työpaikkaa aikana 15 tuntia (pisin todennäköisesti tyhjäkäynnillä aika)
- Pelaa työn koko siten, että asennus lyhenee melko vähäinen verrattuna käsittelyaika (ottaen huomioon edellä kohta).
- Jos työ ei ole täydellinen kaksinkertainen määrä aikaa (ehkä vähemmän) voit odottaa sitä täydellistä se olettaa, että sen mennyt AWOL ja aloittaa sen käsittelyn toisen työntekijän. Tämä tarkoittaa sitä, saatat joutua odottamaan jopa kolme kertaa tavanomaiselta työtä sen loppuun (mahdollisesti pidempään, jos myöhemmin työ epäonnistuu). Voit halutessasi vähentää tällä kertaa, mutta varo alentaa sitä liikaa, sillä saatat alkaa päällekkäisiä jalostus tehtäviä säännöllisesti.
- Työt pitäisi olla riippumaton ulkopuolella vaatimuksia mahdollisimman paljon. Työ-palvelin, esimerkiksi vain ottaa yhteyttä alussa ja lopussa jokaisen työtä.
- Älä kyllästää verkko, se on kaksi kielteistä vaikutusta, sinun päivällä henkilökunta löytää verkon käytön turhauttavaa ja ongelmat voivat olla kokenut yhteydet aikakatkaisua ongelma vain pahenee, kun skaalata verkkoon.
- Varmista työpaikkoja voi ajaa työntekijöiden saatavilla. Jos työpaikkoja on liian paljon muistia tai levytilaa työpaikkavaltaisin alkaa keskeytetään ja vain huomaat on pisara työpaikkojen määrä käsitellä ilman todellista syytä, miksi.
Lähettäminen Tulokset Job
Jättäessään tulokset työ on tärkeää tarkistaa, että tulokset eivät ole olleet lähettäneet toista työntekijää, varsinkin jos nykyinen työntekijä on ollut lepotilassa jonkin aikaa.
Kun tulokset ovat esittäneet, että tulosten määrä vastaa tietueiden sisällä työtä.
Kuten aiemmin todettiin, ja voi olla yli korostaa, rakentaa vikasietoisuus osaksi työpaikkojen hakua ja tuloksia jättämisestä. Työntekijät voivat (ja todennäköisesti) siirtyy lepotilaan kaikkein hankalaa kertaa ja tämä on otettava huomioon. Myös jälleen kerran abstracting pois tulosten mukaan auttavat hempää muutoksia työsi valvontajärjestelmän paljon helpompi käsitellä.
Yhteenveto
Tässä sectiona olemme selvittäneet, mitä työnohjaus palvelin pitää tehdä ja miten saada hyvin yksinkertainen järjestelmä perustetaan. Olemme keskustelleet siitä, miten hakea työtä käyttöjärjestelmästä ja miten parhaiten määrittää työpaikkoja saada eniten meidän oman toimiston verkkoon. Voit lopettaa, kohta tai kaksi esittäessään tulokset takaisin töiden hallintaan palvelimelle esiteltiin.
- Työn hallintaa palvelimen kautta työpaikkoja ja varmistaa, että kaikki työyksiköt ovat valmiiksi
- Tekijä abstracting työsi valita / tulosten mukaan voimme muuttaa teknologian valvontaa palvelimen ilman suurempia ongelmia
- Määritä työpaikkoja varmistamaan, että ne suoritetaan nopeasti ja tehokkaasti ilman ottaa liian paljon paineita verkon infrastruktuuriin, ja ilman päällekkäistä käsittelyä tehtäviä säännöllisesti.
- Varmista, että olet rakentaa vikasietoisuutta ja virhe checking omalle rutiinit, työntekijät voivat keskeyttää ja jatkaa ja hankalimmassa kertaa. Muista tarkistaa, jos tuloksia on jo toimitettu toinen työntekijä.
Seuraava aika
Vuonna osa 3 luomme virtuaalinen käsittely kone ja perustamme oman Windows-koneissa tulee idle-aikaisia työntekijöitä.



















































Heya! Hyvä konsepti, mutta ehkä tämä on todella tehokas?