Категорія: Статті

Управління Grid Computing використанням віртуальних середовищ - Частина 1

За , в п'ятницю 4 грудня 2009 11:23 вечора

Введення

Я працюю в компанії, де ми запускаємо багато робочих місць, пакетна обробка мільйони записів даних кожен день, і я думав недавно про всі машинах, які сидять кожен день нічого не робити протягом декількох годин. Не було б добре, якщо ми могли б використовувати ці машини для зміцнення обчислювальної потужності наших систем? У цій серії статей, я буду дивитися на потенційні вигоди від використання офісу сітки використання віртуалізованих середовищах.

Як PHP- розробник я збираюся використовувати інструменти, які я використовую кожен день, а саме, Linux, MySQL , PHP, VirtualBox та Subversion (SVN). Однак я сподіваюся, що це керівництво буде адаптуватися до інших мов і технологій так само добре.

Рішення, яке я надаєте, буде частково заснований на тип обробки ми повинні були б досягти однак це не може бути правдою через всю статтю, як я буду щось змінити, для простоти, або робити більше цікавих сценаріїв використання.

Ці віртуалізованих середовищах, працюватиме на Windows-машин, так як це те, що більшість відділень перспективі. Обробки, офісної техніки, не повинні заважати співробітникам за допомогою цих машин, повинні не вимагають обслуговування в машині, і бути легко адаптується до нових машин, як вони стають доступними. Крім того, нові віртуальні машини не вимагає ніяких додаткових налаштувань, оскільки це значно знижує масштабованість і простота, при якому сітка система може бути розширена.

Чому розгортання сітки Управління обчислювальної?

По-перше ви можете подумати, чому б не використовувати ресурс хмарних обчислень, таких як платформи EC2 амазонки ? Ну причин може бути декілька, наприклад:

  • Ви не будете доручати певну даних у середовищі хмарних обчислень
  • Ви не можете помістити деякі дані в середовищі хмарних обчислень з юридичних причин (наприклад, дані з країни), потенційно з юридичних причин, наприклад, NHS записів.
  • Ви хочете, щоб ваша апаратура обробки тісні і мати повний контроль над апаратної занадто
  • У вас немає коштів проекту для запуску хмара випадках
  • Ваш офіс не має підключення до Інтернету, і тому її не можна використовувати хмара ресурсів
  • Вам не подобається дощ, хмари пропоную дощ, тому ви тримаєте подалі

Я впевнений, що список можна продовжити, але я думаю, що це достатньо.

Переваги Grid Computing Управління

Ну, давайте робити деякі математики (а в істинному стилі фізики дозволяє зробити деякі радикальні припущення). Уявіть, у вас є великий м'язистий сервер обробки працює 100 робочих місць на день. В офісі у вас є 50 машин, які простоюють по 16 годин на день, кожна з цих машин складає 10%, як потужний, як ваш м'язистий розірвати обробки. (Усі результати тут округлюються до недооцінюють збільшення продуктивності).

Так, 1 машина * 10% потужності * 2 / 3 часу = 0,067 тобто 1 настільний обробки в режимі часу можуть обробляти 6 повний робочий день.

Якщо ви зараз масштаби цього до нього займає 15 простою робочі столи для обробки, як багато робочих місць в день в якості основного сервера обробки робить.

Отже, в нашому офісі претендує 50 машин ми могли б збільшити нашу обчислювальну потужність від 1 сервер, що підтримує до 4 повних серверів, що обробляють, або ми могли б бути обробки 400 робочих місць на день замість 100.

Зверніть увагу, для будь-яких інвестицій у нове обладнання Ваш компанія тільки що збільшив свою пакетну обробку потужністю 4 рази! Потенційно ви збираєтеся збільшити споживання енергії, але в більшості офісів Я був на машинах, як правило, залишається на ніч в будь-якому випадку, щоб ви могли бачити це як зелений ініціативу.

Інші переваги також означати, що інвестиції в нові (або оновлені) обробка серверів може бути відкладено, якщо ваша машина офісу є достатніми і що, як вам поліпшити потужність вашої машини офіс офісі сітка стає більш потужним автоматично.

Технології

Що вам потрібно? (Чи, точніше те, що я використовував):

  • Idle офісне обладнання (в моєму випадку запасних старі вікна XP ноутбук)
  • VirtualBox (або іншого програмного забезпечення віртуалізації клієнта)
  • Віртуальну машину з PHP, MySQL running працює скоротити OS, я дзвоню ці мої LIMP серверів:)
  • Вакансії для запуску
  • Робота сервера (може бути інший віртуальної машини десь)

Типові Вакансії

Типи робочих місць, що ця система призначена для роботи виглядає наступним чином:

  • Система отримує список даних, на яких ми повинні порівнювати і повертають результати
  • Включає в себе перевірку відповідності / пошуку декілька (досить статична) джерел даних
  • Результати з джерел даних можуть зажадати подальшої перевірки, зливаючись, перевірка додаткових джерел даних у відповідь на результати
  • Дані повертаються з відповідними записами, повністю перевірені і оброблені
  • Кожна запис протягом роботи не залежить від інших

Тому в основному ми дивимося на запущених завдань, які вимагають суміш пошук у базі даних і деякого числа хрускіт, досить типовий сценарій в бізнес-середовищі.

Сітка рішення не тільки вигідно для обробки робочих місць такого типу. В принципі, будь-який процес, який може бути розділена на незалежні модулі можуть працювати паралельно. Див цей Вікіпедії прикладів і додаткової інформації: Grid Computing , але пару відомих прикладів SETI @ Home і BIONC . Є рамки для виконання обчислювальних мереж, і вони також заслуговує вивчення.

Що ми досягли?

До кінця цих статтях я сподіваюся показати, що розгортання офісу сітки не повинні бути дуже дорогим або багато часу. Я збираюся обговорити наступні питання:

  • Налагодження системи управління завданнями, робота конфігурації
  • Створення відповідної обробки віртуальної машини
  • Як налаштувати систему на вікна машини
  • Забезпечення ви використовуєте останню версію коду і даних
  • Розгортання та тестування
  • Забігаючи вперед

