Ответы пользователя по тегу Highload
  • Архитектура системы личных сообщений?

    @nirvimel
    Стоит ли использовать для этих целей MongoDB/MySQL?

    PostgreSQL или MySQL, но не в коем случае не NoSQL, который выглядит как панацея только поначалу.
    Правильная проектировка структуры БД - залог производительности и нормальной разработки.
    Ошибки в структуре БД - бомбы, подложенные под развитие проекта и дальнейшую разработку.

    Хранить все сообщения в одной таблице в виде текста?

    Все сообщения в одной таблице. Но в базе у вас в итоге окажется 10-20 или больше таблиц с разными метаданными, без которых тексты сообщений не имеют смыла.

    Если разбивать данные на шарды,

    Не надо этого делать.

    Что думаете про Node.js + Websockets для этих целей?

    Node.js - тех, кто начинал свою программистскую карьеру с фронтенда, надо на пушечный выстрел не подпускать к принятию архитектурных решений в крупных проектах. Архитектура для архитекторов, js для фронтендеров.
    Websockets - чат предполагает push данных с сервера на клиент, а для этой задачи websockets почти не имеет реальных альтернатив на сегодняшний день. То есть все альтернативы - это костыли из времен до websockets.

    Как правильно хранить сообщения пользователей на разных серверах?

    Для начала нужно определиться с тем зачем это нужно. Потом постараться избавиться от этой опасной идеи.

    чтобы не пришлось потом переделывать на реальных пользователях.

    Переделывать все равно придется. Такова суровая реальность жизни.
    Ответ написан
    2 комментария
  • Есть ли книга «High Performance Python» на русском?

    @nirvimel
    Приветствую своих будущих конкурентов (и, возможно, заказчиков). Судя по описанию, сабж (почти каждый пункт в их списке) полностью соответствует моей специализации в последние несколько лет ("Solve large problems while using less RAM" - а на этой теме я вообще "собаку съел").
    Но даже по краткому описанию я могу заметить, что книга 2014 уже несколько устарела на сегодняшний день. Например, они упоминают мало кому известный Grasp, но нет совершенно ни слова о такой крутейшей технологии, как Numba, если только она не скрывается под этой фразой: "Use tools to compile Python down to machine code".
    И уж как скоро речь идет о performance, то нельзя было проходить мимо темы создания C/C++ расширений. Тем, кто профессионально занимается темой производительности, в любом случае придется столкнуться с этим рано или поздно.

    А пока вы ждете перевода, я постараюсь ответить на ваши вопросы по теме.
    Ответ написан
  • Выбор языка для многопоточного приложения под linux?

    @nirvimel
    C - Плюсы: Возможность выжать максимальную скорость из железа.
    Минусы: При переходе с динамических скриптов (типа, упомянутого в вопросе, PHP) может несколько шокировать своей многословностью и необходимостью явно описывать каждую мелочь, которая в других языках выводится неявно.
    Java - Плюсы: Автоматическая сборка мусора сильно облегчает жизнь и смягчает шок при переходе с динамических скриптов. Гениальный JIT - позволяет сократить отставание от голого железа в скорости (в лучшем случае) до 30%-50% (по сравнению с отставанием в разы и десятки раз для динамических скриптов).
    Минусы: Чтобы воспользоваться всей мощью JIT, требуется глубокое понимание принципов его работы и отказ от использования объектов (основной фишки Java) в глубине самых нагруженных циклов.
    C++ - Разные люди по-разному используют его. Кто-то на нем пишет в стиле C, получает быстродействие чистого C и презрение истинных C++совцев. Кто-то на нем пишет в стиле Java и получает более компактный код, но и быстродействие как у Java. На самом деле на этом языке можно писать красивые, элегантные и не уступающие в быстродействии программы, но на это уйдут годы обучения (речь не о синтаксисе языка и не о стандартной библиотеке).
    Ответ написан
    3 комментария