109: (Default)
[personal profile] 109
архитекторы яндекса считают, что дизайн системы на 10,000 qps ничем не отличается от дизайна системы на 1,000,000 qps. а я было обрадовался возможности интересного разговора.

(no subject)

Date: 2008-02-21 10:20 am (UTC)
From: [identity profile] yakov-sirotkin.livejournal.com
А если в Яндексе уже есть линейно-масштабируемая архитектура, которая держит и 10K и 1M?

(no subject)

Date: 2008-02-21 02:13 pm (UTC)
From: [identity profile] anatolix.livejournal.com
Скажем так про совсем ничем я наверное загнул, но по сравнению с переходом 100 -> 10K, переход 10K-1M действительно не оказывает серьезных влияний на архитектуру.

Вместо того, чтобы делать умное лицо лучше бы привел антипример в виде системы с 1M qps, и я тебе покажу какую-нибудь систему на 10K qps с похожей архитектурой.

(no subject)

Date: 2008-02-21 02:37 pm (UTC)
From: [identity profile] anatolix.livejournal.com
P.S. Интересный разговор обычно предполагает, что оба оппонента:
1) Пользуются доказательствами своих точек зрения, а не просто утверждают что "это позиция бред, а аргументы приводить не буду"
2) Не используют вырванные из контекста фразы, не превращают обобщающие формулировки(со словами "обычно") в точные и не допускающие исключений, и не используют излишние обобщения вида "anatolix -> архитекторы яндекса"
3) Пытаются что-то вместе понять или хотя бы доказать друг-другу, а не найти повод написать в своем блоге "смотрите(ссылка) какая глупость. какой он дурак что написал. и какой я умный по сравнению с ним".
Если подобная позиция останется то разговора похоже, действительно, не получиться.
Edited Date: 2008-02-21 03:32 pm (UTC)

(no subject)

Date: 2008-02-21 07:19 pm (UTC)
From: [identity profile] 109.livejournal.com
извини. я совершенно не считаю, что ты дурак и совершенно не хотел этого сказать. всё, что я хотел выразить - это разочарование отсутствием конкретики.

ибо я как раз сейчас занимаюсь проектированием oltp системы на 6000 "тяжёлых" запросов в секунду и всё время наблюдаю, как изменения в требованиях к трём параметрам (throughput, latency, data volume) коренным образом меняют дизайн.

(no subject)

Date: 2008-02-21 08:11 pm (UTC)
From: [identity profile] anatolix.livejournal.com
Мы с тобой живем видимо в разных вселенных, ипоэтому друг друга не понимаем. Давай я тебе попробую объяснить как устроена моя вселенная, а ты попробуешь понять, почему я не хочу тебе сказать точную цифру и более того считаю данный вопрос бессмысленным.

Ну вот например вопросы, откуда у тебя взялась цифра в 6000 запросов? Если ты поймешь, что почти бесплатно можно сделать 60K тыс запросов, но тебе нужнро 6K, значит ли это, что ты не будешь ее масштабировать до этого предела? А не изменится ли у тебя эта цифра в 6000 запросов? (в моем мире нагрузка все еще каждый год удваивается - если вчера просили 6000, то это значит, что если не заложишься на вчетверо больше - через год будешь переделывать).
А еще в моем мире постоянно бывают как бонусы так и анусы зависящие от внешних причин: типа "Intel сделал машину в 1.5 раза быстрей - все новые машины такие". Или "извините чуваки у нас проблемы с местом куда ставить сервера - новых машин не будет до марта, нужно на старых тянуть нагрузку на 20% больше нормы".

На мой взгляд не имеет смысла фиксировать конкретные параметры вида throughput, latency, data volume - вообще. Например, у меня у поиска есть 1 неизменный параметр - 95% ответов должно быть быстрей секунды - можно считать, что поведение пользователя не изменится, они не любят тормоза. Всем остальным можно управлять. Объем данных можно регулировать подстегивая или предерживая робота - который сколько скажешь столько и нагребет. Машины можно заказывать. Сетевым траффиком рулить придерживая полет фантазии людей из search quality по поводу того какие данные им нужны в метапоиске, или даже компрессируя траффик. Загрузкой CPU можно рулить изменяя сложность формулы ранжирования, etc.

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

