Skip to content

Instantly share code, notes, and snippets.

@tirsky
Created November 19, 2023 06:04
Show Gist options
  • Save tirsky/6d1dc5ca6f34715f8512fe31d78e01df to your computer and use it in GitHub Desktop.
Save tirsky/6d1dc5ca6f34715f8512fe31d78e01df to your computer and use it in GitHub Desktop.
бурный поток очереди значит общий смысл заключается в том что у вас есть
хранилище которые вы
может быть специализированная может быть самое самое обычное самое простое любое
хранилище в которой вы пишете извлекаете их
том же самом порядке в котором записали эти данные могут быть фильм задачки
какими-то не знаю сигналы еще что то еще что то обычно какие-то задачки какие-то тоски то есть есть очередь
неё кто-то пишет из них это читая и эти данные
обработать самым блоки
бывает учились пятистах еще че-то параметрические и так
далее так далее так далее на по большому счету него для чего нужен попер все очень просто
у вас гарантированное количество бургеров например там 1 2 3 4 5 вы точно
знаете сколько им нужны ресурсы точно знаете как они работают а что происходит здесь на то здесь может быть какой-то
пиковая нагрузка здесь всё это вы можете делать на дал вам удобно
вот это вы делаете тогда когда удобно пользовать это первый механизм использования второй механизм
использования то что выполняемая работа может быть долго
ждать столько не нужно перекодировать видео вы не кладите сюда видео вы
кладете сюда создать перекодируют посади пожалуйста вот это видео перекодирование вот сюда
маркер очень часто используются этой стр это
первое водная задача которую еще с вами будем обсуждать 2 водная задача к тому самому обсуждать сервис не
ориентированная модель сервис на ориентирована модель построена по принципу о том что у вас есть и
ваша система вы делите на несколько сервис и каждый из этих сервисов обладает
какой-то своей внутренней логикой своей внутренней архитектуры своими базами данных и так далее например первых
фотографий построен совсем по другому нежели сервис постов через фотографии
большие диски много места для того чтоб ранить фотографии сервер постов это из
пуль мандат по россия базу данных сквозь сохранить фотографии
баз данных с пальцами и соответственно у вас отдельный сервис
вот один сервис пастырь
отдельно сервис опять чуть не перемешайте они как бы выглядит полость отдельно и сущность
принципиальным является сделать так что вот такие вот связи запрещены нельзя и в программы ходить в
базу данных другого сервис почему потому что не вы разрабатываете и могут
образоваться другие ребята они не обязаны вам ничего говорить это границ это как раз делается это правило водится
для облегчения совместной работы если за каждый каждый про команда отвечает за
свой кусок нормально они как бы договорились о том как они структурному общаются и внутри друга не изменилось
если сервис постов решает поменять систему хранения там не знают база
данных на файлы им никому об этом не над говорит как они общаются не общаюсь вот
так
каждый из них ребята мне можно приходить и вызывать у меня вот такие тут какие-то
такие какие-то методы как я способом приходить дальше так как угодно и нарезка
просто способ убить почти теперь
выполняет запрос точно так же вы выполняете детка вопрос .
точно такой же вопрос выполняется какого-то предмета просто договорились
что например я не знаю флота . facebook точка ком слэш
оплот вот это не темнеет от туда нужно передать фотографию и она будет
загружена в конец и все остальные сервисы знают нужно
загрузить что-то в хранилище они вызывают а
плоско принцип а теперь давайте сделаем следующее давайте
придумаем построим систему общения понятное дело
что это как бы внутренние внутренние мы действие понимаете да это не идет через
глобальный интернет и какие-то внутренние внутренние сети еще что-нить еще может
быть вообще не порез на мне перстами атакованы принципе
как сделать так вот нас есть сервис постов и
сервис рассылок пришел пост нам нужно опубликовать про
заслать тем друзьям этого пользователя информацию о том что это пользователь
сделал новый пост сервис постов services давайте сделать
понятно почему я выделил в отдельную историю потому что сервисе рассылок
может отправлено то есть например этот пост может опубликовать цукерберг когда
нужно сделать сто отправить 100 миллионов писем это может быть долго цукерберг не дождется
даже по блату меняется ответ нас идет давайте у
каждого из этих сервисов есть детей
talking давай вот так пришел новый просто
чувачок 7 из постов вызывает сервис рассылки
сервис по 100 опубликовалось 5 сохранила себя postsecret томасу и распря и
вызываем метод сервиса рассылок
какой разладь подписчикам такого-то
пользователя такой-то пост окей
разослать 1 почему эта штука
что внутри сервиса рассылка происходит в таком случае
отослать это куни внутренняя мощь у
нас с вами есть какой-то внешней api
есть внутренняя очередь есть какой-то
это глаз соответственно вот эта штука идет это идет сюда
идет сюда так
вот этим
отправляем сразу том что принято задачи
вера ok
какие минусы чем можно сломаться
как раз такая фишка что не через авест это один версия другой ну придет не смог
делает очень тупо вышли там через настоящий день получить ответ
этот масштаб и шатров а
ты специально закрыли то что вам надо
давать то чем проблема в этой схеме ребят не все
продумано она может сломаться
давай считать что ей будем считать что нас какая-нибудь персистенции со сбрасыванием на диск
когда-нибудь выполнить
но мы сами чтобы делать мы сами мониторить или но это в очереди и
следить за тем чтобы она не была не слишком ли не
как москва ереван куда едут и едут айтишники все нормально
запуска никакой блокируем второй борт и
начинаем разбирать два раза быстрей ну тебя же место не особенно патентами
то может быть людьми понятие несколько куку вот можно сделать
смотри обычно это делается так вот и запускаешь эту историю хочет для того и
нужна чтобы вот этот сглаживать пятен от и мониторе у тебя средние показания за
сутки например растет и за месяц вырос 5 сообщений я пятнадцать и вот тогда ты
принимаешь решение что что это будет скакать 00 10 10 15 20
ориентируешься настроение значения и на марципан максимально чтобы не выходила вообще за грант и разумного ну что там
не было каких-нибудь там не знаем многодневных каждой мы на среднее и запускаешь новые горки если не так что
там всего сейчас выпустил через час выруби
сколько хочешь запустить и важно это вообще 235 как обычно по одному и не спускает x раз запускать несколько
штучек хорошо запускать я не против запускайся
тебе выделили под эту штуку сервак cytus к ним столько locker а сколько сможешь 510 не суть важно
чем у запускаю новый worker а он будет ходить другой машины персонажи тасс масштабе вы дели очередь на одну машину
квартиры на другую машину
важно boxing точно такая же какая-то задача удалить
рассылку из очереди есть и начали прошла ребята это схема не заработает почему
в этой схеме есть проблем какие
вот это вот крем принимает нас внешний интерфейс нашего вот этого сервиса насос
1 сразу
нет задача послать пользователям подписчикам
пользователя такого-то информацию о каком-то постель и начинают или выполнять потихонечку р с р с с р мы
сейчас внутрь того как он это делает не пойдет не пойдем нам нужно научиться коммуницировать между вот этим сервисом
и вот эти хорошо спрашивать если этот сервис ломался
слова не отвечает он
не вот это api-интерфейс не отвечает вот этот
сервис постов к нему стучится а тот молчи мы не знаем связь пропала лег
программист криворучко что-то выкатили неправильно он не работал
костер после 10 минут ждет пользователи тебя у тебя трезини у тебя
три секунды можно как ты предлагаешь можно
поймать не сработал то что
но только безусловно из если расположим локальной очень
локальны очередь
орбиты и вот здесь два сервиса хотя может быть сеть пропасть между ними
и как бы обходиться не будет работать мучает и входящий некий исходящий сервис
сервер запросам тоже по большому счету борт это сборки
ага мы кладем пост мы не отправляем его сюда сразу кладем нашу локальную
исходящую очередь
нельзя а коли машина в нашем сервис она расположена в нашем сервисе мы и
контролируем мы знаем через не происходит мы понятия не имеем что что происходит
во внешнем сервисе мы понять имеем что происходит там но мы знаем все что происходит здесь
нам это контролируем это наша поэтому мы кладем в локальную очередь и отсюда
квартиры которые отвечают за то чтобы отправить информацию куда-то еще
отвечать за то что отправить информацию внешние сервисы берут задачки и отправляются
этот пост рок отсюда пришло принято
удаляет ее изучить а
если если не получилось составляет в очереди возвращаются к этому через какое-то время
можно можно это усложнит тебе несколько логику
но можно
карбид это конкретное название технологии которая позволяет объединить
два сервиса два сервера поднимаете адреса
поднимать и адресом и работает по внешний мир 1 2 типа стоит
работать но не отвечает во внешний мир он не смотрит он только мониторе 1 если
первый сломался которой говорят а теперь я и протри поток в то же самое при печати на другой 5 вот этот просто общая
схема так казалось бы все нормально
добавились очереди
вот здесь а кто км и в локальную базу данных мы мы записываем пост локальную
базу данных мы записываем задачи в исходящую очередь
сразу точнее про шоном
нет первый путь чреват тем что мы ломаемся если внешний
сервисном нам не отвечает мы не можем так работал
работает у нас по 500 это о чем наш информации не теряется мы отвечаем
за себя у нас ничего не теряйся у нас ничего не пропадает когда заработает тогда мы
отошла
репост публикуется нами он не рассылается
зачем ну он же умер хорошо он помер это
внештатной ситуации мы можем рассчитывать на письма о
мы там не говорим без ты посмотришь к фейсбука в этом не говорю просто через
какое-то время прислать без добби запись так скажу
точно также ребят у вас может быть у
вас можно что угодно у вас может быть вместо рассылки у вас может быть какой
то не знает статистика кайф индексация обработка видосика там еще чуть-чуть и
сяк посте видосики и есть и так далее то есть вообще здесь может быть например какой параметрическая очередь с разными
типами задач и каждый палящий сервис отправляет в разные сервисы
каждый исходящую от worker отправляет свой тип задач обслужит свой тип задач
отправлять их по разным сервис вот примерно так на самом деле
вот это это некая классика так раньше делать это не убиваемая конструкция если это
вздох нет никого это не коснется если этот сдохнет
никого это не коснется данные не терялись ты удалил общий принцип простой ты удаляешь данные от тебя удаляешь
задачи от себя только кустов как тебе внешняя сторона про гарантировал что на задачу приняла
все сейчас есть такая
тоже называется сообщений вот это все
вот это все
исходящий очереди потому что здесь нас
worker и которые ну как бы здесь нам тоже нужно учить наши задачи
могут выполняться долгий заменяется на брокер сообщений
картинка которая делает примерно то же самое некая коммуникационная среда и между
различными сервисами которые гарантируют информация будет передаваться из одного места в другой то есть либо вот так либо
через брокер так а теперь смотрите вопрос внимание
вопрос хорошо внутри сервис рассылки пойдем вот
у нас есть этот сервис раскрутки и вот мы и получили задачу
кистью очередь выучить попала задача зашли вот этот
пост во всем друзьям вот этого пользователя пост пользователь и
вот здесь у нас норки
этой схему нет нет
нет таблица с постами у нас здесь это 1 сыщик он берет каждый год другом
пользователя цукерберга например и формирует письмо и
отправляйте каждым игру посты сохраняется вот здесь вот у нас
сервис по стоп это сервис рассылки они разные вещи мы просто каким чтобы то про
каждый пост узнали друзья
клиентам где-то здесь это в сервисе постов вот сервис постов
грэй пас бы хранить ленты все прочее просто ящик не храните ты постели монахи ненужного разослал забыл и
так внимание вопрос вот эта схема чем просто чем плоха здесь видите опасность
первая проблема еще
бирки напоминаю 100 миллионов друзей
будет рассылаться то миллионов писем нам отвечу
утки несколько суток то есть проблема у нас том что если мы
делаем вот так очередь задачами раз пильщик то у нас задачи
могут быть разным она выполняется за минуту другая за сутки это может быть
неприемлем может быть и больше
так давай подожди кто где что разбивает
давай у
[музыка]
нас несет у нас проблема ждут полотна мы для этого очередь и вводим нас проблема
в том что задачи если на 1 она будет выполняться очень долго друзья стать
ребенка будут самыми притесняемыми пользователями сети
одном чем все правильно короче приходит задач вот здесь она звучит вот этот пост
вот этот вот сервис наш сервис простого он понятия не имеет что там внутри у сервиса рассылок он ставит задачу вот
пост вот пользователь рассылая его друзьям
все он не знает сколько этих друзей он не знает ничего его это не ко мне знать
что продлен эта процедура или не длинная это его не касается он поставил задачу она прилетела вот эту вот самую
подходящую очередь потом начинает обрабатываться 1 квартир берет пост
перед пользователя зачем что нужно сделать выяснить сколько у пользователя друзей днем где он ведет
к сервису друзей ведет к сервису друзей и точно также
спрашивает сервис дружбы вот мне подсунули вот
этого пользователя отдай мне всех его друзей говорит отлично держи вот тем миньончик
что одев этот вот следующую блин задачу
следующую очередь
который уже немножко по-другому просите здесь нас задача звучало разошли вот
этот пост друзьям вот этого пользователь то здесь задача уже может звучать
разошли вот этот пост вот этого человек но этому человеку это правильно
. конечно почти все этому человеку то мы просто другую проблему с тестового лера
можно сделать миллион задач например пачка людей поступать по 100 по тысяч и
здесь уже другой маркер из этих может быть уже больше
одним типом задач это очередь там не знаю внутренние другим типом задач
например так и вот воняет задачки который не мне кажется
максимально страшными папа 1000 штук нокий потратим минуту потратим память 2
минуты три минуты и тогда когда придет цукерберг это создаст
некоторую проблему нагрузку на стоять здесь сразу много задач и одна задачка отсюда будет сконвертирована то мне знак
1000 задачек сюда но ты всё равно довольно быстро переваривается это переварит во всяком случае примерно
равномерно то есть это не будет а до этого у нас было последовательная рассылка всему этому миллион
сейчас мы это делаем в то количество потоков сколько нас здесь вот
ну ты можешь маркеров поставить то
потому что отец задач на 1
она просто огромную теперь нужно за сплитить кусочки из печи на кусочки и
flash каждый кусочек один сделать из нее маленький гарантируем задач этот паттерн
как называется проходили
r господи обычный самой обычной коннелли
когда вы берете задачу например нам или на какие-то данные и начинаете выполнять
обрабатывать несколько на каждом этапе обрабатываю ведет свою обработку
можно можно если это как решить эту задачу
во первых нужно прийти к но и чтобы сказать если вдруг нужно ли какая-нибудь
гарантии отправки этого письма разные ответы это может быть ответ
например что ну например если банк клиент какой-нибудь банк высылает тебе
письмо о том что твои деньги списались ты нужно делать прям сейчас это нельзя ждать
они не знаю пока что то пройдет и очевидно что это разные
будут сервиса рассылок для банковской истории и для вот этой или
разная очередь может и можно сказать да мне пофиг через
сутки через не значит три часа или через час неважно насколько прямо сказали так же нет
никаких гарантий когда письмо придет о том что кто то теперь счет там написал или прокомментирую впредь и сразу через
час через два через вот но и
если скажут в течение часа что она сменяется
педагог начали что письмо о новом сообщении она постиг
гарантированно должно прийти в течение часа
а менеджер приходится и говорит это полный сфере давай переделывать течение
часа как вообще это сделать
нет и я не справился поэтому выполнять задачи либо пойти сюда не получил
давайте так смотрите вот у нас есть два два два два варианта этой по задаче первый вариант под задачи и
сообщения должны быть отправлены в течение часа даже для цукерберга
не помогу тебе приоритета жена цукерберга тоже
если менеджер говорит что любое сообщение в течение часа должно быть
отправлено а любому посте вот там-то цукербергов то вы занимаетесь математикой вы вычисляете
производительность каждого волтера производительность своей сети и так далее и вычисляете что может произойти
сколько цукербергов одновременно могут описать посты смотрите статистику сколько это было
раньше берете какой-то максимум увеличите это пять раз делите на производительность одного брокера и
получаете нужное количество бургеров то есть если как бы менеджер идиот то вы решаете звонящих в лоб
вы приходите к нему говорите без проблем гавно вопрос на пожалуйста мне нужно 100 серверов
подварки когда вы так скажете magic говорит ну слушай ладно давай так давай всем
гарантия на цукербергов можно поможешь да так будете делать
вот на вот этом этапе мы знаем
например либо либо как наиграться с очереди
приоритетов либо отдельно от площади для супергерл
нет не надо кажется теперь вот просто очередь для больших ребят можно
нормально дней для популярных и для неинтересных
скучных подписчиков и а идейки у тебя вот на эту работают
например я не знаю 70 процентов а на эту 3
вот эти 70 работает только на и берут за счет отсюда а вот эти 30 работают только
100 процентов маркеров до времени не со всеми ты правда
вот так
давайте сделаем и полнее что если вдруг его очередь пустота помочь соседу
супергерл или наоборот есть цукербергов superbird
улетел на марс и не просят ничего связь нет берем работаем с обычным
простая задача когда письма разослать но в принципе если бы логику поймете она
вот в таких вот десять килотонн из таких кусочков очередь сборки подписчика очередь в
опера фишечка много бургеров много серверов по топи и так далее
что вы будете делать если например запросто по сервису рассыльщик of очень
много и вот этот вот этот веб сервер который нас задачка принимает который
opel во внешний мир выставляет он не справляется давайте сюда еще
масштабируете то есть как вот принцип один и тот же можно
горизонтальное масштабирование
так
еле мяч давать идем в область баз данных
немножечко помучить и так базы данных
что вот мы сейчас с вами проходили это было так сказать
это было масштабирование
большой герой не контента да еще чуть нас есть сами некая общая для всех часть
который называется хранилище данных и вот с ним мы сейчас с вами будем учиться
обычно в роли кровищи данных выступает какая-нибудь база не знаю москве после
40 что-нибудь еще и так далее правильный проект писать важно и
и бэг-энда ходят к нему
нам нужно с вами понять все бока доходит к нему если бы
канта над нами разобрались как масштабировать нужно просто стремиться к тому чтобы не было как можно меньше
общих частей нужно стремиться к тому чтобы они не хранили состоянии да то
есть они не менялись чтобы запросто было неважно какой бы кондак прийти не было никакой там не
знаю внутренней истории как ведь базами данных и бэг-энда будут писать в одну базу данных и она в конце концов 100 мы
она не перестает справляться на мне тоже нужно масштабировать то есть тоже научиться базу данных
держать на нескольких серверах распределенная база данных как они
устроены понесла будем все это изучать начала
место слов ключевых и
сейчас скажу одно слово
еще одно слово которое называется а
чтобы иметь виду под бриз
да нет здесь и и
так
про транзакционных да все верно ошибка прошло а
там одна
контакты полностью либо выполнена либо не выполнил транзакция состоит из нескольких кусочков и
зверских запросов 0 полость заполняется либо полностью не выполняется и
что значит не против давид да если транзакция
выполнена выполнена окончательно даты и так далее то есть согласованная баз баз данных согласовано
как до так и после транзакции ой
транзакции выполняется до пар могут выполняться параллельно каждая как бы в своем кусочке как реализуется ой она как
раз реализуется с помощью вот этой фигни штука расшифровывается как мульти вершин
конкуренции control как раз и обеспечивает нам то что у вас каждая
своей копии базы данных реально это конечно же не копия
сложнее конечно история не просто снапшоты кстати
вот отсюда следует одна из проблем если во время транзакцию не закрыли не
закрываете то через какое-то время вас все будут очень бруса
самая ошибка новичка 2 ст или закрыл во время трансляции соответственно база
данных который пониже трансакционных продолжает следить за тем чтобы у тебя была своя изолированная код и другие
нормальные ребята которые имеют программировать традицию закрывает поминальных изменяете твоя версия
конкретной не закрыта транзактов постоянно кухни кухни кухни кухни кухни база не тратить все больше больше больше
ресурсов не по
это постоянен окошечке написал такой весьма и транзакциями закрыл бесить вечно
поймал акции может быть да хорошо если есть таких
гавриков с неверно работать транзакций много то все вообще грустно читать это
кай довольно странной истории первое на что смотрит ребята которые по базам
данных работают консультируют этой транзакции нет открыты трансакции не
висите ли незакрытой транзакции все это нормальная самое ключевое столь так воды д
что означает да и смотрите слово пацана веса петель
что записали значит описать так как теоремы
я по нему 2 из 3 хорошо-хорошо колой ассистент на
доступность разделяем если то что означает давайте
разберемся с вот это волшебный
портрет 1 то есть грубо говоря если ваш
если вот эта распределенная система хранения состоит из минских узлов
она устойчива потому что какая-то из этих связей пропадет или какой-то канала
или какой-то пакет не дойдешь теперь внимание вопрос
принципе реализуемо
вот здесь два компьютера объединенных сети
unix компьютеры надежная сеть у тебя есть гарантии что пакет будет перрин
нет короче
вы сжать [музыка] не выдерживать пышечку то есть как бы
выбросить ее из разговоров вы всегда должны они он любая
любая система который будет разрабатываться и т.п. будет по умолчанию и
вопрос на самом деле либо вот этот ли ну вот этот будет потому что в интернете если вы
хотите убрать эту п у вас что вот эта штука вырождается 17
вся распределён нас пропадает то есть либо
потому что есть если у тебя чести нет то есть собственно говоря выдерживать и
думать над тем чтобы у тебя эта штука работала
но это база творился все то что у тебя нету коммуникации внутри
твои системы
приведите пример
ну-ка системность и доступ
погреться на одной машине на машине да нет на c3
c3 ты не выполнишь если ты на одной машине тут и автоматом не выполняешь нас получается что пар на цвет если те
кладется машина то все ты не можешь гарантировать кошечку
нет если кладется машина и у тебя сервис не отвечает в овне поэтому внутренняя
история то есть система продолжает работать чтобы вас внутренние происходил из вас один блок
вылетел там не знаю канал вылетел между ними связь вырубилась и так далее чисто внешне все выглядит надежно вот это
собственно говоря то это отключает flash если на одной машине вот и кошечка не выдержишь короче это на
самом деле кричи на историю картелем а потому что она будет ограничивать ну например
мы пишем вот допустим у нас есть один сервер
мы на него больше не справляются мы ставим с норой
the trap как коптелин баз данных 1
теперь есть я пишу вот раньше не было золото а теперь
мне нужно записать вами вариант как конкретно нас ограничивает карте
ремонт как она конкретно просто тупо работает смотрите если я беру вот мне пришел сюда запрос я после этого пишу
сюда я сразу отвечаю пользователю хоккей это первый шаг
вот это второй шаг потом я иду сюда третий шаг и до записывают
если так сделал что мне нарушит
то есть вот момент два с половиной информация в этой базе данных и в этой богами разная и
сейчас не выполняется окей тогда если вы не так я сделаю сначала вот так а
потом отвечу пользователю о том что я все записал а в этом случае чтобы мир
был атомов
то есть пользователь ждет пока я обработаю и
разложу и тормоза если там их несколько
вот одна вот она вот коптером очень тупая просто я вот например как работа всегда будете выбирать либо вы
заставляете пользователя ждать но тогда все гарантирован либо вы придумываете какие-то ощущения пользователем не жмет
но тогда и [музыка] информация никосия то есть некоторое
время база данных не согласованном состоянии где-то одна информация это другая и отсюда пошли все вот эти вот механизмы
как они называются у нас есть консенсус of и так далее что
происходит когда вот здесь одна информация здесь другая связь разорвалась потом остановилась и санденс
випассана xyz другой как найти истину и тогда
мой пёсик не 2212 его
elite 3 доступность означает что ты получаешь
ответ течение код определенного времени но и да то есть это конечно время к не бесконечное время в этом как раз и
фишкой в этом как раз критика как теорема потому что на самом деле немножко так умалчивать эту историю на
самом деле до нас доступность имеет смысл жёстко ограничена временном промежутке знаю 50 секунд нет ответов на
все и так так он понижает теперь
способы масштабирования борта на самый простой вытекает из вот этой вот съемки из наши
коктейли называется репликация
вот у нас и некая mapper база данных есть вы бы
уже не политкорректно но мы сами в россии поэтому будем так говорить
был обучая не значит она закончилась стать переименовали не переминались что словами
что нам без не или только вниз мне кажется
что мир
мы запись ведется на русском языке никто из нас не послушать поэт общая логика
заключается в том что мы пишем сюда а читаем
слова и
где это работает это работает проектов где чтение из базы данных гораздо больше
чем записей то бишь практически во всех интернет правь рулем интернет-проекте
записей меньше чем чтение причем иногда фраз и поэтому просто напросто постеров
вот такую структуру и сделал там не знаю несколько стоило бы себе несколько раз
увеличиваете производительность систем так
вот и есть здесь уже варианты зависит от того как ты настроишь эту репликации
есть такая настройка ждать пока не будет
получен ответ с каждого из лайвов но обычно делают не так обычно
мириться с тем что некоторое время эта информация будет до
слепов докатываться есть специальный механизм у всех баз данных называется и котлу
который как раз получились которых на презентации prezi не суть
что нам делать вот мы настроили эту репликацию пользователь написал пост
делаю 3 речь об астане не да как информацион читает отсюда
опишет сюда чё делать эти вариант предложит
это из прошлого века сейчас так иди
не можешь это ответа все-таки слишком долго мы должны пользователь первое
правило мы почти дошли сразу дать читать неможно
первое толстый клиент решить проблему задержки клиент
звук он так делает попробуйте отправить сообщение ну вася
косачев мятку было не раз отправляешь сообщение человек она пишет о вроде как
ушло и только через некоторое время facebook через минуту пишет кончик не
получилось красите подсвечу telegram также делает
выкать умнее эти ребята делают секс еще раньше делали сейчас не знаю ну короче
суть его заключается сеточного на самом деле делает три что он отправил и пытается отправлять
ждет какова там ответа еще что-нибудь да ведь короче толстый клиент может просто пустил сразу показать на первый вариант
второй вариант всё ещё можем но часто делает
да еще варианты
но и и в reapers одном одна информация в другом другая ну или не это еще хуже она
клинит перекладываем задачу разобраться том бардаке который мы натворили на
сервер
почти часто делается такая история что если мы изменили на мы читаем их несчастлива
атмосфер это лет происходит мастер выдержит если
например там не знаю один к десяти у нас отношение
запись и чтение ну будет рад 10 раз сочетаются с мастер короче читаем с
мастер нет мастер то обманул данные сразу себя
я погоди мы сейчас это мы боремся сейчас нагрузка м тогда перестанет лизать надо
машинку мои чуть похож по 2 и
ну смотри это на самом делается знаешь где это делается это делает
[музыка] архитектуру рассматриваем на уровне 7 урок вот есть точно такая же
архитектурного не приложение у тебя там точно также несколько слоев одна функция
вызывает как набор другие функции тогда внизу у тебя общение с базы
иногда используют в рамки так называем паром это слово
почему р-н 2
это рнк это слой который отвечает за работу с поздно называешь ты пишешь
запрос вызываешь функцию например
отбери из такой-то таблицы по таким-то полям и рмк сама конструирует нужный
запрос из она тебя скрывает всю базу да ты не знаешь как то есть некий слой с работы с базы - это
очень удобно для тупых простых запрос подними и объект ну например вместо того
чтобы сделать и вскоре запрос базе данных про пользователя потом очень сити данные расшифровать каждый из полей
создать объект заполнить данный запрос ты выиграешь
просто-напросто метод рынке верни мне потом индикатор она все делает
тебя хорошо это удобно на минус нам что ты не контролируешь лечу то есть если какой-то
сложный запрос время вас конструирует и так что оптимально а
я к чему говорю а я говорю что вот этот проверка происходит на уровне товары вот
идет выполнение запросов и мы знаем что сейчас напишем посуда рнк знает что мы
писали поста и чтение если брак так выполнение вот это
уже вот эта же программа будет еще и чтение с базы данных то она будет читать из мастер вот и все то есть как бы
приложение вообще может не знать о том что вот этот способ
так это у нас здесь бывают еще другие способы
репликации бывает мастер мастер репликации еще что то то есть какие то там сложный нас не суть важно общий
принцип заключается в том что пишем в одно место читаем из не только по z может касаться любых
хранилищ видео точно также кладем на нефть и
рвать под вопрос надо еще на 10 и поэтому какое популярное видео будет
сразу доступность несколько серверов для чего это для того чтобы повысить пропускную
способность что мы будем делать
она внутри нет м это еще часть 5 счет творятся это
твой о приложении пауэр формулирует sql запросы или любые другие запросы которые
идут в базу данных и репликация она уже будет
репликация вот эти вот эти процесс они вот здесь а вот и от процесс откуда
читать отсюда или отсюда он может контролироваться
так хорошо
нагрузка а брались что мы с вами будем делать если мы не признаем а машинку
построили такую красивую штуку у нас один мастер 4 слоев своего на разных машин
оданак стало слишком но
давай что вкус родирование второй ключевой механизм 1 репликация второй
шар нирования что это так что это за хрень
проблема
ok обсудим отправлю и так общая история
есть кусок который слишком большой и 1 и на одну тачку не влезает
мы уберем и по какому-то принципу на разные точки
какие то могу и принцип
пользователю нас пользователь по компресс будете делить пользователь
ну даже вот смотри вот база данных пользователей анкета сделаешь прячешь
сайт подушечка в этом
баге первый ряд мальчики девочки второй вариант
geographic
хотя чего
ну что вы могли бы стать и деревьев
это а теперь предложение как
кличко а где пользователь
fischeri да ну так наша thanked это извращение немножко как как вы вычислите есть росла макет неизвестно мы поднять
так ладно дело чем плюс минус
да тема разных региона полегче будет чем-то цели
-45 москва не резиновая у
вас будет вас будет неравномерное распределение замучаетесь равномерно
раскидывать это все по паре а.а.
да возможно а вот тебе пришел пользователь как-то предыдущего географическая принадлежность
ненадежны ну
короче вы не подняв анкету вы дел факел не разделить поэтому не проката на
всем сначала анкета сначала какой-то айдишник нужен дальше ну гендер совсем
не прокатило у нас всего два прогрессивным заходи их больше то все
равно они неравномерно плюс айди шичко на самом деле почти одно
и тоже едешь любой лишь выбирайте книжку и по какому-то принцип или 9 по какому
возьму насадишь к пользователям логин
согласен
можно как хэши можно просто сравнить
точно также можно травить не ваш любом случае у вас есть некая функция
которая ключевая есть некая функция хеширования и
вот здесь у вас этот идентификатор а функция возвращает вам номер сервака
говори адрес фирма то неважно
вот это вот случая история как ты должна быть написана вот это вот
вот эта штука здесь есть две вещи так она может быть написан может функция от сша а так еще
можно будто чего-то а можно под таблицей
таблица соответствия а иди
назад центральный диспетчер то есть так нас какая какая-то функция а шарли рование а
так центральный диспетчер
так следующему разу две задачи первое
вот и сидят и выберем вы докажете что центральный
диспетчеру это хорошо все остальные доказывает что вот такая вот функция это хорошо
правильно нет
. это первая история а вторая сторона хорошо мы поделили
1 51 серва на репит на другой ферма 3
а потом перестали влезать на первое серво и
что сделали у нас функция ломает
она же не такая красивая также получились исключение
если набрать что было бы еще тоже рама что при добавлении еще одного сервака у
тебя его часть перельется сюда тщательно часть сюда шесть и все сервера
ну и ты этот у тебя туда сюда переложила сюда переложил пока система не придет
хочу делать пользователь паненки смотрят уж извините нас сервак но вы купили мы
перекладываем короче как то хочет принципе эту байду
вторая задача для всех подумать перец чё делать когда раз новый сервер
добавляется нашу шар германа идеальная историю
когда мы смотрят
хорошо но а по запросу то есть у тебя тебе нужно
перевести блок данных пользователь приходит из этого диапазона
как он узнает идти на на место на старт
с ним предлагаете
эту тебя будет это тебя будет работать вот здесь а
вот вот это все то соответственно
отделение на 10 ну давайте росток нет умирает и эта
машинка которая сайта чтобы работает
225
мы еще не переложили зубы греет нас там терабайт перекладывать сутки
прибежал такой молодец 2 при поменялся заработал ни фига перепады сутки а for sure there's
кофеина в этот момент часто пишут и ты не можешь сказать ребята извините
новый сервак а
вот те ребята которые в течение этих суток писали
эту даже а мы потом старом перезапишем
короче давайте это по стране не слишком много
вопросов мы пишем и туда и туда да или пишем пока
на новый
хорошо уже пересесть но без вот этой таблице ваша схема не работает
два раза при миграции
[смех]
давайте до следующего раза на след нас еще майские начнутся еще раз не начнутся
все до
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment