У меня опять приступ “хоцца закосить под гугл”. Дать всем много аттачев и не облажаться 😃
Cитуевина такова - дисковое место “по идее” дешевое, если устраивают простецкие процессоры и медленные диски. Вона, почти терабайт в страйпе на хорошей площадке, за 50 евриков:
Но как только хоцца масштабируемости, управляемости, надежности и бекапов - сразу все встает колом и сложность проблемы фигачит на порядок вверх.
По идее, если отбросить аттачменты, то:
Памяти хватает. База влазит целиком (1-2 гига). На случай, если “будет расти” - дык самсунг уже начал продавать планки DDR3 по 8-16 гигов. Так что с этой стороны жопы сто пудов не ожидается. Главное, что репликаций не понадобится и mysql будет на 1 машине еще много-много лет.
Процессоры - в принципе тоже нормально. PHP-пул офигенно легко масштабируется, если все в пределах одного датацентра. В самом хреновом случае - просадка по времени отклика сервера, но не больше. А пока даже 50% запаса на единственном сервере вполне имеется. Главное большими файлами связку серверов по сети не долбить, и ни каких проблем.
Дисковые операции - если не отвлекаться на специальные случаи, то в top бодро показывается wa 1-2%. В смысле - база в памяти, гимору нема.
И вот имеем “не в рот какую большую” проблему - КАК (?) обслуживать аттачи отдельно, но при этом:
Обеспечить прозрачность для php-скриптов, чтобы там не переколбашивать черти чего. Ну насколько это возможно.
Не понаделать блокировок при обслуживании php-скриптов со страницами сайта.
Обеспечить прозрачную миграцию серваков/хранилищ.
Ну ДОПУСТИМ можно второй раз всех прокинуть с абсолютными путями к картинкам 😃 . Изобрести аццкий формат с кучей поддоменов (по сервакам), путями в виде хеша, и поклясться мамой больше никогда его не менять. Тогда возникает несколько вопросов:
Как сделать, чтобы если “покласть” сервак img58.rcdesign.ru, то статические ссылки все равно обслуживались с других. С учетом того, что серверы могут быть в разных датацентрах.
По какому алгоритму генерировать ссылки на картинки, чтобы они обеспечивали правильную заполняемость (с учетом нагрузки) серверов, и не долбили центральный мастер.
На чем делать распределенное хранилище в плане файловой системы. Чтобы картинки файлы дублировались автоматом, но не на все ноды, а только на необходимые. И чтобы можно было делать бакапы не на уровне файловой системы, а на уровне нод.
Как вообще синхронизировать (реплицировать) данные о картинках на уровне базы данных. Все-таки каждая нода должна знать, чего на ней находится, и куда сходить, если вдруг не нарыли.
По-моему практически любой крупный фото-видео-говнохостинг такие задачи решает весьма успешно. Еще б почитать где, как они это делают.
Задачка интересная. Через год пышным цветом распустится could computing, и было бы весьма актуально аккуратно напилить файлохранилище кусками скажем по 100-гигабайтным виртуальным серверам, которые можно без проблем задвигать куда душа пожелает.
PS. Как же все-таки хорошо, что на MVC-архитектуру vBulletin довольно легко ложится большинство модификаций. Ну а дровосекам из IPB, пользуясь случаем, в очередной раз шлю луч ненависти и кровавого поноса. Определенно, 10 килобаксов оказалось не слишком высокой ценой, чтобы поменять их говнописный софт на воблу.
У гугла своя собственная Ось, которая решает довольно много проблем. А всякие “говнохостинги”, думаю, испрользуют или готовые решения от сана и айбиэм - этакие терробайтные массивы, или городят свой огород на имеющихся средствах.
Первое из таких средств, что приходит на ум, это настроенная и оптимизированная под твои конкретные нужды NFS (pNFS).
Всякие там стораджи-фигораджи - это нижний уровень. А мне вот хоцца на верхнем уровне все распараллелить. То бишь, на уровне DNS. Чтобы автоматически генерились новые поддомены по мере добавления серваков, ну и всякие там склейки имелись на случай объединения или миграции.
У меня ведь конкретная задача - надо отдавать картинки через веб. Отседова и пляшем. Сделать херово, когда все сосется через центральный балансер, я всегда успею 😃
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"39c21abc3df9550077797d18":{"_id":"39c21abc3df9550077797d18","hid":349,"name":"Vitaly","nick":"Vitaly","avatar_id":null,"css":""},"450181743df95500777892f6":{"_id":"450181743df95500777892f6","hid":16669,"name":"wws","nick":"wws","avatar_id":null,"css":"user__m-banned"}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"49c541e599707300770f8bad","hid":6305,"title":"Как же сторадж файлов забацать...","html":"<p>У меня опять приступ “хоцца закосить под гугл”. Дать всем много аттачев и не облажаться <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span></p>\n<p>Cитуевина такова - дисковое место “по идее” дешевое, если устраивают простецкие процессоры и медленные диски. Вона, почти терабайт в страйпе на хорошей площадке, за 50 евриков:</p>\n<p><a href=\"http://www.hetzner.de/hosting/produktmatrix/rootserver-produktmatrix/\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"http://www.hetzner.de/hosting/produktmatrix/rootserver-produktmatrix/\" target=\"_blank\" rel=\"nofollow noopener\">www.hetzner.de/…/rootserver-produktmatrix/</a></p>\n<p>Но как только хоцца масштабируемости, управляемости, надежности и бекапов - сразу все встает колом и сложность проблемы фигачит на порядок вверх.</p>\n<!--cut-->\n<p>По идее, если отбросить аттачменты, то:</p>\n<ul>\n<li>Памяти хватает. База влазит целиком (1-2 гига). На случай, если “будет расти” - дык самсунг уже начал продавать планки DDR3 по 8-16 гигов. Так что с этой стороны жопы сто пудов не ожидается. Главное, что репликаций не понадобится и mysql будет на 1 машине еще много-много лет.</li>\n<li>Процессоры - в принципе тоже нормально. PHP-пул офигенно легко масштабируется, если все в пределах одного датацентра. В самом хреновом случае - просадка по времени отклика сервера, но не больше. А пока даже 50% запаса на единственном сервере вполне имеется. Главное большими файлами связку серверов по сети не долбить, и ни каких проблем.</li>\n<li>Дисковые операции - если не отвлекаться на специальные случаи, то в top бодро показывается wa 1-2%. В смысле - база в памяти, гимору нема.</li>\n</ul>\n<p>И вот имеем “не в рот какую большую” проблему - КАК (?) обслуживать аттачи отдельно, но при этом:</p>\n<ul>\n<li>Обеспечить прозрачность для php-скриптов, чтобы там не переколбашивать черти чего. Ну насколько это возможно.</li>\n<li>Не понаделать блокировок при обслуживании php-скриптов со страницами сайта.</li>\n<li>Обеспечить прозрачную миграцию серваков/хранилищ.</li>\n</ul>\n<p>Ну ДОПУСТИМ можно второй раз всех прокинуть с абсолютными путями к картинкам <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span> . Изобрести аццкий формат с кучей поддоменов (по сервакам), путями в виде хеша, и поклясться мамой больше никогда его не менять. Тогда возникает несколько вопросов:</p>\n<ul>\n<li>Как сделать, чтобы если “покласть” сервак img58.rcdesign.ru, то статические ссылки все равно обслуживались с других. С учетом того, что серверы могут быть в разных датацентрах.</li>\n<li>По какому алгоритму генерировать ссылки на картинки, чтобы они обеспечивали правильную заполняемость (с учетом нагрузки) серверов, и не долбили центральный мастер.</li>\n<li>На чем делать распределенное хранилище в плане файловой системы. Чтобы картинки файлы дублировались автоматом, но не на все ноды, а только на необходимые. И чтобы можно было делать бакапы не на уровне файловой системы, а на уровне нод.</li>\n<li>Как вообще синхронизировать (реплицировать) данные о картинках на уровне базы данных. Все-таки каждая нода должна знать, чего на ней находится, и куда сходить, если вдруг не нарыли.</li>\n</ul>\n<p>По-моему практически любой крупный фото-видео-говнохостинг такие задачи решает весьма успешно. Еще б почитать где, как они это делают.</p>\n<p>Задачка интересная. Через год пышным цветом распустится could computing, и было бы весьма актуально аккуратно напилить файлохранилище кусками скажем по 100-гигабайтным виртуальным серверам, которые можно без проблем задвигать куда душа пожелает.</p>\n<p>PS. Как же все-таки хорошо, что на MVC-архитектуру vBulletin довольно легко ложится большинство модификаций. Ну а дровосекам из IPB, пользуясь случаем, в очередной раз шлю луч ненависти и кровавого поноса. Определенно, 10 килобаксов оказалось не слишком высокой ценой, чтобы поменять их говнописный софт на воблу.</p>\n","user":"39c21abc3df9550077797d18","ts":"2009-03-21T19:37:09.000Z","st":1,"cache":{"comment_count":2,"last_comment":"49c900a59970730077181ada","last_comment_hid":2,"last_ts":"2009-03-24T15:47:49.000Z","last_user":"39c21abc3df9550077797d18"},"views":1339,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}