Wprowadzenie
Pracuję w firmie, w której prowadzimy wiele miejsc pracy, przetwarzania wsadowego milionów rekordów danych każdego dnia i myślałam ostatnio o komputerach, które siedzą każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn wzmacnia moc naszego systemu? W tym zbiorze artykułów mam zamiar sprawdzić potencjalne korzyści z zatrudniania biura sieci za pomocą środowiskach wirtualnych.
W części 1 dałem przegląd systemu i technologii, których będę używał, jak również omówione niektóre z potencjalnych powodów, dla których chcesz utworzyć sieci biurowych.
Job Control
Jeśli masz zamiar zostać uruchomiony pracy wtedy będziemy potrzebować jakiś sposób nimi zarządzać. System kontroli pracy (na serwerze pracy) musi być naprawdę dobrze przemyślane zanim nawet próby uruchomienia sieci biurowych. Więc po pierwsze, jakie są zadania dla systemu kontroli pracy:
- Rozdaj pracy na wniosek pracowników
- Powiedz pracowników, jaki typ zadań wykonywanych
- miejsc pracy Track
- Upewnij się, że miejsca pracy są uruchamiane tylko raz
- Dostarczanie danych do pracy pracowników, lub co najmniej powiedzieć im, gdzie je zdobyć
System musi być także rozszerzalny, rozwiązanie, które działa na razie w jednym przypadku może być przedłużony do uruchomienia kilku rodzajów pracy, jak biznes postrzega wartość w roztworze sieci. Na przykład, zatrudnienia mogą uzyskać priorytetów, więcej niż jedną pracę typu mogą istnieć (kilka baz kodu), ewentualnie może nawet uruchomić kilka różnych maszyn roboczych, które są zoptymalizowane dla każdego rodzaju pracy (mimo, że ma odejść od 'standardowych pracownika "pomysł). Zawsze staraj się myśleć o przyszłości, gdy systemy rozwijających się, krótki termin wizji może prowadzić do frustracji i dłuższej perspektywie zwiększyć czas rozwoju.
Job Server
Będziemy trzeba gdzieś do kontroli naszych miejsc pracy, należy to jedyny system w sieci, która ma stałe lokalizator zasobów, czy to adres IP, nazwę hosta, URL (z wykorzystaniem wewnętrznych DNS), itd. To dlatego, że pracownicy muszą wiedzieć, gdzie szukać pracy, pracownicy muszą znaleźć system kontroli pracy (a nie system kontroli pracy znaleźć pracowników).
Serwer praca sama w sobie nie ma to skomplikowane zadanie (w każdym razie system podstawowy), musi przechowywać listę zadań, rękę pracy, otrzymać wyniki, a następnie zapisać je do późniejszego wykorzystania. Jak te części (takich jak "rozdawać miejsc pracy") są zdefiniowane mogą być bardzo proste. Później możemy rozszerzyć systemu o interfejs administracyjny, aby dodać, edytować, usunąć, zawiesić miejsc pracy, ale jest to poza tym ćwiczeniu.
Nie ma żadnego powodu, następnie, że serwer praca nie może być maszyn wirtualnych uruchomionych w serwer główny przetwarzania pod warunkiem, że nie odprowadza zbyt wielu zasobów z niego. Serwer pracy jednak nie musi wysoką dostępność, jeśli idzie w dół, w piątek wieczorem będziesz tracić cały weekend, przetwarzania, potencjalnie kosztowało kilka tygodni warto czas przetwarzania (w porównaniu do głównego serwera przetwarzanie w spokoju) . Możesz zastanowić się nad ustawieniem serwera pracy na obciążenie środowiska zrównoważony wysoką dostępność.
Konfiguracja podstawowa
Podstawowa konfiguracja dla naszego serwera pracy będzie składać się z co Wołam jednym z moich serwerów Limp (czyli NUX Li, ySql m, P HP). Kod działa na thea pracownicy rzeczywiście pracują, jakie zadania można go uruchomić poprzez interakcję z bazami danych kontroli pracy systemu. Później możemy stworzyć serwis internetowy i faktycznie rękę miejsc pracy zamiast pracowników do ciężkiej pracy sami, ale teraz będziemy nadal korzystać z zasadą KISS (Keep it Simple, Stupid!).
Tak więc, pozwala utworzyć trzy mySQL stoły do czynienia z pracy. Będą to "praca", "jobRecords` i `jobResults".
Tutaj Używam SQL Buddy bardzo mały alternatywa dla phpMyAdmin tylko dlatego, że jej łatwiej zainstalować na CentOS (dla widzą inni: 10 Great alternatywa dla phpMyAdmin )
Tabela ta składa się z 5 prostych pól,
- id: Unikalny identyfikator pracy
- Nazwa: To może być odniesienie klienta, lub dowolną liczbę innych identyfikatorów
- Status: Musisz wiedzieć, gdzie jest praca, np.
- 0: Nie rozpoczęty
- 1: Podniósł
- 2: Completed
- started_by: Kto zaczął robić w pracy? To nie jest całkiem wymagana, ale miło mieć. Chciałbym zasugerować, śledzenie pracowników na podstawie adresów IP w sieci
- started_at: Kiedy pracownik rozpocznie pracę? Poprzez śledzenie pracy, które nie zostały zakończone w terminie kwoty X czasu wiemy, że trzeba podnieść praca i jeszcze raz rozpocząć przetwarzanie przez innego pracownika. Pracownicy mogą zatrzymać przetwarzanie / go w trybie offline z wielu powodów, braku prądu, awarii, sieci strat, itp.
Jest to łatwe, jak to przy stole może zostać przedłużony o kilka dodatkowych pól, aby umożliwić śledzenie statystyk, w kolumnie czas zakończenia, aby zobaczyć, jak długo praca zajęła, licznik aby zobaczyć, jak wielu pracowników podniósł pracy (oczywiście musi to mają tendencję do 1), priorytet zadania, lista może iść dalej. W bardziej złożonych scenariuszy pracy byłoby możliwe, aby określić, ile pamięci pracownik powinien mieć dostęp do (a więc używać odpowiednich pracowników), a nawet jaki typ pracownika jest konieczna.
Dodajmy kilka miejsc pracy, np.:
W poniższej tabeli znowu jest dość prosty do zrozumienia, to są nasze zapisy pracy. Są one związane z głównej tabeli miejsc pracy kolumnie "jobs_id". Dopełnić tej tabeli bardzo dużo zależy od danych, które należy dostarczyć do pracowników, pozwala zrobić bardzo prosty przykład, gdzie mamy cztery kolumny:
- ID: ID rekordu,
- imię: nazwisko osoby
- adres: adres osoby
- jobs_id: ID pracy, że ten rekord jest powiązany z
Trzecia i ostatnia tabela składa się z tabeli wyników, ma tak samo jak uzupełnić naszej tabeli rekordy, a z dodatkiem niektóre kolumny mogą być częścią tabeli rekordów:
- job_record_id: Link wynik do tabeli zadań
- Wynik: Dane wynik
... I to wszystko, czego potrzebujesz do kontroli pracy! (Choć na bardzo podstawowym poziomie) W moim przypadku jestem wskazał na innej tabeli, gdzie moje dane były zlokalizowane, ale może to tylko tak łatwo było w pliku, do uruchomienia kodu parametry symulacji, to nazwę.
Wybór pracy
Jak stwierdzono wcześniej, pracowników zrobimy zarządzania zadaniami dla nas teraz, więc wszyscy musimy naprawdę jest znaleźć pracę, która wymaga przetwarzania i uzyskać informacje. Jak to zrobić? Dobrze wybrać nasze kryteria wyboru pracy i szukać pracy w SQL zrobiłem następujące brzmienie:
- Podjęcie jakichkolwiek zadań, które nie są oznaczone jako kompletne, ale z naszych pracowników i ich reset (__ME__ zastąpić identyfikator, najłatwiej byłoby adres IP):
UPDATE `pracy` SET `status` = 0 WHERE `status` = 1 i "started_by` = __ME__;
- Korzystanie z naszych kryteriów wyboru pracy, wyboru pracy i powiedzieć, że system kontroli pracownik ma do czynienia z tym:
UPDATE `pracy` SET `status` = 1, "started_by` = __ME__, `started_at` = NOW () WHERE `status` = 0 lub
(`Status` = 1 I `started_at`> DATE_SUB (NOW (), przedział X HOUR)) ORDER BY `id` ASC;
Chwytając miejsc pracy, które nie zwróciło wyników w kwocie X czasu mamy pewność, że wszystkie zadania są uruchamiane w razie awarii lub pracownik będzie AWOL.
- Następnie pobieramy po szczegóły pracy rekordy siebie:
SELECT * FROM `pracy` WHERE `started_by` = __ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __JOBID__;
Po zakończeniu pracy możemy wstawić nasze dane i zaznaczyć wynik pracy za kompletną. Pamiętaj, jak praca może zawiesić / wznowić w każdej chwili umożliwić pewną stabilność w skrypcie. Możliwe, że zadanie zawiesza w połowie aktualizacji systemu kontroli pracy, więc sprawdzenie liczby rekordów w pracy i liczbę wyników zapisana w systemie kontroli pracy byłoby mądre posunięcie.
Ponadto, choć ten pokazuje, jak miejsca pracy mogą być wybierane i zarządzane z SQL-ramkę zapytania należy być naprawdę abstrahując od Ciebie pracy tak, że jeśli zdecydujesz się przejść na korzystanie z usług internetowych, system plików, XML , lub inny szereg systemów nie wpłynie kod powyżej.
Konfiguracja pracy
Kolejny aspekt, należy rozważyć, jest wielkości zadania i konfiguracji. Grając w konfiguracji pracy możemy strike doskonałą równowagę między szybkością, procesu replikacji i niezawodności. Weź parę szeĹ> ciu przypadkĂłw scenariuszy:
- Praca trwa od 1 dzień każdego uruchomić: Oznacza to, że pracownicy potrzebują 15 dni na proces każdej pracy (pamiętaj 10% mocy dla 2/3rds czasu). Oczywiście nie jest to mądry konfiguracji, rozmiar pracy jest zbyt duży! Zajmie to co najmniej dwukrotność czasu, aby dostać pracę przetwarzane należy wstępnego pracownik go AWOL (czas, aby podnieść, że nie zwróciło w wyniku przerobu plus czas). W idealnym można mieć co najmniej jeden pełny praca łatwo usuwane przez koniec każdego długi okres bezczynności, w ten sposób można zachować miejsca pracy i ponad dolną, w najgorszym przypadku pracy zajmie dwa dni, aby proces ten powinien najpierw przejść brakuje.
- Praca trwa od 1 minuty do uruchomienia: Oznacza to, że pracownicy biorą około 15 minut do uruchomienia każdej pracy. O ile może początkowo wydawać idealną, można uzyskać dodatkowe przetwarzanie w czasie pracy na lunch, przerwy kawowe, spotkania itp. scenariusz ten obciąża innych obszarów systemu i wprowadza swoje własne problemy. Przykładowo, po pierwsze konfiguracji stosunek czasu przetwarzania zamierza iść w prawo w dół, tracąc tym samym skuteczność systemu. Twoja sieć będzie stale streaming informacji o pracy dla różnych pracowników frustrujące pracowników, którzy są dong ich codziennej pracy. Jesteś także zamiar umieścić więcej obciążenie serwera przetwarzanie zadań, ponieważ musi rozdać wiele, wiele małych kawałków pracy na bieżąco. Wreszcie, w tej sytuacji, jeśli serwer praca idzie w dół masz zamiar stworzyć ogromne zaległości w pracy, podczas gdy większe nieukończonego zadania może dalszego przetwarzania w błogiej nieświadomości, że serwer praca była w trudnej sytuacji.
W rzeczywistości nie będzie nikogo, idealne konfiguracji konfiguracji sieci, wiele zależy od dostępnych środków, rodzaj pracy, wymagane turnaround czasu pracy, możliwość pracy w sieci, i tak dalej. Jednak kilka wskazówek, to:
- Rozmiar pracy tak, że każdy pracownik może przejść przez co najmniej 3-4 nowych miejsc pracy w ciągu 15 godzin (najdłuższy czas bezczynności prawdopodobnie)
- Zagraj z wielkości zadania, tak aby czas instalacji staje się dość nieznaczny w porównaniu do przetwarzania czasu (biorąc pod uwagę punkt powyżej).
- Jeśli zadanie nie zakończy się w podwójnej ilości czasu (może mniej) można się spodziewać jej zakończenie założyć, że tego nie ma AWOL i rozpoczęcie jego przetwarzania go innym pracownikiem. Oznacza to, być może trzeba będzie czekać nawet do trzech razy ich normalnej pracy na jej zakończenie (ewentualnie dłużej, jeśli kolejne zadania nie). Możesz skrócić ten czas, ale należy uważać, aby nie zmniejszyć to zbyt wiele jak można rozpocząć powielania zadań przetwarzania na bieżąco.
- Praca powinna być niezależna poza wymagania jak najwięcej. Serwer pracy, na przykład, skontaktujemy się tylko na początku i na końcu każdego zadania.
- Nie nasycenia sieci, będzie to miało dwa negatywne skutki, Twój dzień znajdzie pracowników za pośrednictwem sieci frustrujące i mogą występować problemy z połączeniami limit czasu problem, że będzie tylko gorzej jak skalowanie sieci.
- Zapewnienie miejsc pracy można uruchomić na swoich pracowników. Jeśli zatrudnienie zbyt dużej pamięci lub miejsca na dysku intensywnej pracy zacznie przerywać i jedyne co można zauważyć, jest spadek liczby miejsc pracy przetwarzane bez rzeczywistego powodu.
Przesyłanie Wyniki pracy
Przy składaniu wyniki pracy ważne jest, aby sprawdzić, czy wyniki nie zostały przedstawione przez innego pracownika, zwłaszcza jeśli obecny pracownik został uśpiony na jakiś czas.
Kiedy wyniki podane zapewnienia, że liczba wyników odpowiada liczbie rekordów w pracy.
Jak stwierdzono wcześniej, i nie można przecenić, budować odporność na uszkodzenia wyszukiwania miejsc pracy i przekazywania wyników. Pracownicy mogą (i najprawdopodobniej) przejść do trybu wstrzymania na najbardziej uciążliwe razy i musi to być coś dla siebie. Także po raz kolejny abstrahując od Twojego zgłoszenia wyników pomoże zaspokoić przyszłe zmiany w systemie kontroli pracy łatwiej sobie poradzić.
Podsumowanie
W tym section patrzyliśmy co serwer kontroli pracy musi to zrobić i jak się bardzo prosty system konfiguracji. Rozmawialiśmy jak odzyskać pracę z systemu kontroli i jak najlepiej skonfigurować zadania, aby jak najlepiej naszym systemu sieci biurowych. Aby zakończyć, ust lub dwóch od złożenia wyniki z powrotem do serwera kontroli pracy został przedstawiony.
- Serwer kontroli pracy zarządza miejsc pracy i zapewnia, że wszystkie jednostki pracy są zakończone
- W abstrakcji pracy select / przekazywania wyników możemy zmienić technologię na serwer kontroli bez większych problemów
- Konfigurowanie pracy w celu zapewnienia, że są one uruchomić szybko i sprawnie bez zbytniego nacisku na infrastrukturę, a nie powielając zadań przetwarzania na bieżąco.
- Upewnij się, że budowanie odporności na uszkodzenia i checking błąd na swoje procedury, pracowników może zawiesić i wznowić i najbardziej uciążliwe razy. Pamiętaj, aby sprawdzić, czy wyniki zostały już przedstawione przez innego pracownika.
Następny raz
W części 3 stworzymy naszej wirtualnej obrabiarki i skonfigurować nasze komputery z Windowsem na bezczynność wymiarze czasu pracy.