Ievads
Es strādāju uzņēmumā, kurā mēs palaist daudzas partijas darba vietu apstrādes miljonu ierakstu datu katru dienu, un es esmu bijis domāt nesen par visām mašīnām, kas sēž apkārt katru dienu, neko nedarot, vairākas stundas. Vai tas nebūtu labi, ja mēs varētu izmantot šos mehānismus, lai atbalstītu pārstrādes jaudu no mūsu sistēmu? Ar šo komplektu raksti Es esmu, lai aplūkotu potenciālo ieguvumu nodarbina biroja tīklu , izmantojot virtualised vidēs.
In 1 daļā I sniedza pārskatu sistēmas un tehnoloģijas, man būs, izmantojot, kā arī apspriesti daži no iespējamiem iemesliem, kāpēc vēlaties izveidot biroju tīklu.
Job Control
Ja jūs būs ekspluatācijas darbu, tad jūs gatavojas ir nepieciešams zināms veids, lai pārvaldītu tos. Jūsu darbs kontroles sistēma (jūsu darbs serverī) ir jābūt ļoti labi pārdomāts līdz pat mēģināt palaist biroja tīklam. Tātad, pirmkārt, kādi ir darba kontroles sistēmas uzdevumi:
- Izkārt darbavietas kad to pieprasa darba ņēmēju
- Pastāstiet darbiniekiem, kāda veida darbavietas palaist
- Track darbu
- Nodrošināt, ka darba vietas ir rādītas tikai vienu reizi
- Nodrošina darbu datu darbiniekiem, vai vismaz pateikt, kur to iegūt
Sistēmai arī jābūt paplašināms, risinājums, kas strādā tagad vienā gadījumā var tikt pagarināts palaist vairākas darba veidiem, kā biznesa redz vērts režģa risinājumu. Piemēram, darba vietās, var iegūt prioritātes, vairāk nekā viena darba veids var pastāvēt (ti vairākas kods bāzēm), iespējams, jums var pat palaist vairākus atšķirīgus darba ņēmēju mašīnas, kas ir optimizētas katram darba veidam (kas gan nebija virzīties prom no "sugas strādnieks "ideja). Vienmēr mēģiniet domāt par nākotni, izstrādājot sistēmu, īstermiņa redzējums var izraisīt ilgtermiņa vilšanās un palielināt izstrādes laiku.
Darba Server
Mēs ejam uz nepieciešamību kaut kur, lai kontrolētu savu darbu no, tas ir tikai sistēma jūsu režģis, kas ir noteikta resursu vietrādis, ir tā IP adresi, resursdatora nosaukumu, URL (izmantojot iekšējo DNS), uc Tas ir tāpēc, ka darbiniekiem jāzina, kur meklēt darbu, darbiniekiem ir nepieciešams atrast darbu vadības sistēmu (ne darba kontroles sistēmu atrast darbiniekus).
Darbs serveris pats nav īsti ir sarežģīts uzdevums (jo pamata sistēmas tik un tā), tai ir nepieciešama, lai saglabātu vakanču sarakstu, neizvietot darbu, saņemt rezultātus, un pēc tam saglabājiet tos turpmākai atgūt. Cik šīs detaļas (piemēram, "rokas no darbavietām") ir definēti var būt ļoti vienkāršas. Vēlāk mēs varam paplašināt sistēmu, iekļaujot administrācijas saskarni pievienot, rediģēt, dzēst, pārtraukt darba vietas, bet tas pārsniedz šo procedūru.
Nav nekādu iemeslu tam, ka jūsu darbs Serveris nevarēja būt virtuālā mašīna darbojas jūsu galveno apstrādes servera, ja tas nav aizplūšanu pārāk daudz resursu no tā. Darbs serveris Tomēr nav nepieciešams augstas pieejamības, ja tā iet uz leju piektdienas vakarā, jūs gatavojas zaudēt visu nedēļas nogali apstrādes, iespējams, maksā jums pāris nedēļas vērts apstrādes laiku (salīdzinot ar jūsu galveno apstrādes servera vien) . Jūs varētu vēlēties apsvērt savu darbu serverī slodzes līdzsvarotu vidi augstu pieejamību.
Basic Setup
Pamata setup, lai mūsu darbs serveris veidos, ko es esmu aicinot vienu no saviem Limp serveriem (tas ir Li nux, m ySql, P HP). Kods darbojas uz Teu darbiniekiem būs faktiski strādā, kādas darbavietas to var palaist, mijiedarbojoties ar ar darba kontroles sistēmu datu bāzēm. Vēlāk mēs varētu izveidot tīmekļa pakalpojumu, un faktiski rokas no darba vietas nevis darba ņēmējiem darīt smago darbu pašiem, bet tagad mēs turpināsim izmantot KISS principu (Keep it vienkāršs, stulbs!).
Tātad, ļauj izveidot trīs mySQL tabulas, lai risinātu ar darbu. Tie būs `darbu`, `jobRecords` un `jobResults`.
Šeit es esmu, izmantojot SQL Buddy ļoti maz alternatīvu phpMyAdmin tikai tāpēc, ka tā vieglāk instalēt CentOS (citiem sk.: 10 Great alternatīvas phpMyAdmin )
Šī tabula sastāv no 5 vienkāršās,
- id: identificētu darbu
- nosaukums: Varētu būt klienta atsauksme, vai kādu citu identifikatoru skaits
- Statuss: Jums ir jāzina, kur darbs ir, piemēram,
- 0: Nav sākts
- 1: pacēla
- 2: Pabeigta
- started_by: Kurš sāka darīt darbu? Tas nav pilnīgi nepieciešama, bet ir patīkami būt. Es gribētu ieteikt uzskaites darbinieki no to IP adresi no jūsu tīkla
- started_at: Kad darbinieks sāk darbu? Kontrolējot darba vietas, kas nav pabeigts X laika mēs zinām, mums ir nepieciešams uzņemt darba atkal un sākt pārstrādei citā darbinieks. Darba ņēmēji varētu pārtraukt apstrādes / go bezsaistē jebkura vairāku iemeslu dēļ, enerģijas padevei, crash, tīkla zudums, utt
To ir viegli, kā šo tabulu varētu paplašināt ar dažiem papildu laukus, lai ļautu statistikas uzskaiti, finiša laiks kolonnā, lai redzētu, cik ilgi darbs paņēma counter lai redzētu, cik darba ņēmēju paņēma darbu (protams, tas ir tendence 1) darba prioritāte, sarakstu var turpināt vēl un vēl. Vairāk sarežģītu darbu scenāriji būtu iespējams noteikt, cik daudz atmiņas darba ņēmējam būtu nepieciešama piekļuve (un tādēļ tikai jāizmanto piemēroti darba ņēmēji), vai pat kāda veida darba ņēmējam būtu nepieciešama.
Lets pievieno dažus, piemēram darba vietas:
Nākamajā tabulā atkal ir diezgan viegli saprast, šie ir mūsu darbs ierakstus. Tie ir saistīti ar galvenajām darba vietu tabulā, kolonnā `jobs_id`. Veido Šīs tabulas ir ļoti atkarīgs no datiem, kas jums ir nepieciešams piegādāt uz jūsu darbiniekiem, ļauj izdarīt ļoti vienkāršu piemēru, kad mums ir četras ailes:
- id: ID ierakstu
- nosaukums: Personas vārdam
- adrese: Personas adrese
- jobs_id: darba ID, ka šis ieraksts ir saistīts ar
Trešais un pēdējais tabula sastāv no rezultātu tabulā, tas ir līdzīgi veido kā mūsu ierakstus tabulā, un pievienojot dažas kolonnas varētu būt daļa no uzskaites tabulu:
- job_record_id: Link rezultāts uz darba galda
- Rezultāts: Rezultāts dati
... Un tas ir viss, kas vajadzīgs darba kontroli! (Lai gan ļoti vienkāršas) Manā gadījumā es esmu norādījis uz citu tabulu, kur mana datu apstrādei atradās, bet to var tikpat viegli ir fails, parametri, lai palaistu simulāciju kodu, jūs nosaukums tam.
Izvēloties darbu
Kā norādīts iepriekš, darba ņēmējiem do mūsu darba vadība mums tagad, lai viss, kas mums nepieciešams, lai tiešām darīt, ir atrast darbu, kas nepieciešams pārstrādes un saņemt informāciju. Kā mēs to darām? Nu uzņemt mūsu darbu atlases kritērijiem un meklēt darba vietas, jo SQL man bija šādi:
- Veikt darbu, kas nav atzīmēti kā pabeigta, bet no mūsu darbinieku un atjaunotu tos (aizstāt __ME__ ar identifikatoru, vienkāršākais būtu IP adreses):
UPDATE `darbu` SET `status` = 0 WHERE `status` = 1 UN `started_by` = __ME__;
- Izmantojot mūsu darbu atlases kritērijiem, izvēlieties darbu un pateikt, ka šis darba ņēmējs ir ar to nodarbojas kontroles sistēma:
UPDATE `darbu` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `status` = 0 vai
(`Status` = 1 UN `started_at`> DATE_SUB (NOW (), Interval X stunda)) ORDER BY `id` ASC;
Ar satveršanas darba vietas, kas nav atgriezušies rezultātus X laiku mēs nodrošinām, ka visi darbi ir darboties gadījumā, ja darba ņēmēja crashing vai iet AWOL.
- Nākamais greifers darbavietas informāciju pēc ierakstus sevi:
SELECT * FROM `darbu` WHERE `started_by` = __ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __JOBID__;
Pabeidzot darbu, mēs ievietotu savu rezultātu uzskaiti un atzīmēt darbu kā pabeigtu. Atcerieties, jo darbus var pārtraukt / atjaunot jebkurā brīdī pieļautu zināmu stabilitāti, kas savu skriptu. Varētu būt, ka uzdevums atliek pusi veidā caur atjauninot darba kontroles sistēmas, lai pārbaudītu ierakstu skaits darbu un rezultātu atkal saglabātu darba kontroles sistēmu skaits varētu būt gudrs kustēties.
Turklāt, lai gan tas parāda, cik darba vietas var izvēlēties un pārvalda no SQL query rāmis jums patiešām ir, abstrahējoties Jūsu darba kontroli, lai, ja jūs nolemjat pāriet uz, izmantojot interneta pakalpojumu, failu balstītai sistēmai, XML , vai jebkuru citu vairākas sistēmas, tas neietekmē kods virs tā.
Darba konfigurācija
Nākamais aspekts, kas jāapsver, ir darba apjomu un konfigurāciju. Spēlējoties ar darbavietu konfigurācija mēs varam panākt lielisku līdzsvaru starp ātrumu, process replikāciju un uzticamību. Paņem pāris kādu teksta apstrādes scenāriji:
- Darbs jāveic 1 dienā katru rādīt: Tas nozīmē, ka jūsu darbinieki ir 15 dienas, lai apstrādātu katru darbu (atceros 10% no jaudas 2/3rds laika). Tas ir skaidri nav gudrs konfigurācija, jūsu darba apjomu, ir pārāk liels! Būtu nepieciešams vismaz divreiz laiku, lai iegūtu pārstrādātu darbu vajadzētu sākotnējos darbinieks aiziet AWOL (laiks uzņemt, ka tā nav atgriezies rezultāts plus pārstrādes laikā). Ir ideāla, jūs ir vismaz vienu pilnu darbu viegli noskaidroti līdz katra ilgs tukšgaitas periodu, tādā veidā jūs saglabāt darbavietas atzīmējot beidzies, un sliktākajā gadījumā darbu varētu ilgt divas dienas, lai process būtu vispirms iet missing.
- Darbs jāveic 1 minūti, lai palaistu: Tas nozīmē, ka jūsu darbinieki aizņems apmēram 15 minūtes, lai palaistu katru darbu. Kaut arī tas sākotnēji var likties ideāls, jūs iegūstat papildu darbs apstrādes laikā pusdienas laikā, kafijas pauzes, tikšanās, utt šis scenārijs rada spriedzi citiem jūsu sistēmas, un ievieš savas problēmas. Piemēram, vispirms jūsu setup / apstrādes laiks attiecība gatavojas iet pa labi uz leju, tādējādi saglabājot sistēmas darba efektivitāti. Jūsu tīkls būs pastāvīgi straumēšanas darba informāciju par dažādiem darba ņēmējiem nomākta darbinieki, kas ir dong viņu ikdienas darbā. Jūs esat arī gatavojas likt lielāku spriedzi jūsu darbu apstrādes servera, jo tas ir ēdiens no partijām un partijām, mazos gabaliņos, kas strādā uz regulāri. Visbeidzot, šajā situācijā, ja jūsu darbs servera iet uz leju, jūs gatavojas izveidot milzīgu atpakaļ žurnālu nepabeigtajiem darbiem tā kā lielāka darbavietu varētu turpināt apstrādes blissfully neapzinās, ka darbs serveris bija nonākusi grūtībās.
Patiesībā nebūs neviena ideāla konfigurācija tīkla setup, daudz kas ir atkarīgs no pieejamajiem līdzekļiem, darbu veidiem, darba atgriešanas laiku prasībām, tīkla jaudu, un tā tālāk. Tomēr dažas vadlīnijas būtu:
- Izmērs darbu, lai katrs darba ņēmējs var iegūt, izmantojot vismaz 3-4 darba vietas uz 15 stundām (garākā iespējams dīkstāves laiku)
- Spēlē ar darba apjomu tā, ka uzstādīšanas laikā kļūst samērā nenozīmīga, salīdzinot ar apstrādes laiku (ņemot vērā iepriekšējo punktu).
- Ja darbs nav pilnīgs divreiz vairāk laika (varbūt mazāk) jūs gaidīt to, lai pabeigtu to pieņemt, ka tā gājusi AWOL un sākt tā tiek apstrādāta ar kādu citu darbinieku. Tas nozīmē, ka Jums var būt jāgaida līdz trīs reizes lielāka par parasto ilgumu darbs ir pabeigts (iespējams arī ilgāk, ja turpmāko darbu neizdodas). Jūs varat samazināt šo laiku, bet jābūt uzmanīgiem, lai samazinātu to pārāk daudz, kā jūs varat sākt dublējot apstrādes uzdevumus regulāri.
- Darbs būtu neatkarīga no ārpus prasībām, cik vien iespējams. Darbs serveri, piemēram, tikai sazināties sākumā un beigās katru darbu.
- Nelietojiet piesātinātās savu tīklu, tas ir divas negatīvas sekas, jūsu dienas darbinieki būs atrast, izmantojot tīklu, nomākta, un problēmas var būt pieredze ar savienojumiem laika out problēmu, ka būs tikai sliktāk, kā jūs skalu jūsu tīklam.
- Nodrošināt darba vietas var palaist uz jūsu darbiniekiem. Ja darba vietu kļuvusi pārāk atmiņietilpīga vai diskā intensīvu darbu sāks Pārtrauc un vienīgā lieta, jūs paziņojums ir piliens darbavietu skaits apstrādāti bez reālas iemesls, kāpēc.
Iesniegšana rezultāti Darbs
Iesniedzot rezultātus, darbs ir svarīgi pārbaudīt, vai rezultāti nav iesniedzis cits darbinieks, it īpaši, ja pašreizējā darba ņēmējs ir neaktivizētas kādu laiku.
Ja rezultāti tiek iesniegti nodrošina, ka rezultāti saskan ar skaitu ierakstu, kas darbu.
Kā norādīts iepriekš, un nav iespējams novērtēt par augstu, veidot defektu pielaidi par darbu izguves un rezultātu iesniegšanu. Darbinieki var (un, visticamāk, būs) iedziļināties apturēt režīmā pie visvairāk neērta reizes, un to nepieciešams aizrādījums. Arī vēlreiz abstrahējoties prom savus rezultātus iesniegumu palīdzēs rūpēties par turpmākām izmaiņām jūsu darba kontroles sistēma daudz vieglāk tikt galā ar.
Kopsavilkums
Šajā section mums ir aplūkots, kas darba kontroles servera jādara un kā iegūt ļoti pamata sistēma izveidota. Mēs apspriedām, kā iegūt no kontroles sistēmas darbu un to, kā vislabāk konfigurēt darba vietu, lai saņemtu lielāko daļu mūsu Jūsu biroja režģa sistēmu. Lai pabeigtu, punkts vai divi Iesniedzot rezultātus atpakaļ darba kontroli serveris tika iesniegts.
- Darba kontroli serveris pārvalda darbavietas un nodrošina, ka darba vienības ir pabeigti
- Ar abstrahējoties Jūsu darba izvēlaties / rezultātu iesniegšanas mēs varam mainīt tehnoloģiju kontroles servera bez daudz problēmu
- Konfigurējiet savu darbu, lai nodrošinātu, ka tie darbojas ātri un efektīvi, bez pārāk lielu spiedienu uz savu tīkla infrastruktūru, un nedublējot apstrādes uzdevumus regulāri.
- Pārliecinieties, ka jums veidot defektu pielaidēm un kļūdu checking savā rutīnu, darbinieki var apturēt un atsākt un visvairāk neērta reizes. Neaizmirstiet pārbaudīt, vai rezultāti jau ir iesniedzis cits darbinieks.
Nākošreiz
Ar 3 daļu mēs izveidot savu virtuālo apstrādes iekārta, un izveidot mūsu logiem mašīnas kļūt dīkstāves laika darba ņēmējiem.