Я буду вдома (добре, я збудував, а потім написав це) приклад програми для тестування концепцій на локальній машині через Windows XP, і мій "GridMachine" віртуальної машини. Моя робота серверний елемент управління буде моєю основною машиною, яка працює Fedora 11 .

Це зовсім не означало, щоб продемонструвати повністю робочий надійні системи, її важило більше, демонстрації та обговорення показують, що ці речі можуть бути досягнуті в розумно короткі строки і з мінімальними витратами. Будь ласка, не соромтеся, надсилайте мені будь-які коментарі, виправлення або поліпшення, і я зроблю все можливе, щоб ця стаття оновлено до матчу.

Наступний раз

У частині 2 я почну, дивлячись на системи управління роботою, і вивчити, як робочі місця повинні бути налаштовані для досягнення найбільшої обсяг обробки в той час як забезпечення того, щоб кожну вимогу обслуговується в обов'язковому порядку.

Управління Grid Computing використанням віртуальних середовищ - Частина 2

За , в п'ятницю 4 грудня 2009 11:23 вечора

Введення

Я працюю в компанії, де ми запускаємо багато робочих місць, пакетна обробка мільйони записів даних кожен день, і я думав недавно про всі машинах, які сидять кожен день нічого не робити протягом декількох годин. Не було б добре, якщо ми могли б використовувати ці машини для зміцнення обчислювальної потужності наших систем? У цій серії статей, я буду дивитися на потенційні вигоди від використання офісу сітки використання віртуалізованих середовищах.

У частині 1 я дав огляд системи і технології, я буду використовувати, а також обговорили деякі з потенційних причин, чому ви хотіли б створити офіс сітки.

Керування завданнями

Якщо ви збираєтеся бути запущений робочі місця, то ви будете мати потребу, якимось чином управляти ними. Ваше завдання системи управління (на вашу роботу сервера) повинен бути дуже добре продумані, перш ніж навіть намагатися запустити офіс сітки. Так по-перше, які завдання для системи управління завданнями:

  • Роздайте робочих місць на вимогу робітників
  • Скажіть робочим, який тип запуску завдань
  • Трек робочих місць
  • Переконайтеся, що робочі місця запускати тільки один раз
  • Забезпечити роботу цих працівників, або хоча б сказати їм, де його отримати

Крім того, система повинна бути розширюваної, який діє на даний момент в рамках однієї справи може бути продовжений до запуску кількох типів робочих місць, як бізнес бачить себе в сітці рішення. Наприклад, робочі місця можуть отримати пріоритети, більше ніж один тип завдання можуть існувати (тобто кілька баз код), у результаті ви можете навіть запустити кілька різних машин працівника, які оптимізовані для кожного типу завдання (хоча це ніяк відійти від "загального працівника "ідея). Завжди прагніть думати про майбутнє, при розробці системи, коротке бачення строк може призвести до довгостроковій перспективі розчарування і збільшення часу розвитку.

Робота сервера

Ми збираємося потрібно десь контролювати свої робочі місця з, це повинна бути єдина система у вашій сітці, яка має фіксовану локатор ресурсу, будь то IP-адресу, ім'я хоста, URL-адреса (з використанням внутрішнього DNS) і т.д. Це відбувається тому, що робітники повинні знати, де шукати роботу, працівникам необхідно знайти систему управління завданнями (не система управління завданнями знайти працівників).

Роботи самого сервера насправді не складне завдання (у базовій системі чи інакше), він повинен зберігати список завдань, роздавати робочі місця, отримувати результати, а потім зберігати їх для подальшого використання. Як ці частини (наприклад, "роздавати робочі місця") визначаються може бути дуже простий. Пізніше ми можемо розширити системи включають адміністративний інтерфейс для додавання, редагування, видалення, призупинити роботу, але це виходить за цю вправу.

Існує ніяких підстав, те, що ваша робота сервера не може бути віртуальна машина працює протягом вашого основного сервера обробки умови, що вона не зливає воду занадто багато ресурсів з нього. Роботу сервера однак потребує високої доступності, якщо він йде вниз, у п'ятницю ввечері ви будете втрачати всі вихідні обробки, потенційно варто Вам пару тижнів вартує часу обробки (в порівнянні з вашою основною сервер обробки поодинці) . Ви можете хотіти розглянути питання про створення вашій роботі сервера з балансуванням навантаження середовища для забезпечення високої доступності.

Основні налаштування

Базові налаштування для нашої роботи сервера буде складатися з того, що я дзвоню одному з моїх LIMP серверів (тобто Li ммк, м ySql, Р л.с.). Код, що виконується на працівників Теа дійсно працюватиме, які роботи він може працювати, взаємодіючи з роботою баз даних системи управління. Пізніше ми могли б створити веб-сервіс і фактично роздавати робочі місця замість того, робочі роблять важку роботу самі, але зараз ми будемо продовжувати використовувати KISS, принцип (Keep It Simple, Stupid!).

Таким чином, дозволяє створити три MySQL таблиць для вирішення робочих місць. Це будуть робочі місця ``, `jobRecords` і `jobResults`.

робочих місць таблиці Тут я використовую SQL Buddy велика невелика альтернатива PhpMyAdmin тільки тому, що її легше встановити на CentOS (для інших см.: 10 великих альтернативи PhpMyAdmin )

Ця таблиця складається з 5 простих полів,

  • ID: Унікально ідентифікувати роботу
  • Назва: Не могли б бути номер клієнта, або будь-яку кількість інших ідентифікаторів
  • Статус: Ви повинні знати, де робота на, наприклад,
    • 0: Чи не почалася
    • 1: Підібрав
    • 2: Завершено
  • started_by: хто почав робити цю роботу? Це не зовсім потрібно, але добре б мати. Я пропоную відстеження робочих по їх IP-адреса в мережі
  • started_at: Коли працівник почати роботу? Відстежуючи вакансії, які не завершені протягом X кількість часу ми знаємо, що потрібно підібрати роботу ще раз, і почала переробки іншим працівником. Робітники могли зупинити обробку / переходу в автономний режим для будь-якого числа причин, збій живлення, збій, втрата мережі і т.п.