Нужно указать порядки(что я помоему сделал) и общее направление какими параметрами ради каких можно жертвовать.

Для задачи числомолотилки я в принипе именно это и указал
http://anatolix.livejournal.com/48336.html?thread=796112#t796112

(no subject)

Date: 2008-02-21 10:02 pm (UTC)
From: [identity profile] 109.livejournal.com
> почти бесплатно

ага, уже "почти", а не совсем. теперь, если это "почти" транслируется в сто килобаксов бабла - наплюём на сто килобаксов? хочу в россию. и это только один порядок величины, а я говорил про два.

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

(no subject)

Date: 2008-02-22 08:58 am (UTC)
From: [identity profile] anatolix.livejournal.com
У тебя, кстати, какие вообще задачи, что ты можешь так точно предсказать поток запросов? Как юзеры себя поведут обычно xz - станет сервис популярным и это его добьет - обидно будет.

P.S. Вообще да, килобаксы это порядок стоимости одного сервера. мегабаксы - вот тут считаем уже.

В контексте директ зарабатывает 1M$ в день, и проблемы в prime time на час это те самые 100K.

Плюс в любом случае у нас запас по мощности должен быть в идеале в 1/3, чтобы работать без одного DC, если его враги взорвут - по сравнению с этим 100K это просто копейки.

(no subject)

Date: 2008-02-22 10:55 pm (UTC)
From: [identity profile] 109.livejournal.com
а у меня не юзеры, у меня одна система с другою говорит.

вот, кстати, ещё: http://109.livejournal.com/396572.html?thread=1497116

(no subject)

Date: 2008-02-22 10:57 pm (UTC)
From: [identity profile] 109.livejournal.com
я хотел этим сказать, что у меня offline processing, который никак с юзерскими реквестами не синхронизирован.

(no subject)

Date: 2008-02-22 09:06 am (UTC)
From: [identity profile] anatolix.livejournal.com
про регуляторы: обычно всегда можно двигать всем. вопрос только в том сколько это стоит.

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

Точно так же твикаются все остальные параметры. Да в ТЗ написано, так-то, заказчик хочет то-то, но жизнь она сложней. Задумайся над гипотетической ситуацией "через час система полностью прекратит работу, какими параметрами я готов пожертвовать, чтобы этого избежать" и ты поймешь, что очень большое количество регуляторов которые ранее были недоступны, сейчас можно крутить.

(no subject)

Date: 2008-02-22 10:35 am (UTC)
From: [identity profile] anatolix.livejournal.com
И самое важное: на разговаривали про _АРХИТЕКТУРУ_ системы.
Конкретный заказ машин к разработке архитектуры имеет косвенное отношение.

Повторю своий вопрос, который я задал в прошлый раз не совсем точно:
"Если ты поймешь, что почти бесплатно можно сделать _АРХИТЕКТУРУ_ для 60K тыс запросов, но тебе нужно 6K, значит ли это, что ты не будешь ее масштабировать до этого предела?"

Ты же согласен, что не смотря на то, что про превратить систему 1M в 10K убиранием машин почти всегда можно?

(no subject)

Date: 2008-02-22 11:02 pm (UTC)
From: [identity profile] 109.livejournal.com
я именно про архитектуру, которая будет иметь лишние компоненты, для которых нужно лишнее железо, плюс понижение надёжности, которое нужно компенсировать увеличением redundancy, то есть опять лишнее железо.

процитирую, что ли, сам себя:

ещё раз: если мы проделаем мысленный эксперимент, описанный мной, и обнаружим, что scaled down system имеет кучу ненужного и её на самом деле можно было сделать в два раза дешевле - это и означает, что системы не масштабируются "просто так", for free. это и означает, что эффективный (в смысле, как минимум, cost-effective) дизайн системы на 10,000 отличается от дизайна на 1,000,000.

(no subject)

