Контакты

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (23)

Лучшие ответы пользователя

Все ответы (19)
  • Обязателен ли web-server (NGINX) для Actix Web?

    Eugene-Usachev
    @Eugene-Usachev
    Обязательным nginx не будет, но он рекомендован большинству веб-проектам. Очень многие проблемы на себя берёт nginx, и вообще странно брать высокопроизводительный инструмент (Actix Web) и не позаботься о балансировке нагрузки (или вы хотите сами писать балансировщик?).
    Ответ написан
    Комментировать
  • Архитектура кластера баз данных для географически распределенного проекта?

    Eugene-Usachev
    @Eugene-Usachev
    Если "чат/мессенджер/что-то подобное", будет лежать очень много данных. То есть профили можно сохранить хоть в Postgres + Redis (шардированный по регионам), и иметь вполне себе хорошую производительность. Проблема будет именно с сообщениями.

    Если решать проблему по логике "почему бы не стремиться к 8 млрд пользователей", для профилей можно взять Aerospike или Tarantool. Оба решения имеют возможность шардирования по вторичным ключам, так что их можно разнести по разным регионам. Причём надо именно шардироваться, а не только реплицироваться. Таким образом, можно избежать "узких горлышек". В этом случае оба решения будут выдавать более миллиона запросов в секунду на один кластер с маленькой задержкой (скорее всего двухзначной в медиане) и не иметь единой точки отказа.

    С сообщениями сложнее, так как их будут петабайты. Тут советую не "изобретать велосипед" и взять ScyllaDB, как это сделал Discord. ScyllaDB работает с огромными массивами данных довольно быстро и прекрасно масштабируется. Ради двухзначных чисел задержки в медиане достаточно шардироваться по регионам.

    Выводы очень простые. Если "стремиться к 8 млрд пользователей" надо
    1 - использовать нереляционные СУБД
    2 - шардировать БД по регионам (тогда можно отказаться от очередей)
    3 - использовать кэширование "горячих" данных
    4 - использовать Write-Optimized СУБД для больших массивов данных.

    Если у Вас "8 млрд пользователей" Вы можете позволить себе по датацентру в каждом регионе, поэтому основной задачей является правильное шардирование. И ещё один совет. Если гнаться за производительностью, надо использовать не очереди сообщений, а многопоточные асинхронные серверы, которые "кучкуют" сообщения пачками, чтобы как можно реже обращаться по сети.
    Ответ написан
    1 комментарий
  • Redis кеш под Wordpress сожрал всю память, что делать?

    Eugene-Usachev
    @Eugene-Usachev
    Не понимаю вашей проблемы. Redis будет удалять самые старые записи, если он заполнен. Если ничего не делать, он всё ещё будет хорошо работать в качестве кэша.

    1 ГБ - это слабая загруженность, на самом деле. Такой объём можно полностью уместить в Redis или Tarantool.
    Ответ написан
    Комментировать
  • Какая база данных подходит для частых UPDATE и сортировки?

    Eugene-Usachev
    @Eugene-Usachev
    Если я правильно понял суть вопроса, вам подойдёт любая KV СУБД. Вынесите только эту таблицу в какой-нибудь Tarantool или Redis (я имею в виду использовать хранимые процедуры для вашей задачи). 1-3 млн записей - относительно немного. Даже если одна запись весит 4 КБ, все данные займут 4-12 ГБ ОЗУ, что не так уж и много. Если использовать батчинг, что Redis, что Tarantool дадут вам на 16 ядрах свыше 100к RPS на такие сложные запросы.

    Можете так же глянуть AerospikeDB (хранит данные на диске, но с индексами в памяти, где один индекс стоит 64 байт), но я не уверен, что вам хватит его функционала. Если вы дадите больше контекста, возможно, я смогу предложить вам другие идеи.

    UPD: AerospikeDB тоже позволяет сохранить готовые процедуры, так что его функционала хватит для вышеуказанной задачи.
    Ответ написан
    1 комментарий
  • В каком приложении программировать на Python?

    Eugene-Usachev
    @Eugene-Usachev
    Я перебрал много редакторов кода, в частности для Python. Если кратко, берите Pycharm (там есть бесплатная версия, в которой только Python, но раз вы только учитесь, вам её хватит), если у вас есть хотя бы 8 ГБ ОЗУ, так как в проектах средней величины IDE начинает потреблять неприлично много (под 2 с половиной ГБ), если у вас нет такого запаса ОЗУ, берите VSCode.

    А теперь чуть подробнее. Когда я начанал учить программирование, я писал около месяцев 2 в стандартным редактором кода Python (я уже не вспомню, откуда она, но с установкой Python появляется грубое подобие блокнота с подсветкой синтаксиса и возможность стартовать программы на f5). Думаю этот абзац не нуждается в пояснении, насколько это удобно, но я к тому, что даже так можно писать код.

    Дальше я перешёл на Sublime text. Я писал на нём около месяца и не понял, за что его так хвалят. Может, я просто не смог настроить его под себя, но мне он показался, конечно, удобнее стандартного редактора кода Python, но я не понял, за что его хвалят.

    Дальше я решил попробовать VSCode и около полугода писал в этом редакторе кода. Ощущения были бесподобными после Sublime text. Этот редактор кода имеет множество расширений, которые ставятся меньше, чем за минуту. Без расширений очень тяжко программировать (может, в Sublime text есть все нужные, но я не уверен), так что это очень важный плюс. Также VSCode помогает набирать код (начинаешь набирать название переменой / метода / функции / класса и так далее и VSCode начинает подбирать похожие элементы из кода), что ускоряет процесс написания кода раза в полтора. Так же VSCode самый популярный редактор кода, так что в интернете легко найти гайды по настройке и легко найти исправления багов редактора кода. ИМХО, VSCode на голову лучше Sublime text.

    Затем я опробовал VS. Тоже бесплатная и предоставляет тот же функционал, но менее популярный (не на много). Для Python проще использовать VSCode.

    Затем я попробовал IDE от JetBrains (по типу PyCharm). И я ощутил то же самое, что при переходе с Sublime text на VSCode. Багов почти нет, удобная официальная документация, так же популярна и легко ставить расширения. Но расширений тут гораздо больше и выходят они сначала именно для этих IDE. Кастомизация этих IDE гораздо проще, чем кастомизация в VSCode. IDE подсказывает ощутимо лучше, так ещё и подсвечивает некоторый кривой код (написанный не по стандарту или содержащий прочие ошибки не связанные с логикой программы). И из приятного, все инструменты для разработки идут из коробки (для Python идёт из коробки пакетный менеджер). Так же порадовали авто-импорты (в других редакторах кода их можно поставить только с помощью расширений).

    ИМХО, писать код можно и в блокноте (как в первом абзаце), но я не вижу смысла заставлять себя использовать неудобные инструменты. Так что я бы посоветовал установить или PyCharm или VSCode. Не забудьте сразу загуглить hotkeys для соответствующего редактора кода и список самых популярных расширений для них. Это сразу ускорит работу и упростит её. По субъективным ощущениям, правильные расширения и hotkeys + "умный" редактор кода ускоряют разработку раза в 2 относительно Sublime text.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (31)