Легко, як ця таблиця може бути розширена за рахунок декількох додаткових полів, щоб забезпечити статистику детектора, колонки закінчити вчасно, щоб побачити, скільки часу роботу взяв, лічильник щоб дізнатися, скільки робочих взяв роботу (очевидно, це має, як правило, 1), пріоритет завдання, список можна продовжувати і продовжувати. У складніших сценаріїв роботи можна було б вказати, скільки пам'яті працівник матиме доступ до (і, отже, слід використовувати відповідні робочі), або навіть якийсь тип працівника не буде потрібно.

Давайте додамо кілька робочих місць приклад:

Наприклад робочих місць

Наступна таблиця знову досить простий для розуміння, це наші записи роботу. Вони пов'язані з основною таблиці робочих місць до колонки `jobs_id`. Складових цієї таблиці дуже багато що залежить від даних, які ви повинні надати, щоб ваші працівники, дозволяє зробити дуже простий приклад, коли у нас є чотири колонки:

  • ID: ідентифікатор запису
  • ім'я: Ім'я власника
  • адреса: адреса Особи
  • jobs_id: ідентифікатор завдання, що цей запис пов'язана з

Третя і остання таблиця складається з таблиці результатів, він так само, складають, як наші записи таблиці, а з додаванням деяких стовпців може бути частиною таблиці записів:

  • job_record_id: Посилання результат роботи таблиці
  • Результат: дані результату

... І це все, що потрібно для управління завданнями! (Хоча й на самому базовому рівні) В моєму випадку я вказав на іншу таблицю, де мої данні на процесі був розташований, але це може так само легко було файлу, параметри для запуску програмного коду, то ім'я його.

Вибір роботи

Як зазначалося раніше, робітники будуть робити свою роботу управління для нас зараз, так що все, що потрібно зробити, це знайти роботу, яка повинна обробки та отримання інформації. Як би ми це зробити? Ну забрати наші критерії відбору і роботу шукати роботу, в SQL я зробив наступне:

  1. Візьміть будь-яку роботу, яка не позначені як повна, але від нашого працівника і скинути (замінити __ME__ з ідентифікатором, простим буде IP-адреса):
      UPDATE `роботи` SET `статус` = 0 WHERE `статус` = 1 AND `started_by` = __ME__; 
  2. Використовуючи наші критерії роботи вибору, виберіть роботу і сказати системі управління, що цей працівник має справу з ним:
      UPDATE `роботи` SET `статус` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `статус` = 0 АБО
     (`Статус` = 1 AND `started_at`> DATE_SUB (NOW (), інтервал X ЧАС)) ORDER BY `ID` ASC; 

    За захоплення робочих місць, які не повернулися результатів в X кількість часу ми гарантуємо, що всі роботи виконуються у разі працівника або збій відбувається в самоволку.

  3. Наступна захопити робочі місця деталі потім самі записи:
      SELECT * FROM `роботу` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `ID` = __JOBID__; 

Після завершення роботи ми вставляємо наші записи результату і знак роботу в якості повною. Пам'ятаєте, як робота може призупинити / відновити в будь-який момент забезпечити певну стійкість в ваш сценарій. Цілком ймовірно, що завдання призупиняє половина шляху через оновлення системи управління завданнями, тому перевірка кількості записів в роботу, і кількість результатів, збережені в системі управління роботою б мудрим кроком.

Крім того, у той час як це демонструє, як робочі місця можуть бути вибрані і управляються з SQL-запиту кадр, який ви повинні бути дійсно абстрагування вашій роботі управління, так що якщо ви вирішите перейти на використання веб-сервісів, файл системи, заснованої на XML , або будь-який інший число систем, це не вплине на код вище.

Робота конфігурації

