Johdanto
Olen töissä yrityksessä, jossa voimme suorittaa useita eräajot käsittely miljoonia levyjä tietoja joka päivä, ja olen ajatellut viime aikoina kaikki koneet, istua joka päivä tekemättä mitään useita tunteja. Eikö olisi hyvä, jos voisimme käyttää näitä koneita vahvistamaan prosessointitehoa järjestelmiemme? Tämän joukon artikkeleita aion tarkastella mahdollisia hyötyjä palkata toimiston verkon avulla virtualisoituja 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.
Työn hallinta
Jos aiot olla käynnissä työpaikkoja sitten olet menossa on jotenkin hallita niitä. Työsi ohjausjärjestelmä (työssäsi palvelimella) on todella harkittu ennen kuin edes yrität käyttää toimiston verkkoon. Eli ensinnäkin, mitä tehtäviä työ ohjausjärjestelmä:
- Ojentaa työpaikat pyynnöstä työntekijöitä
- Kerro työntekijät millaisia työpaikkoja juosta
- Track työpaikkaa
- Varmista, että työpaikkoja ajetaan vain kerran
- Tarjoa työtietojen työntekijöille tai ainakin kertoa heille mistä sitä saa
Lisäksi järjestelmän tulee olla laajennettavissa, ratkaisu, joka toimii nyt samaan koteloon voidaan ulottaa suorittaa useita erilaisia työpaikkoja kuin liiketoiminnan näkee arvokkaaksi verkkoon ratkaisu. Esimerkiksi työpaikkoja voi saada painopisteitä, enemmän kuin yksi työpaikka tyyppi voi olla (siis useita koodia emäkset), lopulta ehkä jopa käyttää useita eri työntekijöiden koneita, jotka on optimoitu kunkin työn (vaikka se ei siirrä pois geneerinen työntekijä "idea). Yritä aina ajatella tulevaisuutta kehitettäessä järjestelmiä, lyhyen aikavälin visio voi johtaa pitkällä aikavälillä turhautumista ja lisää kehitysaikaa.
Job Server
Tulemme tarvitsemaan jonnekin hillitsemään työpaikkoja, tämän pitäisi olla ainoa järjestelmä teidän ruudukko, jossa on kiinteä Resource Locator olla että IP-osoite, palvelimen nimi, osoite (käyttämällä sisäisiä DNS), jne. Tämä johtuu työntekijöiden täytyy tietää, mistä etsiä työtä, työntekijöitä täytyy löytää työpaikan ohjausjärjestelmä (ei työn ohjausjärjestelmä löytää työntekijöitä).
Työ-palvelin itsessään ei todellakaan ole monimutkainen tehtävä (vuonna perusjärjestelmän muutenkin), se tarvitsee tallentaa luetteloa työpaikoista, ojentaa työpaikkoja, saada tuloksia, ja sen jälkeen tallentaa ne myöhemminkin. Miten nämä osat (esim. "ojentaa työpaikkoja") on määritelty voi olla hyvin yksinkertainen. Myöhemmin voimme laajentaa järjestelmä koskemaan hallintaliittymä lisätä, muokata, poistaa, peruuttaa työpaikkoja, mutta tämä on kuin harjoitus.
Ei ole mitään syytä niin että työsi palvelin ei voinut olla virtuaalikoneen käynnissä omassa tärkein käsittelystä palvelin kunhan se ei pääse virtaamaan liikaa resursseja siitä. Työ-palvelin on kuitenkin se tarvitsee korkean käytettävyyden, jos se menee alas perjantai-iltana aiot menettää koko viikonlopun jalostus, mahdollisesti maksaa sinulle pari viikkoa arvosta käsittelyajan (verrattuna ensisijaiseen käsittelyyn palvelin yksin) . Haluat ehkä harkitsemaan työsi palvelimen kuormitusta tasapainoisen ympäristön korkean käytettävyyden.
Basic Setup
Perusasetukset työmme palvelimelle muodostuu mitä soitan eräs Limp palvelimia (eli Li Nux, m ySql, P HP). Koodin suorittamisen thea työntekijöistä todella selvittää, mitä työtä se voi hoitaa vuorovaikutuksessa työpaikkojen ohjausjärjestelmän tietokantoihin. Myöhemmin voisimme luoda verkkopalvelun ja itse ojentaa työpaikkoja sen sijaan työntekijät tekevät kovaa työtä itse, mutta nyt jatkamme käyttää KISS periaate (Keep It Simple, Stupid!).
Joten avulla luodaan kolme mySQL taulukoita käsitellä työpaikkoja. Nämä ovat `työpaikkoja`, `jobRecords`, ja `jobResults`.
Täällä Käytän SQL Buddy hyvin vähän vaihtoehtoja phpMyAdmin vain koska sen helpompi asentaa CentOS (muille katso: 10 Great vaihtoehtoja phpMyAdmin )
Tämä taulukko on 5 yksinkertaisia kenttiä,
- id: tunnistaa työ
- name: Voisi olla asiakasnumerosi, tai useita muita tunnisteita
- Tila: Sinun täytyy tietää, missä työ on, esim.
- 0: ei alkanut
- 1: Noudetaan
- 2: Päättyneet
- started_by: Kuka alkoi tehdä työtä? Tämä ei ole täysin pakollista, mutta on hyvä olla. Haluan ehdottaa seurata työntekijöiden IP-osoitteen verkon
- started_at: Milloin työntekijä aloittaa työn? Seuraamalla työpaikkoja, jotka eivät ole päätökseen X ajan tiedämme, että meidän poimia työn uudelleen ja aloittaa käsittelyn toisen työntekijän. Työntekijät voisivat lopettaa käsittelyn / go offline mahdollisesti useita syitä, sähkökatko, crash, verkko menetys jne.
On helppo miten tämä taulukko voitaisiin jatkaa muutamalla lisäkenttiä jotta tilastojen seuranta, lopetusaika sarakkeesta, miten kauan työ kesti, laskuri, kuinka monta työntekijää piristyi työ (ilmeisesti tämä tarvitsee yleensä 1), työ ensisijaisesti lista voi jatkua loputtomiin. Vuonna monimutkaisempi työ skenaariot olisi mahdollista määrittää, kuinka paljon muistia työntekijällä olisi pääsy (ja siksi käyttää vain sopivaa työntekijää), tai jopa millainen työntekijä olisi tarpeen.
Lets lisätään 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 sarake `jobs_id`. Muodostavat tämän taulukon riippuu paljon tietoja, joita et tarvitse toimittaa teidän työntekijöitä, antaa 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 liittyy
Kolmas ja viimeinen taulukko koostuu tulosten taulukon, se on paljon samaa muodostavat kuin tietomme pöytä, ja lisäämällä tiettyjä palstoja voisi olla osa Records taulukon:
- job_record_id: Linkki tuloksen tehtävätaulukko
- Tulos: tulostiedot
... Ja siinä kaikki mitä tarvitset työnohjausta! (Joskin aivan perustasolla) Omalla kohdallani olen todennut toiseen pöytään, jossa tietoni käsitellä sijaitsi, mutta voisi yhtä hyvin tehty tiedosto, parametrit suorittaa simulaatio koodia, you name it.
Valitseminen työpaikka
Kuten aiemmin on todettu, työntekijät teemme työn hallintaan meille nyt, niin kaikki meidän todella on löytää työpaikka, joka vaatii käsittelyä ja saada tietoa. Miten teemme tämän? No valita työtämme valintaperusteet ja etsiä työpaikkoja, SQL tein seuraavat:
- Ota kaikki työpaikat, joita ei ole merkitty täydellisiä, mutta meidän työntekijöiden ja palauttaa ne (korvaa __ ME__ kanssa tunnisteen, helpointa olisi IP-osoite):
UPDATE `työpaikkoja` SET `status` = 0 WHERE `status` = 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ä käsittelee sitä:
UPDATE `työpaikkoja` SET `status` = 1, `started_by` = __ ME__, `started_at` = NOW () WHERE `asema` = 0 tai
(`Status` = 1 JA `started_at`> DATE_SUB (NYT (), ALUE X AIKA)) ORDER BY `id` ASC;
Tarttumalla työpaikat, joita ei palauteta tuloksia X ajassa voimme varmistaa, että kaikki työpaikat ovat käytössä jos työntekijä kaatuu tai menee luvattomalla lomalla.
- Seuraavaksi ota työpaikat yksityiskohdat jälkeen Records itse:
SELECT * FROM `työpaikkoja` WHERE `started_by` = __ ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __ JOBID__;
Päätyttyä työpaikka lisäämme tuloksemme kirjaa ja merkitä työtä valmiiksi. Muista, kun työpaikkoja voi keskeyttää / jatkaa milloin tahansa sallia tietty kestävyydestä script. Voi olla, että tehtävä keskeyttää puolivälissä päivittää työn ohjausjärjestelmä, niin tarkkailun Tietueiden määrän työtä ja tulosten määrä tallentaa ne takaisin työn ohjausjärjestelmä olisi viisasta.
Lisäksi, vaikka tämä osoittaa, miten työpaikkoja voidaan valita ja hallita SQL-kyselyn runko sinun pitäisi oikeastaan hahmotuskykyyn oman työn hallintaa niin, että jos päätät siirtyä käyttämään verkkopalvelu, tiedostopohjaisesta, XML -tai muita lukuisia järjestelmiä, se ei vaikuta koodia sen yläpuolella.
Job Configuration
Seuraava huomioon otettava näkökohta on työn koon ja kokoonpanon. Pelaamalla työpaikkojen kokoonpano voimme löytää hyvä tasapaino nopeuden, prosessin toistettavuus ja luotettavuus. Ota pari OFA skenaarioita:
- Työpaikat kestää 1 päivästä joka ajaa: Tämä tarkoittaa, että työntekijöitä on 15 päivää aikaa käsitellä kunkin työpaikan (muista 10% tehon 2/3rds ajasta). Tämä ei selvästikään ole viisas kokoonpano, työsi koko on liian iso! Se veisi ainakin kaksinkertainen aika saada suorittaa työ tulisi ensimmäinen työntekijä menee luvattomalla lomalla (aika poimia että se ei ole palannut tulos plus uudelleenkäsittely aikaa). Ihanteellisessa sinun on ainakin yksi täysi työ helppo tyhjentää jokaisen pitkän vapaan aikana, näin pidät työpaikkaa tikittää yli ja pahimmassa tapauksessa työ kestäisi kaksi päivää prosessia pitäisi ensin mennä puuttuu.
- Työpaikat kestää 1 minuutti juosta: Tämä tarkoittaa, että työntekijät kestää noin 15 minuuttia suorittaa kunkin työn. Vaikka tämä voi aluksi tuntua ihanteellinen, saat lisätyöstä käsittely lounasaikaan, kahvitauot, kokoukset jne. tämä skenaario asettaa paineita myös muiden järjestelmän ja tuo omat ongelmansa. Ensinnäkin esimerkiksi asennuksessa / käsittelyaika suhde on menossa alas, siis menettää järjestelmän tehokkuutta. Verkko tulee olemaan jatkuvasti streaming työpaikka tietoja eri työntekijöiden turhauttavaa henkilöstölle dong heidän päivittäisessä työssä. Olet myös menossa kohdistuu enemmän rasitusta työsi käsittelystä palvelimella, koska se on jaella paljon ja paljon pieniä teoksia säännöllisesti. Lisäksi tässä tilanteessa, jos työsi palvelin menee alas aiot luoda valtava takaisin lokin keskeneräinen työ taas isompi työpaikkaa Voitaisiin jatkaa käsittelyä blissfully tiedä, että työ-palvelin oli vaikeuksia.
Todellisuudessa ei tule yksi ideaalinen kokoonpano oman verkon asetukset, paljon riippuu käytettävissä olevien resurssien kaikenlainen työssä, työn läpimenoaika vaatimukset, verkkotoiminnot, ja niin edelleen. Jotkin suuntaviivat olisivat:
- Koko työpaikkoja jotta jokainen työntekijä voi saada läpi ainakin 3-4 työpaikkaa 15 tunnin ajan (pisin todennäköinen vapaan ajan)
- Pelaa työn koko, niin että asennuksen aikana tulee melko vähäinen verrattuna käsittelyaika (ottaen huomioon edellä kohta).
- Jos työ ei ole täydellinen kaksinkertainen aika (ehkä vähemmän) odotatte sitä täydentää sitä olettaa, että sen mennyt luvattomalla lomalla 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 vähentää tällä kertaa, mutta varo vähentää sitä liikaa, sillä saatat alkaa päällekkäistä käsittelyä tehtäviä säännöllisesti.
- Työpaikkoja tulisi olla riippumattomia ulkopuolella vaatimusten niin paljon kuin mahdollista. Työ-palvelin, esimerkiksi vain ottaa yhteyttä alussa ja lopussa jokainen työpaikka.
- Älä kyllästetty verkko, tällä on kaksi kielteistä vaikutusta, sinun päivällä henkilökunta löytävät käyttää verkkoa turhauttavaa ja ongelmia voi ilmetä, jolla on yhteyksiä aikarajan ongelma vain pahenee kun skaalata verkkoon.
- Varmista työpaikkoja voi ajaa omia työntekijöitä. Jos työpaikkaa liian paljon muistia ja levytilaa intensiivisiä työpaikkoja alkaa saaliin, ja ainoa asia, jonka huomaat on pudotus Työpaikkojen määrä käsitellä ilman varsinaista syytä, miksi.
Hakemuksen tulokset Job
Toimittaessaan tulokset työ on tärkeää tarkistaa, että tuloksia ei ole jätetty toinen työntekijä, varsinkin jos nykyinen työntekijä on ollut lepotilassa jonkin aikaa.
Kun tulokset esitetään että tulosten määrä vastaa tietueiden sisällä työtä.
Kuten aiemmin todettiin, eikä se voi olla yli korosti, rakentaa vikasietoisuutta osaksi työpaikan hakuun ja tulosten esittämisen. Työntekijät voivat (ja mitä todennäköisimmin) siirtyy lepotilaan klo hankalimmassa kertaa ja tämä on huomioitu. Myös jälleen hahmotuskykyyn pois hakutuloksia jättämisestä auttavat palvelemaan tulevia muutoksia työn ohjausjärjestelmä paljon helpompi käsitellä.
Yhteenveto
Tässä section olemme tarkastelleet mitä työnohjaus palvelin pitää tehdä ja miten saada hyvin yksinkertainen järjestelmä käyttöön. Keskustelimme siitä, miten hakea työtä käyttöjärjestelmästä ja miten parhaiten määrittää työpaikkoja saada eniten meidän oman toimiston verkkoon. Lopuksi, kappaleen tai kaksi esittäessään tulokset takaisin työn Control Server esiteltiin.
- Työn hallinta palvelimen kautta työpaikkoja ja varmistaa, että kaikki toimivat yksiköt valmistuvat
- Abstrahoimalla työsi valitset / tulos jättämistä voimme muuttaa teknologian Control Server ilman suurempia ongelmia
- Määritä työpaikkoja, jotta ne ajetaan nopeasti ja tehokkaasti vaarantamatta liikaa paineita verkon infrastruktuuriin, ja tekemättä päällekkäistä käsittelyä tehtäviä säännöllisesti.
- Varmista, että olet rakentaa vikasietoisuuden ja erehdys checking teidän rutiinit, työntekijä voi keskeyttää ja aloittaa uudelleen ja hankalimmassa kertaa. Muista tarkistaa, jos tuloksia on jo toimitettu toinen työntekijä.
Seuraavalla kerralla
Kun osa 3 luomme virtuaalinen jenkäsittelykoneeseen ja perustamme oman Windows-koneissa tulee idle-aikaisia työntekijöitä.