Date: 2008-02-23 11:27 am (UTC)
From: [identity profile] anatolix.livejournal.com
Мы с тобой помоему разные вещи понимаем под дизайном. Для меня дизайн это детализованная основная идея системы. Новые компоненты можно поселить и не на выделенные машины, с redundancy, что-нибудь придумать в виде хака и т.п.

Но основных компонентов там будет _примерно_ "столько-же умножить 100", запросы будут ходить похожим образом. Возможно добавится level чего-нибудь. И вообще если любому не сильно подготовленному человеку показать этот дизайн он скажет что второй вырос из первого. А не то что "это 2 совершенно по разному спроектированные системы".

Что реализация на практике отличается я согласен, для того чтобы хотя бы электричество и охлаждение для 100 раз большего количества машин обеспечить это отдельное совершенно развлечение.

(no subject)

Date: 2008-02-23 09:31 pm (UTC)
From: [identity profile] 109.livejournal.com
ну, во-первых, я считаю, ты отлично проиллюстрировал мой пойнт, перейдя от "ровно в 100 раз" и "абсолютно линейно" к "примерно в 100 раз" и "а может, N * ln(N), да и то не всегда".

во-вторых, продолжающаяся настойчивость в повторении того, что дизайн на N должен быть таким же, как на 100N (раньше было в точности, теперь приблизительно) и нежелание формулировать требования к системе в явном виде заставляет меня предположить, что ты и не решал никогда задачи, сформулированные как "сделать эффективный дизайн, который обеспечит throughput A, latency B на объёме данных C". а решал ты задачи, сформулированные (явно или неявно) как "сделать дизайн, который будет скалироваться в сотни раз без особых изменений".

(no subject)

Date: 2008-02-26 04:31 pm (UTC)
From: [identity profile] anatolix.livejournal.com
Нет, возможно в моем мире таких задач нет.

Даже в том котором был до яндекса - я никогда не писал систем которые в одном месте внедрят и больше трогать никогда в жизни не будут, и объем и тип данных никогда не изменится.

Более того в продуктовой компании не вижу в этом подходе смысла(возможно у консалтеров имеет - типа "после нас хоть потоп" или "за новую архитектуру платите новые деньги, так для нас даже лучше, что старая не реюзается" ). Мне кажется ты свою систему тоже напишешь и к тебе прибегут и скажут "отлично у тебя получилось. Давай еще такую же на в десятеро большее количество запросов". Что ты будешь делать - совершенно новую архитектуру? А потом снова ее тестировать тянет ли она?

А еще возвращаясь к первоначальной дискуссии в первом топике - там мы проектировали что-то GFS-о подобное, или поиско-подобное.
http://anatolix.livejournal.com/48336.html?thread=793040#t793040
Практически уверен, что у людей в гугле не было задачи "написать систему которая вот столько понянет, но наиболее эффективно", а была, чтобы "вот это эффективно масштабировалось".

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

P.S. (Извини не удержался ;)
Поэтому мне кажется, что "ты не решал задачи вида 'сделать дизайн, который будет скалироваться в сотни раз без особых изменений' " именно в терминах которых нужно проектировать поисковики и серьезные распределенные FS и БД

(no subject)

Date: 2008-02-28 01:57 am (UTC)
From: [identity profile] 109.livejournal.com
(расстроенно уходит) я совсем не хотел переходить на личности. извини ещё раз.

что я пытался сделать, так это найти общий язык и какие-нибудь общие примитивы (например - throughput, latency, data volume), опираясь на которые можно дальше беседу строить. а вместо этого уже который пост вижу только hand waving и мифические "скалироваться в сотни раз без особых изменений". я на таком языке разговаривать не в состоянии, несмотря на горячее желание.

далее, статья "THE GOOGLE CLUSTER ARCHITECTURE", на которую ты сам же вроде и ссылался, постоянно оперирует термином cost-effective. cost, cost, cost. и это очевидно. невероятно же тут то, что все мои аргументы про cost-effective были так же просто hand waved.

