LINUX.ORG.RU

Что посоветуете учить для написания Highload

 , , ,


2

8

Всем привет, я работаю python программистом, пишу на Django, вроде бы только начал нормально что-то делать )) Но вот начал понимать что Django кажется не очень приспособлен для высоких нагрузок, ну и чтобы сделать шардинг (горизонтальный) придется много чего поломать в самой джанге и написать кучу виджетов для админки, в общем как-то теряет смысл его использовать тогда.
Но мне хочется развиваться, и часто вижу что нужны люди кто работал с высокими нагрузками. Что можете посоветовать для изучения? Сейчас пока сомтрю в сторону tornado или falcon, или взять другой вообще язык программирования, к примеру go. В общем дайте пожалуйста вектор по которому дальше можно будет что-то изучать.

★★★

Последнее исправление: Int64 (всего исправлений: 1)
Ответ на: комментарий от menangen

Сам-то веришь, что нода впереди c++/d?

Веб-разработчики не отличают языки от библиотек и не понимают что библиотеки могут давать разный оверхед который может перекрыть все плюсы нативной компиляции? Плюс нода это libuv, потому почему бы ей и не выигрывать в синт тестах?

anonymous
()

Я бы вам посоветовал устроиться в Xored - наверное лучшую компанию в Новосибирске. Там вас научат разрабатывать Highload проекты.

anonymous
()

учить надо архитектуру построения систем, а не недоязычки с недофреймворками.

</thread>

anonymous
()
Ответ на: комментарий от unlog1c

Ты сам протестируй node.js и vibe.d. Последних версий. Что там что там используются конкурирующие решения - libuv vs libevent

menangen ★★★★★
()
Ответ на: комментарий от Goury

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

VladimirMalyk ★★★★★
()
Ответ на: комментарий от anonymous

Потому, что это обман. Она не выигрывает у java/scala/c++/d/go. На всех этих плафтормах есть такие же быстрые сетевые фреймверки.

menangen ★★★★★
()
Ответ на: комментарий от menangen

Потому, что это обман. Она не выигрывает у java/scala/c++/d/go. На всех этих плафтормах есть такие же быстрые сетевые фреймверки.

Можно пример этих таких же быстрых сетевых фреймворков для java/scala? (только не надо про netty,jetty,spray,akka-http. тут с быстротой все очень условно) И для d хоть один пример чего-то используемого масово в продакшене (не по меркам d)?

anonymous
()
Ответ на: комментарий от Int64

Почему-то не хочется советовать NoSQL Фаулера, но посоветую. Книжка маленькая, доступно, без технических деталей, объясняет когда следует выбирать описанные решения, главное, чтобы после прочтения не возникло ощущения, что все вокруг соответствует описанному в книге. Ну и еще почитай истории успешных факапов от выбора Монги.

Кстати, может быть это необычно, но чаще я советую эту книгу для популярного объяснения того, какие проблемы решают производители РСУБД.

winlook38 ★★
()
Ответ на: комментарий от VladimirMalyk

Я недавно узнал, что есть postgres-xl, он вроде бы позволяет без проблем разнести постгресовскую базу на разные ноды, сам не пробовал, интересно будет ли работать оно с джангой.

Int64 ★★★
() автор топика
Ответ на: комментарий от Goury

Файлы лучше в файлово системе складывать, а в базу только писать какой файл где и зачем лежит. Хотя это всё зависит от конкретной конфигурации и от ситуации.

Ну я так в принципе и делаю, просто видел что распределенное хранилище картинок к примеру делают на монго.

Просто закэшируй результат лайков, хоть в бд, хоть в джанге (не забыв принять взвешенное решение и записав его в диздок, чтобы потом делать одинаково везде, а не как попало).

Ну вот пока просто поле в моделе которое меняется по клику пользователя, думаю можно и на редис записать, чтобы не засорять модель подобными полями.

Но вообще class Vote как-то мутно выглядит на первый взгляд. Но надо смотреть что там с архитектурой для выводов.

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

Я бы сделал модель с общими полями отдельно и в каждом элементе делал бы ссылку на модель с разными полями — тогда надо было бы выбрать пятерых из этой общей модели и довыбрать пятерых по ссылкам.

Нагуглил что в джанго в принципе наследование моделей реализовано и что есть еще дополнительно django-polymorphic, наверное второй делает что-то еще помимо базовых наследований.

Int64 ★★★
() автор топика
Ответ на: комментарий от anonymous

Да согласен что архитектуру надо учить, я и прошу посоветовать конкретно в каком направлении гуглить, вот узнал что highload не дает результатов, лучше гуглить high availability. А конкретно языки и фреймворки тоже надо учить, лучше я буду учить архитектуру и пытаться ее применить на языке более предназначенным для подобных вещей.

Int64 ★★★
() автор топика
Ответ на: комментарий от VladimirMalyk

Джанга не шарит, балансер решает сколько надо запустить реплик каждого сервиса. Алгоритм довольно тупой: кто становится узким горлом — того и добавляем.
Реплик баз, кстати, добавляется раза в два больше, чем джанг.

Goury ★★★★★
()
Ответ на: комментарий от Int64

думаю можно и на редис записать, чтобы не засорять

Но тогда придётся засорять редис.
А одно дополнительное поле в базе — не такой уж и большой засор.
Вбщм надо оценивать по ситуации, замерять, тестировать, и прочая околомаркетинговая и менеджерская (в смысле проджект-менеджера) работа.

Goury ★★★★★
()
Ответ на: комментарий от anonymous

Какую тебе еще прикладнуху? Жесткий хайлоад с использованием cutting-edge технологиями!

anonymous
()
Ответ на: комментарий от VladimirMalyk

Ну нормально, если я не банк то в принципе можно уже использовать.

Int64 ★★★
() автор топика
Ответ на: комментарий от fluorite

Ну и зря. Возьми и сам оттестируй эту либу на D со своей нодой.

menangen ★★★★★
()

Скуль, балансировка и кеширование. Высокие нагрузки нельзя обеспечить выбрав определенное техническое решение.

ya-betmen ★★★★★
()
Ответ на: комментарий от VladimirMalyk

Да любой можно, хайлоад это вообще не про выбор решения

Goury ★★★★★
()

Например книжки по распределённым системам.

Dark_SavanT ★★★★★
()

no silver bullet

Deleted
()

python программистом

Ты уж определись: или python, или программист

anonymous
()
Ответ на: комментарий от EXL

То-то фсякие там фейспуки и вкудахте с предподвывертом мутят всякие HipHop и kphp, которые этот PHP в C++ превращают, а иначе тормозит-с.

Уровень «фейспуков и вкудахте» — это совсем другой уровень. Программисты проектов уровня фейсбуков не спрашивают по форумам, какой ЯП лучше подойдёт для нагрузок.

Wizard_ ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.