Наступний аспект, щоб розглянути є розмір робочих місць і конфігурації. Граючи з роботи конфігурації ми можемо страйку відмінний баланс між швидкістю, процес реплікації, а також надійності. Візьміть пару сценаріїв оператора А:

  1. Вакансії приймати по 1 день кожен для запуску: Це означає, що працівникам необхідно 15 днів, щоб обробити кожне завдання (пам'ятаєте, 10% потужності для 2/3rds від часу). Звичайно, це не мудра конфігурації, ваша робота розмір занадто великий! Це займе принаймні вдвічі більше часу, щоб отримати роботу повинні оброблятися початковій працівника йти в самоволку (час, щоб забрати, що він не повернув результату плюс переробці часу). В ідеалі ви повинні принаймні один повний робочий легко очищається в кінці кожного періоду тривалого простою, таким чином ви зберегти робочі місця цокання більше, а в гіршому випадку робота займе два дні, щоб процес повинен спочатку піти зниклими без вісті.
  2. Вакансії приймати по 1 хвилина для запуску: Це означає, що ваші працівники займе близько 15 хвилин для виконання кожного завдання. Хоча це може спочатку здатися ідеальною, ви отримуєте додаткову обробку роботи під час обіду, кава-брейки, нарад і т.д. даний сценарій ставить навантаження на інші сфери вашої системи і вводить свої власні проблеми. Наприклад, по-перше ваші налаштування / обробки співвідношення часу буде йти прямо, тому втрати ефективності системи. Ваша мережа буде постійно потокове роботу інформації різним робочим засмучує співробітників, які дон їх повсякденній роботі. Ви також збирається приділяти більше навантаження на сервер обробки роботу, як це блюдо з багато-багато маленьких шматочків роботу на регулярній основі. Нарешті, у цій ситуації, якщо ваша робота сервер недоступний ви збираєтеся створити величезний знову увійти незавершених робіт у той час як більше робочих місць можуть продовження обробки в блаженному невіданні, що робота сервера зазнає труднощів.

Насправді не буде одна ідеальна конфігурація для установки сітки, багато що залежить від наявних ресурсів, видів роботи, роботи час обробки вимог, можливість роботи в мережі, і так далі. Однак деякі керівні принципи будуть:

  • Розмір робочі місця так, щоб кожен працівник може пройти як мінімум 3-4 робочих місць протягом 15 годин (довга ймовірність простою період часу)
  • Грайте з роботою розміру, так що час установки стає досить незначна порівняно з обробкою часу (з урахуванням вище точки).
  • Якщо робота не завершується в два рази більше часу (може бути менше), ви очікуєте, що для її завершення припускати, що його пішли в самоволку і почати її обробку з іншим працівником. Це означає, що ви, можливо, доведеться чекати до трьох разів нормальна довжина роботу для його виконання (можливо, більше часу, якщо подальша робота не вдається). Ви можете хотіти скоротити цей час, але будьте обережні, щоб не звести його занадто багато, як ви можете почати дублювання обробки завдань на регулярній основі.
  • Вакансії повинні бути незалежні від зовнішніх вимог, наскільки це можливо. Роботу сервера, наприклад, повинні бути тільки зв'язалися на початку і в кінці кожної роботи.
  • Не наситити вашої мережі, це буде мати два негативних ефектів, ваш денний персонал буде знайти за допомогою мережі розчарування і проблеми можуть виникнути з підключенням час очікування проблема, яка буде тільки погіршуватися, оскільки Ви масштабувати сітку.
  • Забезпечити робочі місця можуть працювати на ваших працівників. Якщо робочі місця стають занадто великий обсяг пам'яті або дискового простору інтенсивної роботи розпочнуться перериваючи і не тільки, що ви помітите це крапля в число робочих місць, обробляються ніякої реальної причини, чому.

Відправка результатів роботи

При подачі результати роботи, важливо переконатися, що результати не були представлені на іншого працівника, особливо, якщо поточний робочий був заморожений на деякий час.

Коли результати представленого забезпечення того, щоб кількість результатів збігається з кількістю записів в роботу.

Як зазначалося раніше, і не може бути старше підкреслив, будувати відмовостійкість на пошук роботи та результати уявлення. Працівники можуть (і швидше за все) переходять в режим очікування в самий невідповідний раз, і це повинно бути обслужені. Також ще раз абстрагуючись від ваших результатів уявлення допоможе задовольнити майбутні зміни в роботу системи управління набагато простіше мати справу.

Резюме

У цьому section ми дивилися на те, що сервер управління завданнями, потрібно зробити і як його отримати дуже прості системи, створеної. Ми обговорили, як отримати роботу з системою управління і як краще налаштувати робочі місця, щоб отримати більшість наших вашої системи сітки офісу. Щоб закінчити, один-два абзаци про подання результатів на сервер управління завданнями була представлена.

  • Сервер управління завданнями управляє завданнями і гарантує, що всі роботи будуть завершені одиниць
  • За абстрагування ваша робота вибору / результати подання ми можемо змінити технологію управління сервером без особливих проблеми
  • Налаштування робочих місць, щоб вони виконуються швидко і ефективно, не піддаючи занадто багато тиску на мережеву інфраструктуру, і без дублювання завдань обробки на регулярній основі.
  • Переконайтеся, що ви будуєте відмовостійкість і помилок checking у ваші процедури, працівники можуть призупинити і відновити, і в самий невідповідний разів. Не забудьте перевірити, якщо результати вже були представлені іншим працівником.

Наступний раз

У частині 3 ми створимо нашу віртуальну машину обробки і створили наші вікна машини, щоб стати часу простою працівників.

Управління Grid Computing використанням віртуальних середовищ - Частина 5

За , в п'ятницю 4 грудня 2009 11:03 вечора

Введення

Я працюю в компанії, де ми запускаємо багато робочих місць, пакетна обробка мільйони записів даних кожен день, і я думав недавно про всі машинах, які сидять кожен день нічого не робити протягом декількох годин. Не було б добре, якщо ми могли б використовувати ці машини для зміцнення обчислювальної потужності наших систем? У цій серії статей, я буду дивитися на потенційні вигоди від використання офісу сітки використання віртуалізованих середовищах.

У частині 4 ми розглядали за допомогою інструментів, щоб гарантувати, що ми біжимо останньої версії коду і даних джерел, з тим, що отримані результати, завжди актуальні, актуальний з останніми бізнес-інформації і логіку.

Перед розгортанням

Перед розгортанням підвісній системі, якщо є одна річ, ви робите, і одне тільки це тест вашої нинішньої системи! Неважливо, що ви розповісти колегам про те, скільки додаткової роботи вашої системи буде робити, якщо у вас є номери, щоб підтримати це ваші гарантії нічого. Таким чином,

  • скільки записів ви можете процес в даний час? У день? У годину?
  • Скільки часу зазвичай займає розвернутися роботу?
  • Наскільки більше можливостей у вас є?

Там також додаткові питання:

  • Якщо ваш сервер обробки (або один з ваших серверів обробки) йде вниз як це вплине на ваші можливості, чи будете ви каліка?
  • Які переваги ви сподіваєтеся / очікуєте отримати від підвісної системи?
  • Чи є ваші офісні машини здатні працювати робочі місця?
  • Ваші (або ви можете бути перетворені робочих місць) для роботи в цьому стилі працює?

Останній великий пункт повинен прийняти свій час на будь-яких серйозних змін, як це. Оновлення обробки коду для роботи з використанням нової методології, тест знову. Можливо налаштувати обробку сервер для запуску віртуальної машини, зрештою сервер обробки вашого буде просто ще один робочий (тільки дуже потужний відносно). Дозволити новий процес, щоб влаштуватися.

Розгортання

Моя пропозиція була б поп в офісі один уїк-енд виконувати всі установки і налаштування. Робіть це якраз перед святом два тижні і піти, щоб інші бідолаха мати справу з наслідками ... може і ні ...

Розгортання системи, як це має бути повільним. Незважаючи на цей час відносно простий в установці цієї системи вплине на всю інфраструктуру офісу (ну цифровий). По-перше, розкачати до декількох машин одночасно, моніторинг мережевого трафіку, як працівник хостів виконувати на день за днем. Можливо, вам доведеться змінити конфігурацію вашої роботи у відповідь на ваші результати.

Після того як система оселився з декількох машин (скажімо 10% всіх офісних машин, тобто 5) вести моніторинг мережевого трафіку і хост-машині performance. Наступний тест знову, тепер ви повинні обробки 33% більше робочих місць, ніж ваш перший тестів. Перевірте це так, або що ви по крайней мере в цьому футбольному полі. Якщо ні, то дослідити, що відбувається перед переходом. Повторіть цей цикл, поки ви щасливо мати всіх офісних машин, що працюють без вбивства індивідуальної роботи машини або шліфувальних мережі в глухий кут.

У всі часи тримати бенчмаркінг, навіть після всіх розгортань зроблені. Перевірте, як нові оновлення коду впливає на швидкість вашої системи, перевірте всі працівники звітності та обробки завдань. Поступово (дуже повільно) приріст вашої роботи конфігурації, щоб отримати кращу з ваших працівників та мережі.

Стоп!

Що робити, якщо ви хочете зупинити ваших працівників від бігу на деякий час? Вони всі там працює, регенерує, і з усіх сил намагаються обробляти дані, як голодні комахи. Відповідь може здатися очевидним, але його варто додати, про всяк випадок його уваги. Просто редагувати свої обробки скрипта з виходом (0) або померти () або інші заяви, щоб вбити вашого завдання обробки. Важлива причина, чому ми завжди намагаємося оновлення до останньої обробки сценарію до того, біжи!

Демонстрація системи

Для того, щоб написати це набір коротких статей, які я створив дуже маленька сітка для демонстрації технологій і методологій. Я прочитав багато статей, навчальні посібники і використовувати різні інструменти для налаштування і моніторингу, що відбувається. Ні в якому разі я вийшов і насичений цілий офіс з трафіком і ні у мене був доступ до регулярних співробітники PC щоб побачити, як господар виконання яких вплинули.

Мій демонстрації можливостей системи був дуже скромний у насправді. Я використовував свій звичайний робочий стіл налаштований як сервер управління завданнями. На цьому я встановив MySQL сервер, встановлений налаштований як майстер у реплікації, PHP , а, SVN пов'язані через Apache (для доступу через працівника VM).

Потім я створив машину CentOS працівника на VirtualBox на 6-річний ноутбук Windows XP. Я установки заплановані завдання, як зазначено після копіювання VM на машині і відпустити її.

Віртуальна машина була створена з PHP, підривну діяльність, і MySQL. Я перевірив філія під назвою «робочий» від моєї роботи сховище контролю серверів і перевірите, що він може бути поновлений за допомогою "запускали". Потім я установки MySQL в якості раба і перевірити, що дані реплікації від MySQL на сервері керування роботою до працівника VM. Після всього цього мені встановити скрипт баш і хрон.

Мій обробки сценарій в основному пішли по лінії цього (дуже прості речі):

  • Читайте в поле імені
  • Підрахував кількість подібних імен в таблицю з джерела даних відбулася В.М.
  • Підрахував кількість імен і вище, але розщеплення ім'я пробілами (тобто ім'я, середнього, прізвище)
  • Повторні цей процес в 1000 раз