Поэтому мне кажется, что "ты не решал задачи вида 'сделать дизайн, который будет скалироваться в сотни раз без особых изменений' " именно в терминах которых нужно проектировать поисковики и серьезные распределенные FS и БД

я такие задачи не решал никогда, потому что задачи так не стоят никогда. потому что в формулировке задачи всегда есть словосочетание "cost-effective". и потому что "скалироваться в сотни раз без изменений" и "cost-effective" are mutually exclusive. потому что любая серьёзная архитектура - это комплекс большого числа trade-offов, и без осознания того, какой же trade-off мы совершаем данным архитектурным решением особо много не наархитектуришь. sheesh.

(no subject)

Date: 2008-02-28 11:03 am (UTC)
From: [identity profile] anatolix.livejournal.com
Я не на нее ссылался, но это не важно. Я тоже легко могу оперировать термином cost-effective как и гугль, это совсем не то же что точные "throughput, latency, data volume", которых обрати внимание с архитектуре гугля нет.

Кроме того точное соотношение "throughput, latency, data volume" можно посчитать уже для детализованной архитектуры - а не на стадии "задумки". Там ты можешь только понять, чем и примерно в какой пропорции ты готов пожертовать, ради чего другого. Что я вообще говоря и описал.
http://anatolix.livejournal.com/48336.html?thread=796112#t796112
И вообще помоему при фиксированном количестве железа фраза "максимизировать throughput" гораздо более точно объясняет, что хочется получить чем просто "cost effective"

По поводу же расширяемости - обрати внимание что в гугле нет документов "вот наша архитектура когда у нас было 100 серверов, вот когда 1000, вот когда 10000, а вот сейчас когда 400000" - у них там одна бумажка. И про map/reduce ихний аналогично.

Из примеров про смену архитектуры можно вспомнить недавний переезд yahoo на hadoop. Машин стало много, нужно чтобы они не выпадали, сделали вот такую систему. Но вообще говоря при переходе они отметили, что производительность выросла в 1.5 раза - поэтому наверное их предыдущее решение нельзя считать cost effective - если бы они так сделали с самого начала было бы лучше.

Про trade-off я про них хорошо понимаю, просто в моем мире они делаются по живой системе. За последние пол года мы поменяли архитектуру поискового кластера по мелочи раз 10, но в сумме она осталась той же самой. Т.е. я их считаю низкоувовневой архитектурой, а не высокоуровневой(в ЖЖ низкоуровневую не обсудишь по хорошему, слишком много подробностей и просто тупо много писать)

(no subject)

Date: 2008-02-21 08:23 pm (UTC)
From: [identity profile] ignik.livejournal.com
imho скачок как раз между 100 и 10K (между фиговинкой и аренды гробика) существенно меньше, чем между 10K и 1M (нужно *строить* datacenter), а это уже недвижимость если ссаноконтейнерами не разбрасываться.

(no subject)

Date: 2008-02-21 08:38 pm (UTC)
From: [identity profile] anatolix.livejournal.com
Извини конечно, но речь идет о запросах в секунду.

Так для информации у гугля сейчас не на порядок больше чем 10K поисковых запросов в секунду, а 50-100 запросов в секунду это некоторая граница "хорошего сайта" (достаточно для того, чтобы выдержать slashdot эффект).

1M запросов в секунду я вообще сомневаюсь, что сейчас у кого-нибудь есть. Но возможно у adsence столько показов есть, вместе со всем интернетом, но и то не уверен.

(no subject)

Date: 2008-02-21 10:31 pm (UTC)
From: [identity profile] ignik.livejournal.com
Ещё как есть. Только нужно понимать что сайт и вебсайт это две большие разницы ;-)

(no subject)

Date: 2008-02-22 09:15 am (UTC)
From: [identity profile] anatolix.livejournal.com
А огласите список проектов BTW, пусть и не web.
From: [identity profile] anatolix.livejournal.com
а откуда такая информация? Я маленько знаю как устроен CERN-овский кластер, там конечно 200.000 серверов которые при линейной масштабируемости это потянут, но мне казалось всегда, что они берут и считают свой кусочек задачи каждый а меняются ифнфой достаточно редко, а не на каждый чих.

