• Что за утилита для просмотра процессов?

    hint000
    @hint000
    у админа три руки
    Ответ написан
    Комментировать
  • Redis Почему долго выборка?

    BuriK666
    @BuriK666
    Компьютерный псих
    Вы небось делаете кeys word_123_*?
    https://redis.io/commands/keys
    Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout.

    Используйте SCAN
    Ответ написан
    3 комментария
  • Зачем вообще использовать брокеры очередей?

    Очередь это буфер, куда задачи попадают с разной скоростью, а из него сливаются равномерно, по мере готовности «рабочих» их принять.

    В вопросе описана так-себе реализация с поллингом очереди. Различие без-очереди и с-очередью — в направлении инициативы:
    • без очередей «рабочий» опрашивает базу снова и снова: «есть чё?». Это как из браузера ajax'ом пинговать сервер раз в секунду в поиске сообщений. Работает, но такое себе..
    • с очередью инициатор процесса – брокер. Это брокер передаёт очередную задачу на исполнение первому освободившемуся «рабочему».

    spoiler
    Про потерю данных при падении — че-т страшилка, далёкая от продакшена. Драйвером очереди может быть и Redis (со своей персистентностью) и MySQL какой-нибудь, и другие. Имхо костыльно пихать в очередь всего лишь id записи в БД, которую надо обработать – чтобы рабочий, взявший задачу, заново собирал данные. Это не кошерно и калорийно.

    Лучше класть в очередь самодостаточную задачу. Например, сериализовать модель. Чтобы рабочий, получивший задачу, уже не обращался к базе – а только наполнял темплейт письма данными из полученной модели и отправлял послание. И в БД проставлял статус «отправлено»
    Ответ написан
    Комментировать
  • Зачем вообще использовать брокеры очередей?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    В первую очередь брокеры нужны для балансировки нагрузки и увеличения надежности и скорости работы системы в целом.

    В вашем приведенном примере приведен способ уведомления клиента о каком-то событии. Например о том, что его заказ обработан, отправлен, доставлен и т.д. Событий может быть много и их источники могут быть различными.
    Например у вас может быть интеграция со сторонней системой логистики. А еще с 10 разными системами оплаты.
    Еще есть маркетинг, который тоже хочет отправлять массовые рассылки.
    Получается, что под каждый случай вам прийдется хранить информацию о письмах и статусах. Но даже проблема не в этом, проблема в том, что каждое событие имеет разный приоритет и разную ценность.

    В случае работы с сайтом у вас будет 1 воркер, который будет просто сканировать таблицы на поиск неуведомленных пользователей. Если у вас будет 2 воркера, надо делать систему блокировок и т.д. Т.е. мы упираемся в проблему масштабирования. Для решения задачи разной скорости уведомлений, вы построите систему приоритетов или будете делать разные таблицы с разными воркерами. Это все будет работать, но нагрузка на базу будет серьезной и она будет увеличиваться с ростом пользовательской базы. Опять вы упретесь в тормоза.
    Опять же есть письма, которые должны быть доставлены немедленно, вроде подтверждений аккаунта, смены пароля и т.д. Еще одна таблица? Дополнительный приоритет? Может так произойти, что вы некоторые пользователи вообще никогда не получат писем и уведомлений. Прийдется придумывать способ контроля.
    Я уж не говорю о куче кастомных воркеров под каждую ситуацию. И их будет с десяток, не меньше.

    Очереди решают, т.к. можно сделать их несколько и на для каждой настроить определенное количество абсолютно одинаковых воркеров. Пример с поллингом отвратителен и сейчас никто так не делает, а с очередями делают так.
    У вас может быть цепочка из нескольких воркеров, когда результат работы одного помещается в очередь.
    Например, когда надо сначала достать данные из нескольких разных медленных систем, отрендерить в шаблон, а потом отправить письмо. Сборка, рендеринг и отправка - три разные компонента, последние два из которых, можно активно переиспользовать для других целей изменяя лишь конфигурацию времени исполнения.
    При таком подходе проще развивать кодовую базу, исправлять ошибки, т.к. они изолированы в одном месте, а не разбросаны по всей системе. И да, косяк в "горячем" модуле вы заметите немедленно. А самое прикольное то, что ваш косяк, пользователи и не заметят, для них это будет выглядеть как простая задержка, а у вас будет время на то, чтобы исправить ошибку. Сообщения посидят в очереди и все.
    Но это еще не все, ваши воркеры могут быть написаны на разных языках программирования. Например пользователь может загружать фото на сайт на PHP, объекты распознаваться на Python, видео рендериться на Rust, а отправка писем может быть на Go. И такой подход может подойти для сложных систем с распределенными командами и различным уровнем компетенция в применяемых технологиях. Специалистов превосходно владеющих всеми приведенными технологиями просто единицы, и поверьте, они решают задачи совершенно другого уровня.
    Ответ написан
    Комментировать
  • Python для системного администратора, сколько?

    opium
    @opium
    Просто люблю качественно работать
    Так вы книгу то сперва прочитайте и сразу все вопросы сами по себе отпадут
    Ответ написан
    Комментировать
  • Python для системного администратора, сколько?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    bash/python/javascript следует знать на уровне работы с данными.
    Чтобы ты мог прочитать/отпарсить текст, числа, json - это самое частое что приходится делать.

    Пример скрипта средней сложности для админа - забрать по урл (возможно с авторизацией) json с данными, распарсить и преобразовать в формат prometheus или sql запроса для инсерта в какую-нить базу.
    Если этот скрипт еще и с обработкой exception - то и совсем хорошо.

    Знание bash/powershell IMHO немного важнее, ибо там ты неразрывно связан с архитектурой и особенностями ОС, но питон универсален и хорош именно для прикладного, а не системного взаимодействия.
    Ответ написан
    Комментировать
  • Существует ли библиотека Zip с потоковой записью?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Само сжатие делает zlib, оно потоковое.
    Остается только формировать структуру файла ZIP, это вполне можно делать "на лету".
    Ответ написан
    Комментировать
  • Существует ли библиотека Zip с потоковой записью?

    @Mercury13 Автор вопроса
    Программист на «си с крестами» и не только
    В конце концов перешёл на собственный порт MiniZip.
    Ответ написан
    Комментировать
  • Какие есть компиляторы для C#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Как отметил роман - есть Рослин, на котором сейчас основан csc, который идёт в комплекте с dotnet sdk - всё под лицензией MIT.
    Если не от МС, то есть ещё mono, у которого есть свой компилятор
    Ответ написан
    Комментировать
  • Какие есть компиляторы для C#?

    @rPman
    у mono project есть свой компилятор
    https://www.mono-project.com/docs/about-mono/langu...
    Ответ написан
    Комментировать
  • Как соединить два роутера на расстоянии 100 м?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Если есть возможность попробовать то попробуйте вот это
    https://www.citilink.ru/catalog/computers_and_note...
    Ответ написан
    1 комментарий
  • Как проверить Теорию 6 рукопожатий в БД с миллионами юзеров?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поскольку это задача из теории графов - то и решать ее нужно на языках разработки и библиотеках поддержки графов. 1 млн узлов графа - это не много для современной памяти.

    Из java библиотек есть Guava, Jung, GraphT.
    Ответ написан
    Комментировать
  • Как проверить Теорию 6 рукопожатий в БД с миллионами юзеров?

    @DDwrt100
    Выбрать правильный инструмент. В данном случае выгрузить данные в графовую базу данных. И в ней обсчитывать подобную задачу.
    Ответ написан
    Комментировать
  • Как проверить Теорию 6 рукопожатий в БД с миллионами юзеров?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    По-моему, у Дональда Кнута рассматривалось решение этой задачи.
    Ответ написан
    Комментировать
  • Как проверить Теорию 6 рукопожатий в БД с миллионами юзеров?

    Книга Дауни А. - Изучение сложных систем с помощью Python - 2019
    Глава 3. Графы «Мир тесен»
    Ответ написан
    Комментировать
  • Почему человек узнал все обо мне по фейковой закрытой странице в вк? Как такое возможно?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Да всё что угодно может быть.
    Он давно установил троян на твой комп.
    Либо твои друзья/подруги слили инфу, даже не подозревая этого. Либо умышленно.
    Ты сама наследила где только могла.
    Не забывай, что любую инфу можно купить в интернете.
    Новый телефон он может вообще не знать, ищи слив в другом месте
    Ответ написан
    Комментировать
  • Когда и где можно и нужно добавлять префиксы браузеров(-webkit- -moz- -ms-)?

    Lynn
    @Lynn
    nginx, js, css
    Используйте автопрефиксер.
    Пусть компьютер этим заморачивается https://github.com/postcss/autoprefixer
    Ответ написан
    Комментировать
  • Надёжный SSD и HDD диск?

    Sanes
    @Sanes
    Единичный случай, не показатель. Все ломаются.
    Ответ написан
    Комментировать
  • Как перебрать объекты с вложенностью?

    SilenceOfWinter
    @SilenceOfWinter
    та еще зажигалка...
    вызов функции из функции называется рекурсией
    Ответ написан
    Комментировать