Кожне завдання зайняло приблизно 20 хвилин, щоб бігти. В один момент я відкрив кілька копій працівника ВМ на ноутбук вікна і дивився робочих місць перевіряється за кожним з адрес IP працівника. На цьому етапі я також підтвердив, що реплікація автоматично перезавантажений.

Залишивши ноутбук на холостому ходу в результаті працівник починає процес роботи з сервером управління завданнями. При поновленні використання ноутбука була затримка близько 30-60 секунд, це неабияка кількість часу і співробітники повинні бути обізнані, що їх машина може паузу протягом короткого часу, коли повертався до машини. Нові машини не можуть мати паузу так довго. Благо обсяг обробки, що виконуються цими машинами під час простою буде більше, які переважують співробітників чекаючи короткий термін (скажімо, 1 хвилину), прибувши на своїх машинах вранці (я часто чекати довше, що це для Windows Defender Оновлення пройде), якщо вони були повідомлені про це (корисно час, щоб захопити ранкова кава!).

В цілому, я впевнений, що я показав технологій, які можуть бути використані для створення такої системи. Я показав, що така система працює на (дуже) малих масштабах і з ще кілька експериментів може бути розширений використовувати ресурси машин офісу. Якщо я не дійдете до точки, зробити це я був би дуже цікаво знати / бачити, коли хтось інший.

Висновки / Оцінка

Наступний очевидний крок мав би насправді отримати реальний приклад і почати розгортання такої системи, як це в офісі і подивитися, що відбувається. Запитувана бізнесу взяти на себе зобов'язання це без сліду палаючий компанії, щоб довести ефективність технології і може бути трохи важко. Мережа / Розподілені обчислення дуже популярна деяких колах і має деякі великі програми (BIONC, SETI @ Home, Folding @ Home і т.д.). Я не став, однак, знайти в менших масштабах і проста система, як це в моїх пошуках, які могли б бути розгорнута в офісі.

Я створив в основному вільні системи, використовуючи головним чином з відкритим вихідним кодом і інструменти, доступні практично в будь-якому офісі. Технології в основному були продемонстровані і шоу для виконання і працювати, як очікувалося. Сподіваюся, у мене є показати, що з не так багато роботи і дуже простий установки можна розгорнути обчислювальні офіс підвісній системі, то є потужний, дешевий, Â і масштабовані все в той же час.

Як тільки система встановлена ​​і працює майже немає кінця на суму настройки та покращення, які ви можете зробити. Наприклад статистика / тестування можуть бути легко додані показує цінність такій системі кожен день. Нові машини можуть бути додані швидко і легко, як і коли вони приходять з модернізації існуючого обладнання зміцнення вашої обчислювальної потужності.

Я сподіваюся, вам сподобалося читати цю серію статей і дав вам поживу для роздумів про запуск системи офісу сітки. Рішення, представлене тут, не обов'язково будуть працювати у всіх ситуаціях, але повинні бути адаптовані, щоб дозволити вам отримати ваш обробки даних здійснюється за допомогою власного рішення.

Будь ласка, не соромтеся, надсилайте мені будь-які коментарі, виправлення або поліпшення, і я зроблю все можливе, щоб ця стаття оновлено до матчу.

Zend Framework: основи - Огляд

За , в суботу 28 листопада 2009 10:42 вечора

Мій роботодавець недавно заплатили за групою з нас розробникам використовувати Zend Framework: основи Звичайно, тут я буду резюмувати мої думки і думки щодо курсу для інших. Для тих, хто хоче заощадити час, ось моє резюме:

Для розробників, не було часу, щоб дивитися на Zend Framework, цей курс (Zend Framework: основи) забезпечує хороше загальне уявлення про рамки познайомити вас з ключових областях і давати достатньо інформації для того, щоб продовжити. Для тих, хто витратив час на пошуки в рамках і пішли за один або два підручники цей курс не пропонує багато за його межами.

Фон

Я PHP розробник близько 5-6 років, і почали роботу з Zend Framework, на основі компонентів протягом останніх 6 місяців. Я розробив і / або був розробником пара невеликих Zend Framework MVC sites.Â Я буду чесний, я не мав величезну кількість контактів з іншими рамки, кодування точки зору, але провів кілька годин дослідження проекту веб-сайтів та оцінки them. рамки і оточуючим співтовариством Zend Framework цілком цікавою і там, здається, величезні можливості в тому, де його збираються.

Про курсу

Звичайно поставляється більш ніж 9 двогодинної сесії WebEx (з 10-хвилинну перерву в середині). Часу витрачається проходить набір слайдів, що надаються Zend з обговоренням в будь-який час. Ви можете використовувати мікрофон для спілкування з інструктором, але, чесно кажучи, я не бачу нікого використовувати що-небудь більше, ніж вікно чату. Крім того машина VMWare Ubuntu це за умови, що є приклад коду і проектів створити пробну версію Zend Studio. Звичайно лідер розмовляє з учасниками або за рішенням інтегрований VoIP, або ви можете зателефонувати у використанні однією з багатьох у всьому світі набрати в цифрах.

В ході матеріал складається з короткого огляду рамок і шаблон MVC, перш ніж відправитися в приклад програми гостьовій книзі. Дискусія показала завантаження, Zend_Application, таблиць БД, Доступ до баз даних, форми, Фільтрація, ACL, Користувачі і т.д., і т.д. В основному, що охоплюють всі теми, які ви б вимагати, щоб отримати основний сайт до працює весь час даючи вам інструменти для піти і одержати більш просунутими в рамках (хоча ця кількість на "Дивіться сайт" велику частину часу).

Час задається в коді якісь приклади, а також розробити "гостьова книга" та застосування простих "вікі". Особисто я відчував, що надання коду або кожен додаток, а потім просять нас розвивати те, що, по суті копію поруч насправді не забезпечують хороший досвід. Я б волів, щоб розробити програму схожі, але не ідентичні. для прикладу програми з вигода від наявності керівництво для позначення. Крім будівлі додатків з нуля, з демонстратора б, можливо призвело до більше питань про те, чому і яким чином, що дає більш повне уявлення про рамках, в кінці кінців ви можете подивитися специфіку після закінчення курсу.

Остання лекція складалася з працюючих на вікі програми з допомогою / керівництвом інструктора. Після курсу зворотного зв'язку було прийнято, було підкреслено кілька разів через курс, який бере Zend зворотній зв'язок дуже серйозно, насправді мабуть наша версія курсу була зовсім новою. Деякі з інших розробників у компанії буде приймати звичайно скоро так і буде цікаво подивитися, якщо це сталося.

Звичайно стиль був неформальний, дозволених до зворотного зв'язку та взаємодії між учасниками та інструктором. Керівник курсу був доброзичливий, доступним (адреси електронної пошти були поділені на питання), і в той час свого виступу зі слайдів була трохи невпевнено, здавалося повністю компетентні в рамках. Він явно когось, хто використовував рамках на регулярній основі, а не той, хто вчить вчити, звичайно, мені сподобався досвід "реального світу" в цьому відношенні.

Загальне відчуття

У певному сенсі я знайшов звичайно порожня трата часу, в інших це було дуже зручно. Сподіваюся, я отримаю мої доводи по всьому ясно, і, можливо, забезпечить певну їжу для роздумів чи корисну зворотний зв'язок (знаючи мене це навряд чи!).

Для мене цей курс був націлений на занадто низькому рівні. Пройшовши через Керівництво по швидкому старту, читати Роба Аллена Zend Framework в дії, а також працював з рамками небагато що, що я дійсно не отримати що-небудь занадто багато. Я б, звичайно сподобалося, щоб забрати з кінця швидкий старт і розвиток додаткових навичок.

Тим не менш, назва курсу робить чітко "Zend Framework: основи" і в цьому сенсі звичайно досягає того, що він має намір робити. Інші члени команди розробників, які не витратили час на пошуки в рамках кожної сесії закінчив з ентузіазмом і запитань, який був дійсно приємно бачити.

Не все було втрачено, це було добре провести час підтверджує основні деталі рамки і отримати задати пару питань у областях, де я не був на 100%. Крім того, був час, що я отримав, щоб сісти з кожним днем ​​і думати про кодування з використанням рамок і майбутніх проектів, то я б не став з змогли зробити в іншому випадку (ви можете собі представити Вашу компанію погодилися, що:)). Не в останню чергу ви також отримаєте хороший сертифікат Zend сказати, що ви взяли участь в курсі (хоча і по електронній пошті).

Zend Framework сертифікації

Це було одне питання, який все приходили на розум під час курсу, чи не так підготувати мене до сертифікації? Швидко, легко цю гучну немає. Викладача курсів було абсолютно ясно, на що з додаткові консультації, що для сертифікації ви повинні дійсно використовувати бази в повсякденній основі, і відчуваю себе дуже комфортно і впевнено у її використанні та методологій.

Резюме

Враховуючи все, що я вже писав вище, я буду підсумовувати все, що в два простих пунктів маркірованого списку:

  • Нове в Zend Framework: Цей курс робить саме те, що Ви очікували б, це дає вам гарний введення в структуру і хорошу підготовку з основ, з яких можна будувати. Звичайно, здається, викликати інтерес і ентузіазм в рамках серед розробників.
  • Використовується в Zend Framework: В той час це було приємно, щоб зміцнити деякі з самих основ, я відчував, часу, зусиль і коштів, щоб взяти курс може з було краще витратити в іншому місці. Це буде приємно СЕЕУ Zend створити новий, більш високий рівень курсу прийняти розробникам наступного рівня -. Принаймні, стандарт сертифікації та за її межами Для цього я підписався б негайно.