(no subject)

Date: 2008-02-21 04:33 pm (UTC)
From: [identity profile] elk.livejournal.com
Ты славно срезал, это верно. Однако чувак имел ввиду совершенно правильную мысль: за некоторым пределом система уже масштабируется достаточно близко к линии, иначе она и на 10к оказалась случайно и временно на коленке.
Замени 10к величной х, не понимая впрямую.

(no subject)

Date: 2008-02-21 07:32 pm (UTC)
From: [identity profile] 109.livejournal.com
мнэ... это ж не бесплатно всё. достаточно легко спроектировать линейную масштабируемость, если money is not an object. да плюнуть и растереть. вот только оказывается, что если такой money-unaware design соскалировать линейно же обратно с 1М в 10К, и сказать "а теперь - экономить!", то неожиданно обнаружится, что цену-то можно сократить раза в два, и часть компонентов не нужна оказывается.

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

(no subject)

Date: 2008-02-21 08:56 pm (UTC)
From: [identity profile] yakov-sirotkin.livejournal.com
Я не понял, о каких деньгах идёт речь при таких нагрузках? О стоимомсти железа?

(no subject)

Date: 2008-02-21 10:06 pm (UTC)
From: [identity profile] 109.livejournal.com
и разработки лишних (или более сложных) компонентов. и надёжность падает при увеличении количества и сложности компонентов, за что тоже нужно платить, в конечном счёте деньгами.

(no subject)

Date: 2008-02-21 10:24 pm (UTC)
From: [identity profile] yakov-sirotkin.livejournal.com
Если у тебя 10K запросов в секунду и каждый приносит тебе хотя бы по 1 центу, то за секунду набегает стольник, а час работы системы окупит зарплату разработчика за год. И на надёжности при таком раскладе ты не будешь экономить, ты будешь в надёжность вкладывать.

(no subject)

Date: 2008-02-22 02:18 pm (UTC)
From: [personal profile] alll
Если это разработка для академических нужд, то хорошо если каждый запрос не уносит по 1 центу. Вселенные действительно бывают разные.

(no subject)

Date: 2008-02-22 02:21 pm (UTC)
From: [personal profile] alll
Кстати, это в какой отрасли запросы идут по такой феерической цене?

(no subject)

Date: 2008-02-22 04:42 pm (UTC)
From: [identity profile] yakov-sirotkin.livejournal.com
По-моему, меньше цента ни один клик в контекстной рекламе не стоит.

(no subject)

Date: 2008-02-22 05:34 pm (UTC)
From: [personal profile] alll
Кроме кликов есть ещё и показы, стоимость которых на порядки ближе к нулю, и число которых на те же порядки больше кликов. ;)

(no subject)

Date: 2008-02-22 10:53 pm (UTC)
From: [identity profile] 109.livejournal.com
109> и надёжность падает при увеличении количества и сложности компонентов, за что тоже нужно платить, в конечном счёте деньгами.

y_s> И на надёжности при таком раскладе ты не будешь экономить, ты будешь в надёжность вкладывать.

Яша, мы тебя любим!

(no subject)

Date: 2008-02-21 10:24 pm (UTC)
From: [identity profile] elk.livejournal.com
Ты много знаешь дизайнов, которые скалировались на порядки в обратную сторону?
Ок, которые делали это экономически/технически удачно, без порождения монстроидов.

(no subject)

Date: 2008-02-22 10:48 pm (UTC)
From: [identity profile] 109.livejournal.com
ещё раз: если мы проделаем мысленный эксперимент, описанный мной, и обнаружим, что scaled down system имеет кучу ненужного и её на самом деле можно было сделать в два раза дешевле - это и означает, что системы не масштабируются "просто так", for free. это и означает, что эффективный (в смысле, как минимум, cost-effective) дизайн системы на 10,000 отличается от дизайна на 1,000,000.

Profile

109: (Default)
109

March 2019

S M T W T F S
     12
3456789
101112131415 16
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags