Systems Architect в Skelia
  • Creative Quarter: як підняти зарплати програмістам та одночасно зекономити гроші клієнту

    Замечательная идея, как по мне. Сразу видно как ребята строят микросервисную архитектуру в контексте бизнес услуг)))

    Будет очень интересно следить за развитием проекта и что из задуманного получится реализовать.

  • Выбор графовой базы данных (aka отговорите от neo4j)

    У neo4j community edition есть проблема с бекапами/ресторами. В enterprise версии есть весь необходимы тулинг, в community нужно полностью останавливать процессы БД для того чтобы сделать бекап и крестить пальцы каждый раз, чтобы из этого бекапа можно было потом сделать рестор.

  • О программистах, деньгах и успехе

    Классная статья! Спасибо!

  • (UPD: КУРСЫ ПРОВОДИТСЯ НЕ БУДУТ) Бесплатные курсы по JavaScript

    Довольно резкий комментарий. Не хочу быть «адвокатом дьявола», но курсы ведь бесплатные и значит никто никому ничего не должен.

    Но я с Вами согласен, пора бы обновить информацию о курсах.

    Поддержал: Vasyl Korchynskyy
  • PHP workers

    А кто будет следить за состоянием баш-скрипта, который следит за воркером?
    Или вокруг него тоже сделать скрипт с

    while true; .... sleep 1;

    Ладно, это шутка юмора =)

    Redis — это не Message Queue, это не БД, это не <много чего ещё>. Не стоит его бездумно использовать во всёх возможных ситуациях.

    Оставлю это здесь, на всякий случай:
    youtu.be/_gc94ITUitY

    Видео не о преимуществах Cassandra, а о недостатках Redis в определённых паттернах использования. Очень рекомендую.

  • Порадьте приклад якісного PHP коду (OpenSource, OOP, MVC)?

  • PHP workers

    1. Утечка памяти при использовании phpdaemon. Время от времени процесс вылетает и перезапускается еще один worker.

    Не используйте PHPDaemon. =)

    Как тут уже до меня советовали, используйте RabbitMQ для организации очереди. Redis — это не Message Queue и никогда ею не станет.

    Amazon SQS — слишком медленный на вставках, если проект достаточно нагруженный
    habrahabr.ru/...ms/blog/161787

    Beanstalkd — может и вариант, но если захотите сделать distributed, будет очень не просто. Да и у него свой собственный протокол и переключиться на что-то другое потом будет сложно.

    RabbitMQ даст вам из коробки набор общеиспользуемых протоколов: AMQP, STOMP, MQTT.

    Для воркеров, лучше не применять стратегию: «запускаться каждую секунду».
    Так как будет как минимум две пробемы:
    1. Оверхед на запуск, инициализацию соединений и т.д. Тобишь, проигриваем в производительности.
    2. Воркер может отработать и за 1.5-2 секунды при разных обстоятельствах. И в итоге у вас получиться несколько сущностей запущенного воркера.
    И тут опять же возможны варианты:
    — Лавинообразный рост воркеров, потому что в итоге каждый из них начнёт работать медленнее.
    — Неконсистентность выполняемых действий или банальные Data Races.

    Главная проблема подхода это потеря контроля над количеством и состоянием процессов воркеров.

    Чтобы решить данную задачу, нужно реализовать master process который будет запускать и контролировать количество запущенных процессов.

    Можно такой процесс написать самому и получить подобие phpDaemon. Можно взять хороший и готовый supervisord ( supervisord.org )

    Дальше по поводу воркеров. Сосредоточится нужно не на частоте перезапуска, а на количестве обработанных задач за раз. Чтобы исключить утечки памяти «простым» способом, процессы воркеров лучше переодически перезапускат после N выполненных задач.

    Дальше идея простая:
    1. Настраиваем supervisor на то что мы хотим X запущенных процессов worker.php.
    2. Каждый воркер после запуска обрабатывает N задач и завершается. (если задач нет, по таймауту).
    3. supervisord видит что процессов стало (X-1) или (X-Y) в общем случае и поднимает недостающий процессы.

    Схема живучая. Если нравиться — пробуйте.

    P.S. Практически равную дистрибуцию задач между процессами обеспечит RabbitMQ.
    P.P.S. Не забывайте что при работе с любой queue вы должны быть готовы получить одно и то же сообщение дважды. (тут много оговорок и ситуация происходит крайне редко, но она возможна)

  • Почему ваши идеи ничего не стоят

    отличная статья!

  • (UPD: КУРСЫ ПРОВОДИТСЯ НЕ БУДУТ) Бесплатные курсы по JavaScript

    Подскажите, есть ли какие-то новости по курсу?
    Налачался ли отбор участников?
    Программа и расписание курса уже сформированы?

    Поддержали: Vasyl Korchynskyy, Студент