Створення сайтів Таблиця класів (HtmlTable.php)

За , у вівторок 5 травня 2009 9:11 вечора

Я, необхідні для створення HTML-таблицю з PHP даних для проекту, що я працюю. На жаль, після трохи погуглити я не міг знайти нічого, що було відповідним, тому я вирішив створити свій власний.

Я розумію, що це може бути не найкращий столик генерації класу коли-небудь і там, напевно, кілька помилок все ж в ньому, але я б волів, щоб розділити і якщо хтось хоче кращу версію я буду дивитися в нього:) Я спочатку хотів створити Таблиця побудована з окремих об'єктів, наприклад, клітина об'єкт, ряд об'єктів (побудований клітинних об'єктів), але я зрозумів, накладні витрати з цього питання буде ЗДОРОВИЙ! Так що я повернувся в масив установки.

Клас буде розрахувати максимальне число стовпців, що використовуються у верхній і нижній колонтитули, або тіло і писати, що число стовпців. Верхні і нижні колонтитули, і заголовок не є обов'язковими. Атрибути складаються з масиву, де ключовим є ім'я атрибута і значення атрибута. Атрибути застосовуються до таблиці тегів (про створення таблиці - клас ініціалізації), рядків таблиці (масив [рядок] [атрибут]), і елементів таблиці (масив [рядок] [стовпець] [атрибут]), це стосується верхніх і нижніх колонтитулів, а також тіло таблиці.

Приклад

Я завжди знайти кращий спосіб, щоб дивитися на щось використовувати приклад так що тут ми йдемо:

 $ Таблиці = новий HtmlTable (масив ('Клас' => 'сортування,
                 'Стиль' => 'Ширина: 550px ;'));
 $ Заголовка [0] [0] ['зміст'] = 'ID';
 $ Заголовка [0] [1] ['зміст'] = 'Назва';
 $ Заголовка [0] [2] ['зміст'] = 'Дата';
 $ Заголовка [0] [3] ['зміст'] = 'Сайт';

 $ Стіл-> AddHeader ($ заголовка);
 $ Я = 0;
 Еогеасп ($ Розсилка AS $ статті новин) {
 $ ItemLink = "{$ статті новин ['назва']}";
 $ TableBody [$ я] = масив (0 => Array ('зміст' => $ статті новин ["ID"],
 'Атрибути' => Array ('стиль' => 'шрифта: жирний ;')),
 1 => Array ('зміст' => $ itemLink),
 2 => Array ('зміст' => $ статті новин ['date_posted']),
 3 => Array ('зміст' => $ статті новин ['сайт']));
 $ Я + +;
 }
 $ Стіл-> addBody ($ tableBody);
 Відлуння $ стіл-> drawTable ();
ID Назва Дата Сайт
9 Новини 1 2009-04-04 10:40:00 назва сайту
10 Новина 2 2009-04-04 12:44:11 назва сайту

І HTML виглядає таким чином:

  =  "sortable" style =  "width: 550px;" > <Клас таблиці = "сортування" стиль = "ширина: 550px;">
 <THEAD>
	 <Tr    >
		     > ID </ TH> 
      > Заголовок </ TH>
		     > Дата </ TH>
		     > Сайту </ м>
 </ TR>
 </ THEAD>
 <TBODY>
	 <Tr    >
		 =  "font-weight: bold;" >9</ td > <TD Стиль = "начертаніе шріфта: жірний;"> 9 </ TD> 
		 <TD    > Новини 1 </ TD> <TD    > 2009-04-04 10:40:00 </ TD> <TD    > < tr > Назва сайту </ TD> </ TR> <tr    = "font-weight: bold;" >10</ td > < td > <TD Стиль = "начертаніе шріфта: жірний;"> 10 </ TD> <TD    > Новини 2 </ TD> 
  <TD    > 2009-04-04 12:40:00 </ TD>
		 <TD    > Назва сайту </ TD>
 </ TR> 
  </ TBODY>
 </ TABLE> 

Код

HtmlTable.php
Якщо у вас є побажання зробити їх нижче, це було б здорово почути. Якщо ви будете використовувати його також, дайте мені знати, і я буду розширити її в майбутньому:)

Вхід в БД використанням Zend Framework

За , у вівторок 14 квітня 2009 9:06 вечора

Мені вдалося отримати сайт і працює з Zend Framework , всі реєстрації красиво FireBug / FirePHP тому наступним кроком було увійти в базу даних. Я також хотів увійти деяку додаткову інформацію, за допомогою платформи, такі як агент користувача, дата і час, отримати і пост змінних. Таким чином, щоб розширити ручної трохи тут, що я зробив:

// Set up logging to DB
$db = Zend_Registry ::get('dbAdapters');
$db = $db['general'];

$ ColumnMapping = Array ('пріоритет' => 'пріоритет',
"Повідомлення" => "повідомлення",
»Дати та часу '=>' час ',
"User_agent '=>' user_agent ',
"Get_vars '=>' get_vars ',
"Post_vars '=>' post_vars ',
"Сайт" => "сайт"
);

$ WriterDb = новий Zend_Log_Writer_Db ($ дБ, 'error_logging', $ ColumnMapping);
$ = Новий реєстратор Zend_Log ($ writerDb);

$ Реєстратор-> setEventItem («дати», дата ('Ymd H: я: S'));
$ Реєстратор-> setEventItem ('user_agent', $ _SERVER ['HTTP_USER_AGENT']);
$ Реєстратор-> setEventItem ('get_vars ", print_r ($ _GET, правда));
$ Реєстратор-> setEventItem ('post_vars ", print_r ($ _POST, правда));
$ Реєстратор-> setEventItem ("сайт", сайт);

$ Реєстратор-> Інформація ('Інформаційне повідомлення');

Де ключі масиву в $ ColumnMapping мої імена стовпців. «Пріоритет» і «повідомлення» розуміються Zend_Log_Writers але додаткові поля було додано, щоб дати мені деяку додаткову інформацію.

Очевидно, це передбачає, що у вас є реєстрація робітників, використовуючи один з інших письменників першої:)

Великобританія імена каталогів та додатки Facebook

За , в п'ятницю 10 квітня 2009 9:33 ранку

Один з кумедних речей, я був залучений в той час працював для Tracesmart це імена каталогів . В основному ми взяли наш величезна інформаційна база даних і витяг велику купу статистики про різні імен.

Процес це все одна велика SEO зусилля, щоб залучити більше трафіку на сайт, але він також надає деякі цікаві відомості та ім'я статистики.

Ось приклад для мене звуть Ллойд Уоткін , або я вважаю, більш правильно Стівен Уоткін . Зупиніться на хвилинку, щоб подивитися ваше ім'я на сайті Tracesmart, може бути цікаво;)

Ми також отримали імена статистичних даних по іменах каталогів сторінку, яка говорить вам, що імена були шукати і як недавно. Його дуже цікаво подивитися, імена відомих людей злетіти статистику, коли вони з'являються в новинах. Одним з останніх прикладів є те, що з Ліам Нісон хто дружина померла від лижах аварії останнім часом, хоча очевидно, люди не зовсім правильно з написання (звідси й величезна кількість хітів на цю назву) - Лайам Нільсон .

Facebook додатків

Як тільки імена каталогів була створена, ми приступили до створення програм facebook які ми duely під назвою ' Ім'я Моє ". Додаток facebook є розширенням імен каталогів і забезпечує деяку додаткову статистику. Для того, щоб додати імена каталогів на ваш рахунок facebook ласка, відвідайте:

http://apps.facebook.com/my-name/

Сімейні полів форми не представлені ...

За , четвер 4 вересня 2008 11:01 ранку

Як швидко записку, в рамках поточних агентство програма для ріелторів проект, я повернувся до редагування дати вступу в системі. Тепер замість того, дозволяє користувачам вводити будь-який старий фрагмент тексту я переключився на Javascript дата / час вибору (в короткостроковій перспективі), що дозволяє користувачеві 'забрати' і дату і час із спливаючого вікна.

Тепер, для мого старого систематичних вибору буде спливав, коли користувач натиснув на полі введення . Це, однак, дозволить користувачеві ігнорувати текстове поле і ще йти і введіть будь-яку стару річ в поле. Це не було ідеальним. Так моє рішення було " відключити "поле форми і поставити проміжок поруч з ним з OnClick подія називаючи дату / час вибору. Це означало, що користувач був змушений майже у використанні хороша дата / час вибору дати так хотів увійти в правильний формат (хоча це ще належить бути перевірені!).

Так що я почав проходження мого відформатованої дати-часу (и) за допомогою форми і збір намагається забрати їх з PHP$ _GET або $ _POST змінних. Поля Unfortunately'disabled 'не передаються через форму подання Це було дуже прикро. Було прийнято рішення включити вхід елемента за допомогою JavaScript, коли форма була відправлена ​​використанням OnSubmit події.

Це означало, що дані форми, пропускали через відповідно до вимог і красиво відформатована готові до перевірки ... Â

Пошук ключів масиву і матчі

За , в середу 13 серпня 2008 4:26 вечора

У мене було потрібно шукати через масив і повернення елементів, які мають ключі, які відповідають пошуковому запиту. Так що я подумав, що я розділю.

'W ги б мені це треба? ", Ймовірно, буде перше запитання, ви запитаєте, ну якби я хотів, щоб пошук по масиву для всіх елементів, які пов'язані з розмірами елемент, то я міг би витягнути відповідних ключів за допомогою цієї маленької функції:

 <? function searchArrayKey($array,$search) {  $search = strtolower($search);  if (is_array($array))  {   foreach ($array as $key => $data)   {    if (strpos(strtolower($key),$search) === 0) { $returnArray[$key] = $data; }   }   return $returnArray;  } else  { // User hasn't subimitted an array...   return false;  } } ?> 

Так, наприклад, якщо я хочу шукати масив елементів даних для вимірювання даних, то я міг би зробити наступне (і друкувати на екрані мабуть):

 $dimensions = searchArrayKeys($itemArray,'dimension'); 

Що б повернути щось на кшталт:

 print_r($dimensions); Array ( [dimension_height] => 20 [dimension_width] => 30 [dimension_depth] => 40 ) 

Custom php.ini with Plesk

By , Wednesday 13th August 2008 3:53 pm

We have a dedicated server with ukFast  on which we run a number of domains that exist on virtual servers running under Plesk . Anyway, on most of my domains I want to hide away warnings and for security keep errors to the log files, however on some of my domains (such as those I'm developing on) I want to show every little nasty warning and error that appears.

If I edit my PHP .INI”>php.ini this affects each and every domain on the server, not a good idea especially when several of the sites are fully live versions  So in order to get around this you need to put a file called vhosts.conf in your conf directory, for example, /var/www/vhosts/<my_domain>/conf/vhost.conf .

Once you've added your additional code, again for example I included,

 php_value error_reporting E_ALL php_value display_errors On 

followed by running the following command (this reconfigures all of your domains its just quicker lazier than typing in the domain name ,

 # /usr/local/psa/admin/bin/websrvmng -a 

If you're feeling a bit nimble then you can always type out the full version which is,

 # /usr/local/psa/admin/sbin/websrvmng -u --vhost-name=<my_domain> 

After this command if you look to httpd.include file, will see that your httpd.include will have an include line for your vhost.conf, something like this:

 Include /srv/www/vhosts/domain.com/conf/vhost.conf 












Панорама тему, Themocracy

7 відвідувачів онлайн
5 guests, 2 bots, 0 members
Max visitors today: 18 at 04:13 am UTC
В цьому місяці: 19 на 19-08-2011 6:09 ранку UTC
This year: 130 at 28-03-2011 10:40 pm UTC
All time: 130 at 28-03-2011 10:40 pm UTC