|
|
|
|
|
|
|
|
|
Как простыми методами сэкономить миллион рублей. Как сэкономить миллионКак сэкономить миллион на мелочахЕсли верить шутке, в которой доля шутки, все достижения человечества прямое следствие человеческой лени. Микроволновка, электрочайник, полуфабрикаты все создано, чтобы освободить наше время… и кошельки! Если в вас еще капелька трудолюбия осталась, попробуйте ее развить и сэкономить миллион. Почти. Электрочайник. Если вернуться к варианту со свистком, то отдыхать будет уже электросчетчик. Микроволновка. Отказаться совсем нереально, но можно и не усердствовать. Эффект как при отказе от электрочайника. Чай в пакетиках. Неужели и дома вам хочется употреблять это… Заварите себе душистого хорошего чайку и удовольствие, и экономия. Обед на рабочем месте. Принесите еду из дома и офис станет не таким опостылевшим, и желудок доволен, а более всех доволен кошелек! Маршрутка. Это средство передвижения возможно лишь тогда, когда оно самое удобное нет пересадок и т.п. А в автобусе ездить даже гигиеничнее. Откуда вы знаете, кто и как убирает в этих консервных банках маршрутках? Полуфабрикаты. А можно варить фантастические щи и борщи! Натурально, вкусно, недорого они ведь будут с натуральным мясом в отличие от колбасы и пельменей… Покупайте в магазине большие упаковки дешевле. Печенье, крупы, конфеты вразвес. Зачем платить за упаковку? Сравните цены в магазинах хотя бы ближнего к вам круга. Обязательно сделаете приятные открытия! Покупайте во время распродаж и «не в сезон». Но только то, что действительно требуется. Источник: thismoney.ru Теги: полезные советы, деньги Впервые опубликовано: 14.02.2010 Интересное на моём сайте:allonatashka.ru Как сэкономить миллион долларов с помощью Tarantool / Блог компании Mail.Ru Group / ХабрЕсли допустить, что это только нагрузка на чтение, то проблема решается репликацией. Вы можете ставить к базе данных столько реплик, сколько нужно, и все чтения пускать на реплику, а все записи — на мастер. Если же на базу данных идёт нагрузка на запись, то репликация эту проблему не решает, ведь запись должна осуществляться на все реплики. Таким образом, сколько бы вы их ни ставили, вы не уменьшите нагрузку на запись из расчёта на одну машину. Тут на помощь приходит шардинг. Если база не держит нагрузку на запись, то шарды можно добавлять до бесконечности. Шард устроен сложнее, чем реплика, потому что нужно как-то распределить данные по таблицам или внутри таблицы, по хэшу, по range — есть множество разных вариантов. Таким образом, добавляя реплики и шарды, вы можете делить любую нагрузку на базу данных. Казалось бы, больше желать нечего, о чём дальше говорить? …которая лежит уже не в плоскости технологий. Ваш босс, видя постоянно растущий парк серверов, начинает негодовать, потому что на это уходит много денег. Нагрузка растёт, количество запросов от пользователей растёт, и вы всё добавляете и добавляете серверы. Вы же технарь, про деньги не думаете — пусть этим занимаются финансисты. И вы говорите своему боссу: «Всё нормально. У нас бесконечно масштабируемая система. Мы добавляем серверы, и всё круто работает». А босс отвечает: «Отлично, но мы теряем деньги. Нужно что-то с этим сделать. И если мы не решим проблему, то придётся закрыть весь бизнес. Поскольку, несмотря на рост бизнеса, по базам данных и серверам мы растём с опережающей скоростью». И эту проблему должны решить именно вы, а не финансисты, потому что она лежит, возможно, в технологической плоскости. Что делать дальше? Amazon гораздо дороже. Оптимизировать? Вы уже оптимизировали все запросы. Выходом может стать кэширование данных, которые часто селектятся. Их можно держать в каком-то кэше и постоянно возвращать оттуда, не обращаясь к многочисленным репликам и шардам.
В своё время возникла такая идея: чтобы данные были всегда «теплыми», нужно просто не «охлаждать» их. Для этого кэш должен быть персистентным (persistence), то есть нужно хранить данные где-то на диске, и тогда всё будет нормально. Кэш будет стартовать и подгружать данные. Но тут возникло сомнение: кэш — это ОЗУ, он должен быть быстрым, а когда ему в пару даётся диск, то не будет ли он таким же медленным, как база данных? На самом деле — не будет. Проще всего «персистить» кэш раз в N минут, целиком дампить его на диск. Этот дамп можно делать асинхронно, в фоне. Он не замедляет никакие операции, не нагружает процессор. Это позволяет многократно ускорить прогрев: когда кэш поднимается, у него уже под рукой собственный дамп с данными, он их читает линейно и очень быстро. Получается быстрее, чем с любым количеством реплик баз данных. Но не может же быть всё так легко, верно? Допустим, мы делаем дамп каждые пять минут. А если в промежутке происходит сбой, то накопившиеся с момента предыдущего дампа изменения будут потеряны. Для каких-то приложений это неважно, например для статистики, а для каких-то важно. Вторая проблема — мы хорошо нагружаем диск, который, возможно, требуется для чего-то ещё, например для логов. Во время дампа диск будет тормозить, и происходить это будет бесконечно. Избежать этого можно, если вместо регулярных сбросов дампа вести журнал. Сразу должен возникнуть вопрос: «Как же так? Это кэш, он быстрый, а мы тут всё журналируем». На самом деле это не проблема. Если писать журнал в файл последовательно, на обычном винчестере, то скорость записи будет достигать 100 Мб/с. Допустим, средний размер транзакции 100 байт — это миллион транзакций в секунду. Очевидно, что мы никогда не упрёмся в производительность диска при журналировании кэша. Благодаря этому решается и проблема IOPS: мы нагружаем диск ровно настолько, насколько это необходимо, чтобы все данные персистились. Данные всегда свежие, мы их не теряем, при этом прогрев осуществляется быстро. Но у журналирования есть свои недостатки. При ведении лога апдейты, которые обновляют один и тот же элемент, не группируются в одну запись. Их получается много, и при старте кэшу приходится «проигрывать» все эти записи, что может занять больше времени, чем старт с дампа. Кроме того, сам по себе лог может занимать очень много места, даже не уместиться на диск. Для решения проблемы можно объединить оба подхода — сброс дампа и ведение лога. Почему бы нет? Мы можем дампить, то есть создавать снапшот, раз в сутки, и при этом всегда писать в лог. В снапшоте мы сохраняем ID последнего изменения. А когда нужно запустить кэш, читаем снапшот, сразу применяем его в память, дальше читаем лог, начиная с последнего изменения в снапшоте, и применяем его поверх снапшота. Всё, кэш прогрет. Это делается так же быстро, как если бы мы читали из дампа. Итак, с холодным стартом мы разобрались, давайте теперь решать остальные проблемы в нашем списке. У базы данных есть такое свойство, как durability, которое обеспечивается с помощью транзакций. В БД обычно хранятся горячие и холодные данные. По крайней мере, раз мы дошли до кэша, то у нас данные точно делятся на горячие и холодные. Обычно холодных данных очень много, а горячих очень мало. Так устроена жизнь. Мы реплицируем и шардируем базу данных на много-много копий и шардов только для того, чтобы обслуживать горячие данные. Мы можем сказать себе: «Зачем мы всё это копируем? Давайте шардировать только горячие данные». Но это никак не поможет, потому что мы должны использовать ровно такое же количество серверов, ибо шардируем и реплицируем не из-за того, что данные не помещаются в память или на диск, а из-за того, что мы упираемся в CPU. То есть база не успевает обрабатывать. Таким образом, шардинг и репликация только горячих данных не решает эту проблему. И босс всё ещё злится, потому что нужно платить за всё новые серверы.Итак, в кэш можно внедрить все свойства, которые присущи базе данных. Мы так и сделали, а получившееся в результате детище назвали Tarantool. По скорости работы на чтение и запись он сопоставим с кэшем, при этом имеет все свойства базы данных, которые нам необходимы. Таким образом, мы можем отказаться от базы для хранения горячих данных. Все проблемы решены. Итак, эти многочисленные холодные данные мы реплицировали и шардировали только для того, чтобы обрабатывать малочисленные горячие. Теперь холодные данные, редко запрашиваемые и изменяемые, лежат в SQL, а горячие отправляются в Tarantool. То есть Tarantool — это база для горячих данных. В итоге для большинства задач двух инстансов (мастера и реплики) более чем достаточно. Хотя можно обойтись и одним, потому что паттерн доступа к нему и RPS такой же, как у обычного кэша, несмотря на то что это база данных. Для кого-то это проблема психологического свойства: как можно отказаться от базы как от авторитетного источника хранения данных с её уютным durable с транзакциями и уйти в кэш? На самом деле, начав использовать memcached или любой другой кэш, вы уже отказались от преимуществ базы данных. Вспомните про inconsistency и потерю апдейтов. И с этой точки зрения Tarantool не только ускоряет работу и позволяет экономить деньги, он возвращает вас обратно в мир баз данных с транзакциями, запросами, индексами и прочим. Пара слов про параллельную работу транзакций. Когда в Tarantool используется Lua, он это рассматривает как одну транзакцию: все чтения делает из памяти, а все записи передаёт во временный буфер и в самом конце одним куском пишет на диск. И пока данные пишутся, другая транзакция уже может читать из памяти старые, незакомиченные данные без всяких блокировок! Очередь из транзакций может возникнуть лишь в том случае, если будет превышена пропускная способность последовательной записи на диск. Этот процесс у нас пока не автоматизирован. Анализируем логи и определяем, что данные с таким-то паттерном можно считать горячими. Например, профили пользователей — горячие, значит, мы их перекладываем в Tarantool. Понятно, что попутно зацепим и холодные, потому что часть юзеров, например, на Почту уже не ходит. Но, несмотря на перерасход, это получается эффективнее, чем при использовании MySQL. Хотя бы потому, что у Tarantool очень сильно оптимизирован memory footprint. Очень интересный факт: БД SQL всё хранит на диске, но 10–20% должно кэшироваться в памяти. Но при этом у традиционных SQL БД footprint в три-пять раз хуже чем у Tarantool, поэтому эти 20% превращаются в 100%. Получается, что при аналогичной нагрузке SQL-сервер не выигрывает даже по памяти, хотя и нагрузку эту он не держит. С нашей точки зрения, есть два ключевых отличия между Tarantool и Redis.
И это лишь один случай. Tarantool нашёл применение во многих наших проектах. Например, в Почте и Облаке трудится 120 инстансов Tarantool. Если бы при имеющемся уровне нагрузок там использовался MySQL, то пришлось бы ставить десятки тысяч серверов или других SQL — PostgreSQL, Oracle, чего угодно. Даже трудно оценить, в какие миллионы долларов это бы вылилось. Мораль сей басни такова — для каждой задачи нужно подбирать правильный инструмент, это позволяет экономить огромные деньги на простейшей фиче. Холодные данные надо хранить в предназначенной для этого базе данных SQL, а горячие данные, которые часто запрашиваются и часто обновляются, нужно хранить в хранилище, адаптированном для этого, коим является Tarantool. В версии 1.7, которая сейчас находится в разработке, мы хотим сделать полностью автоматическое кластерное решение с шардингом и с репликацией типа RAFT. Следите за обновлениями! habr.com 10 простых методов экономии тысяч рублейВ современном капиталистическом мире погоня за деньгами вышла на первый план, каждый хотел бы иметь больше денег. Однако, иногда люди не обращают внимание на то, как можно быстро помочь себе в этом деле. Из-за короткой истории капитализма в нашей стране, сограждане еще не научились хорошо управлять своими деньгами – мы не ценим того, как много можно сэкономить на, казалось бы, тривиальных вещах. Благодаря простым, но эффективным техникам экономии можно выиграть очень много. Источник фото: Hernan / CC BY-SAВот некоторые советы американских финансовых консультантов. 10 лучших способов экономии денегКонсолидация расходовПостарайтесь покупать в больших количествах и по более низким ценам. Это значительно дешевле покупки в небольших количествах по высокой цене. Продукты следует покупать, когда они предлагаются по лучшей цене для большого количества, это почти всегда окупается. В долгосрочной перспективе вы выйдете в плюс. Самостоятельно готовьте еду. Купленная еда всегда будет дороже. Однако, такая стратегия требует неукоснительной проверки сроков годности продуктов – в противном случае покупки пойдут в корзину и вы больше потеряете, чем приобретете. Следите за акциямиЭто касается, в основном, больших расходов. Необходимо проверить, является ли акция на самом деле акцией, а не только маркетинговой стратегией магазина, которая направлена на то, чтобы заставить Вас что-то купить что-то не задумываясь. Постарайтесь оценить реальную стоимость продукта (сравнивая цены в нескольких местах). Это позволит определить, на сколько выгодно данное предложение. Покупайте использованные вещиОчевидным является то, что каждый предпочитает новые продукты, но можно много сэкономить, покупая вещи, которыми пользовались. Например, автомобиль теряет треть своей стоимости в течение первых 24 месяцев эксплуатации. А что плохого в распоряжении автомобилем, которые имеют только 24 месяца «от роду»? Продукты, которые наиболее выгодно покупать использованными это: автомобили, одежда, электроника, садовый инвентарь, инструменты и т.д. Избегайте долговСегодня трудно избежать кредитов, лучшим примером являются ипотечные кредиты. Однако, для людей, серьезно думающих о приумножении своих капиталов непременным правилом должно быть погашение любых задолженностей месяц в месяц. Составьте свой личный бюджетОснова экономии заключается в том, чтобы знать, как много денег влияет на ваш счет. Ведение семейного бюджета может оказаться самым простым способом, чтобы сэкономить деньги. Благодаря этому вы поймете как распределяются ваши расходы и доходы, а также выберете области, в которых вы можете экономить. Это кажется очень простым, но, как показывают исследования, очень немногие люди точно подсчитывает свои доходы и расходы. Управляйте мелкими расходамиПроверьте, на что вы тратите деньги и ищите способы экономии. Например, вы в состоянии обойтись без чашки купленного кофе в перерывах на обед? Возможно, лучшей идеей является, например, кофе, принесенное из дома в термосе? Если вам удастся управлять незначительными расходами на постоянном уровне, вы вдруг поймете, что вы действительно в состоянии сэкономить больше денег. Откладывайте деньгиКак и во многих сферах жизни, самым трудным будет первый шаг. Попробуйте таким образом, каждую неделю или месяц откладывать даже небольшую сумму на сберегательный счет. Лучший способ – это открыть несколько таких счетов. Если у вас уже есть несколько счетов, подключите их к онлайн-банку и это будет лучшим стимулом для дальнейшего сохранения. Делайте покупки с головойПроверить цены на базарах или в магазинах. Проверка цены у различных продавцов позволит вам экономить деньги. Продукт непосредственно от производителя в большинстве случаев не только дешевле, но и гарантия лучшего качества приобретенного продукта. Питайтесь домаКаждая чашка кофе купленная в городе стоит в двадцать раз больше, чем та, которую вы сами приготовили себе дома. То же самое и в случае ресторанов и баров. Так почему бы не подождать, пока вы доберетесь до дома и приготовите что-нибудь самому себе? Ставка на здоровую пищуЕсли у вас есть свой участок, попробуйте создать свой собственный сад. Вы можете много сэкономить на овощах, а также на зимних заготовках. Покупайте продукты оптом, а не в пакетах, тогда они дешевле и здоровее. Используйте меньшеМы живем в мире, где господствуют потребление, мы производим много отходов. Подумайте над тем, как использовать, например, меньше шампуня для волос. И речь идет не о том, чтобы не тщательно мыть волосы, а о том, чтобы меньше его тратить. Это только один из примеров. То же самое с использование освещения в пустых помещениях, выключения компьютера или телевизора, когда он не используется. Такие казалось бы мелочи тоже позволят сэкономить деньги. vseznam.ru Как экономить играючи / Как заработать миллион рублей / Blogs.Bmsk.ruОбычно слово «экономия» ассоциируется с подсчетом каждой копейки, с невозможностью купить то, что хочется, с необходимостью постоянно отказывать себе в своих желаниях из-за дороговизны и так далее. Но так ли это на самом деле? А если превратить экономию в увлекательную игру? В условиях нестабильной экономики, среди постоянно растущих цен приходится постоянно лавировать: хочется увеличить доходы, но, самое простое обычно – это уменьшить расходы. Мысль о необходимости экономить сразу подрывает самооценку и червячком точит мозг – ты несостоятелен, вынужден отказывать себе в удовольствиях, ты лузер.Надо использовать другой подход! Если ты не имеешь того, что хочешь, довольствуйся тем, что имеешь. Да, и такое мнение имеет право на существование. Более того, умные люди целые философии придумывают о смысле жизни, чтобы обосновать какие-то свои взгляды )). Попробуем и мы поиграть в экономную жизнь. План действия Сначала определимся с тем, что должно оставаться на уровне и что урезать ни в коем случае нельзя. Приводим в порядок свои обязательные расходы 1. Сбалансированное питание. Ясно, что икра – исключительно полезный продукт, но основу полноценного питания составляют совсем другие продукты. Не такие дорогие и изысканные, но не менее полезные. 2. Обучение. Для того, чтобы повышать доходы, необходимо вкладывать деньги в свое развитие. Говоря по-модному, инвестировать в себя. Чем лучше образование, тем шире кругозор. Открывается больше возможностей для дополнительного заработка или вообще смены деятельности. 3. Полноценный отдых. Важно качество отдыха, потому что если довести себя до состояния загнанной лошади, уже никаких игр не захочется. Можно пересмотреть варианты отдыха, выбрать более бюджетный вариант. Оплату за жилье выношу за скобки. Эта статья расходов есть у всех, и каждый ее по умолчанию пытается сократить. Тот, кто снимает, ищет дешевле. У кого жилье свое – особых возможностей для уменьшения квартплаты обычно не имеет. Разбираемся с психологическими моментами экономии Первый и единственно необходимый этап на пути к умению экономить, который нужно преодолеть – это выработка независимости от чужого мнения. Твердо решите, что вы играете в экономию, для вас это новое интересное занятие, своего рода эксперимент, и наплевать, что думают по этому поводу окружающие. Смейтесь в ответ на высказывания типа: ты что, считаешь каждую копейку? Ты не можешь себе этого позволить? Тебе не доставляет удовольствия купить 150-ю кофточку, которую ты закинешь в шкаф и ни разу не наденешь? У тебя нет всей палитры шейных платков и 10-ти пар перчаток? И так далее, и тому подобное. Ведь это действительно смешно. Такие высказывания могут подорвать самооценку на начальном этапе, если вы еще восприимчивы. Особенно воспитанные будут добавлять – фу, экономить так унизительно, мы вот отлично питаемся, каждый сезон обновляем гардероб и пользуемся только дорогим парфюмом! То, что эти люди ездят исключительно на общественном транспорте, потому что не могут скопить на приобретение машины, не могут себе позволить каждый год вывозить детей на море по той же причине – отсутствию денег, останется за кадром. Так вот, начиная экономить, вы должны научиться абстрагироваться от мнения подобных доброжелателей. Итак, необходимые расходы мы очертили, психологическую подготовку прошли, теперь перейдем, собственно, к экономии. Как экономить деньги? Сам процесс экономии денег можно поделить на два больших раздела – прямая экономия денег и косвенная.Прямая экономия Сюда относится отказ от покупки ненужных вещей. Все, без чего можно обойтись, не приобретаем. Это очень просто и действенноКосвенная экономия Сюда относится экономия всего того, за что в результате придется заплатить. Например, коммунальные услуги: замена всех ламп накаливания энергосберегающими, привычка закручивать краны, установка счетчиков учета и так далее. Все это дает в результате существенную экономию денег. Еще один психологический момент — эмоциональные покупки Довольно много людей, которые по непонятным причинам тратят огромные деньги на понты. Например, если у вас нет своего жилья, или вы не можете позволить себе самый бюджетный отдых на море в частном секторе, зачем вы покупаете айфон? Про таких людей говорят: без штанов, но в шляпе )). Разберитесь хорошенько в себе – для чего вам такая распальцовка? Почему для вас так важно мнение посторонних людей? Важно, что кто-то подумает, ого, какой у него айфон. Не тешьте себя напрасно. Пускать пыль в глаза нужно уметь. А если вы ездите в метро, то, сколько ни тряси айфоном, никто не поверит, что вы состоятельны. Экстремальный способ научиться экономить для новичков Самый лучший способ быстро научиться экономить достаточно экстремален и не всем подходит. Но он дает самый быстрый результат и в разы повышает мотивацию. Не волнуйтесь, необратимых последствий не имеет, все сошедшие с дистанции смогут без проблем вернуться в свое обычное состояние. Прикиньте навскидку, сколько денег вам нужно, чтобы продержаться, допустим, две недели с минимальными расходами. Посмотрите свои закрома – есть ли у вас мясо, овощи и крупы. Загляните в свои «мыльно-рыльные» принадлежности: хватит ли вам зубной пасты, стирального порошка, туалетной бумаги, дезодорантов и прочих необходимых предметов личной гигиены. Подумайте, какие у вас есть ежемесячные платежи. В общем, оцените свои расходы по самому-самому минимуму. Все это сделайте накануне получения зарплаты или другого вашего дохода. На следующий день, получив свой доход, вы оставляете себе ту сумму, которой по вашим прикидкам хватит на самое необходимое. На остальные деньги вы приобретаете доллары или евро, что вам больше нравится, и откладываете в сторону. Это ваш неприкосновенный запас. Вы ни при каких обстоятельствах не должны их менять обратно. Это закон экстремального способа, и его надо выполнить. Будет трудно. Особо слабохарактерным рекомендуется положить валюту на депозит, откуда нельзя будет снять раньше, чем через месяц. К чему надо быть готовым Будьте готовы к тому, что как только вы отложите свой неприкосновенный запас, вам тут же понадобятся деньги. Это нормально, и всегда так бывает. Закон подлости никто не отменял. Будьте спокойны. Через две недели у вас будет следующий приход (аванс, или зарплата партнера, или какие еще поступления у вас бывают, вам лучше знать), тогда вы и сможете осуществить появившиеся нежданно платежи. Не вздумайте влезать в долги или тем паче брать кредит – это второй закон экстремального способа экономии. Думаю, понятно, что речь не идет о форс-мажорных ситуациях. Если вы выдержите экстремальный этап, вы поймете, что экономить совсем не сложно. У вас появятся существенные сбережения без повышения ваших доходов, это вам доставит удовольствие, вы захотите продолжать такую забавную игру – экономию, которая щедра на бонусы. Второй этап экономии – удивительный Когда вы научитесь экономить деньги, будете делать это спокойно, не воспринимая как унижение, которого, конечно, нет – это ваш самостоятельный выбор, тогда вы сможете перейти к еще более захватывающему процессу экономии. Этот этап очень интересный и очень простой. Но он изменит вашу жизнь, и не только приумножит ваши сбережения, но еще научит получать доход. Находясь на втором этапе экономии, вы уже будете избавлены от необходимости экономии денег, они будут экономиться сами. Вам не надо будет контролировать расходы так четко, как на первом этапе. Вы даже сможете себе позволить покупать какие-то ненужные вещи – это уже не ударит по вашему кошельку так, как тогда, когда экономить вы еще не умели. Что же это за удивительный этап – я расскажу в следующей статье. blogs.bmsk.ru как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Блог компании Конференции Олега Бунина (Онтико) / ХабрАникин Денис ( danikin, Mail.Ru)Сегодня я расскажу, как сэкономить на базах данных огромные деньги, например, миллион долларов, как это сделали мы. Для начала вопрос: почему чаще используют именно базы данных, а не файлики? Базы данных – это хранилище, более структурированное, чем файл, и обладающее рядом некоторых фич, которых у файла нет. Там можно делать запросы, там есть транзакции, индексирование, таблицы, устойчивые, более-менее надежные хранилища. На самом деле, базы данных – это более удобно, чем файлы. Представьте, у вас есть приложение, оно работает с базой данных, оно нагружает эту базу данных пока только на чтение, т.е. там не очень большое количество записей, но большое количество селектов.В конечном итоге, у вас база данных перегружается и не может справляться с нагрузкой. Что обычно в таких случаях делают? Еще один сервер. Это репликация. Т.е., по сути, вы доставляете реплики ровно в таком количестве, чтобы они держали вашу нагрузку. Вы всю нагрузку на чтение уводите на реплики. Соответственно, нагрузку на запись вы оставляете на мастере. Эта схема может, в принципе, масштабировать нагрузку на чтение практически до бесконечности. Дальше у нас происходит нагрузка на запись. И нагрузка на запись, опять же, достигает какого-то предела, когда база данных уже не может ее держать. Поможет в данном случае репликация? Нет. Какая бы не была репликация – мастер-слейв или мастер-мастер – она не поможет нагрузке на записи, потому что каждая запись должна пройти на все сервера. Даже если там мастер-мастер, значит, сколько у вас идет суммарно запросов на весь ваш кластер, ровно столько же пойдет на каждый из серверов, т.е. вы этим ничего не выиграете. Какие есть еще идеи? Шардинг. На самом деле, шардингом можно решить проблему нагрузки на запись и масштабировать почти до бесконечности. Есть много разных способов шардинга – можно резать по базам данных, можно резать по таблицам, можно резать внутри одной таблицы. Способов – миллион. Каждый использует тот способ, который ему удобней. По сути, у вас получается такой двухмерный кластер из баз данных, т.е. у вас много-много шардов и у каждого несколько реплик. Вы доставляете шарды, реплики, и варьируете совершенно любую нагрузку. Но дальше у вас происходит проблема. Ваша следующая проблема – это ваш босс. Что ему в этом может не нравиться? Вроде как, все работает, все шардируется, реплицируется, но что ему не нравится? Деньги. Ему все нравится, кроме того, что это стоит очень дорого, потому что вы доставляете, доставляете, доставляете сервера, и он за это платит. Вы ему говорите: «Чувак, ты не понимаешь, у меня тут технология, у меня тут шардинг, репликация… Оно масштабируется бесконечно – это очень крутая система». Он вам говорит: «Да-да, но мы теряем деньги, если так пойдет дальше, у нас просто не будет денег, чтобы покупать сервера баз данных. Нам придется закрыться». Что же делать? На самом деле, нагрузка на базу данных часто бывает устроена так, что какие-то элементы данных на чтение нагружаются очень-очень сильно – они называются «горячие данные». Кэширование – это то, что частично решает нашу проблему. Вы можете убрать часть реплик и таким образом чуть-чуть удовлетворить вашего босса. Кстати говоря, вы получаете и лучший лейтенси, т.е. запросы отрабатывают быстрее, потому что кэш работает быстрее, чем базы данных. Но… какая есть проблема? Проблема несогласованности – одна из самых больших проблем, которая есть с кэшем. Это самая первая проблема, которая тут же видна. Смотрите, у вас приложение отдельно пишет в кэш, например, в Memcached и отдельно пишет в базу. Т.е. кэш не является репликой базы, кэш является отдельной сущностью. Тут нарисованы стрелочки между кэшем и базой, которые на самом деле виртуальны, т.е. никакой репликации между ними нет. Все делается на уровне приложения. Соответственно, это приводит к несогласованности данных. И, кстати, у вас все еще остается шардинг, потому что кэш записи не оптимизирует, потому что в кэше нельзя ничего хранить, через него все пролетает насквозь в базу данных. Ну, не насквозь, а сбоку от него, но пролетает. Тут картинка, чтоб показать вам, что вы можете писать сначала в базу, потом в кэш, или сначала в кэш, потом в базу. В обоих случаях у вас будет несогласованность. Смотрите: вы пишете данные в кэш, после этого ваше приложение благополучно падает и в базу их записать не успевает. Приложение поднимается и работает с теми данными, которые уже в кэше, а в базе данных их нет, но никто про это не знает. Когда кэш перезагружается (а он когда-нибудь перезагружается), вы получаете из базы данных при пустом кэше устаревшие данные. Как ни странно, если писать в обратном порядке – сначала в базу, потом в кэш, будет ровно такая же проблема: записали в базу, приложение упало, в кэше старые данные, все работает со старыми данными, кэш перезагрузился, потянул из базы новые данные, как бы другую ветку данных, которые не целостные, которые не соответствуют тем изменениям, которые были сделаны поверх другой копии… Т.е. с кэшем есть как минимум две проблемы: нет целостности данных, и вам все еще нужен шардинг. Какие есть еще проблемы с кэшем? Какие вы кэшем внесли проблемы в тот момент, когда ваш босс начал сердиться? Проблема такая: кэш – это не база данных. У вас до кэша была база данных, там были запросы, транзакции, и все эти штуки из кэша почти все пропадают, у вас приложение работает уже с кэшем. Индексы и таблицы остаются, не во всех кэшах есть вторичные индексы, не во всех кэшах есть таблицы, но как-то криво-косо поверх key-value и то и другое можно поддержать, поэтому мы считаем, что эти свойства соблюдены, а остального всего нет. Теперь по поводу проблемы нецелостности данных. Что с ней сделать? Как сделать так, чтобы данные обновлялись и в кэше и в базе целостно? Умный кэш. Что такое умный кэш? На самом деле, многие из вас, скорее всего, это делают – это, по сути, кэш, который сам общается с базой данных. Т.е. это не отдельный демон Memcached, а какой-то ваш самописный демон, который внутри себя все кэширует и сам пишет в базу. Приложение в базу не пишет, оно работает полностью через кэш. Это решает проблему нецелостности, потому что кэш сначала пишет в базу, а потом пишет в себя. Если он в базу не записал, отдал ошибку – все хорошо. Это конечно не хорошо, но данные целостные. После того, как кэш записал в базу, он в себя запишет данные обязательно, потому что он пишет в память, такого, чтобы данные не записались в память практически никогда не бывает. Вернее, бывает, когда на сервере бьется память и в этот момент все падает, и все равно вы теряете весь кэш, по крайней мере, целостность данных не теряется. Но есть один кейс, когда даже при таком умном кэше данные можно потерять. Приложение пишет в кэш, кэш пишет в базу, база внутри себя применяет эту запись, дальше она отдает ответ кэшу, и в этот момент рвется сеть. Кэш считает, что запись в базу не прошла, в себя данные не пишет, отдает пользователю ошибку. После этого кэш начинает работать с теми данными, которые есть в нем, а после его перезагрузки он подцепляет из базы данных опять устаревшие данные. Это редкий кейс, но такое тоже бывает. Т.е. умный кэш не решает до конца проблему нецелостности данных. И вам все еще нужен шардинг. Шардинг – это когда у вас есть база данных, которая на одном сервере, и вы ее просто режете. Вы ее режете на кусочки и эти кусочки укладываете по разным серверам, физическим серверам. Это уменьшает нагрузку на запись, потому что нагрузка на запись идет на конкретный кусочек. Т.е. у вас, по сути, все CPU, например, всех серверов участвуют в обработке этой нагрузки, а не CPU только одного сервера. Шардинг у вас все равно остается, а вы помните, что ваш босс не любит шардинг, потому что это очень дорого, потому что много-много серверов и у каждого еще реплики. Итак, нецелостность данных, к сожалению, остается с кэшем, шардинг все еще нужен, свойств баз данных нет. Какая еще очень неприятная проблема с кэшем есть? Холодный старт. Это супер неприятная проблема, когда кэш поднимается с нуля, чистый, голый, без данных… Он бесполезен, также как машина, полностью заваленная снегом – в нее вначале нужно залезть, а еще ее нужно завести. Холодный старт полностью убивает кэш, все запросы напрямую летят в базу данных. Приходится делать действие, которое, опять же, ваш босс не одобряет, но что поделаешь? Приходится доставлять реплики только для того, чтобы прогреть кэш. На самом деле, этот слой реплик – для каждого вашего шарда вы доставляете по реплике – только для того, чтобы прогреть кэш. Вы не можете эти сервера отключить или выкинуть, когда кэш прогрет, потому что вдруг сервер с кэшем перезагрузится ночью? Все равно все должно работать ночью, эти сервера должны тут же пойти в нагрузку и обеспечивать прогрев кэша. Кэш прогрелся, и они уже не нужны, но опять их никуда не деть. Четыре проблемы с кэшем: Вопрос: как прогреть кэш? Кэш всегда должен быть прогрет, чтобы он имел смысл. Через базу данных его прогревать как-то не аккуратненько, потому что много-много реплик, и они все его греют-греют – слишком дорого они его греют. Персистенс – правильное слово. Кэш лучше просто не охлаждать, его нужно персистить, потому что кэш – хорошее и быстрое решение, за исключением нескольких проблем, включая проблему холодного старта, включая то, что он иногда недогрет, так пусть он будет всегда согрет. Как, например, в Сибири некоторые люди не глушат машины, чтобы они были всегда заведенные, потому что иначе ты ее потом не заведешь – примерно из той же оперы. Какой самый простой способ персистента для кэша? Это просто dump данных. Т.е., на самом деле, мы каждый раз, может быть, в минуту, или, например, раз в 5 минут дампим весь кэш полностью на диск, прямо целиком. Как вам это решение? Отстой, потому что теряется консистентность. Вы раз в 5 минут дампите, у вас как бы сервер поднимается, и он теряет свое изменение за 5 минут. Через базу данных их прогревать нельзя, и даже непонятно, откуда эти изменения взять. И это не единственная проблема. Вторая проблема – это то, что по IOPS’ам будет плохо, т.е. постоянно будете нагружать диск. Дампами, дампами и еще раз дампами, постоянными. Чем вы хотите иметь более целостные данные, тем чаще будете дампить. Какой-то не очень приятный путь. Как лучше персистить кэш? Лог. Нужно просто вести лог. Т.е. зачем нам дампить, давайте вести лог, давайте каждое изменение кэша будет логироваться на диск, каждое. Если вы думаете, что это медленно (всегда есть мнение, что кэш – это что-то такое быстрое, а когда там появляется диск, то это становится как-то медленно), так вот, на самом деле, это не медленно, потому что даже самый обычный крутящийся магнитный диск, не SSD, пишет со скоростью 100 Мб/с, последовательно пишет. Если размер транзакции, скажем, 100 байт, то это 1 млн транзакций в секунду. Это неимоверная скорость, которая удовлетворит почти всех присутствующих в этой аудитории, может быть даже меня. Поэтому даже один диск с этой задачей вполне справляется, но есть другая проблема, что этот лог разрастается очень сильно, потому что, например, идет 10 инсертов, потом 10 делитов тех же самых данных, они должны все схлопнуться, а в логе они не схлопываются. Или идет 100 апдейтов одного и того же элемента данных, опять же нужен только последний, а в логе хранятся все. Как эту проблему решить? Сшепшоты делать. Нужно соединить два этих метода – Dump и Log воедино. Т.е. мы раз в неделю дампим, или когда нам этого хочется, а все остальное время только пишем лог. В дамп мы еще запоминаем id последней примененной записи из лога или последней записи из лога, которая в этом снепшоте еще есть. И когда у нас сервер перезагружается, мы поднимаем с диска dump, восстанавливаем его в памяти и сверху накатываем тот кусок лога, который после этой записи. Все, кэш восстановлен и прогрет сразу. Кстати, этот прогрев происходит быстрее, чем из базы данных. Вот такого рода прогрев при перезагрузке потом полностью попадет в диск, потому что это линейное чтение файла – 100 Мб/с. Даже на магнитных дисках это очень быстро. Все, проблема холодного старта решена, но это только одна проблема, к сожалению. Хотя кэш прогрет, есть еще 3 проблемы. Давайте подумаем, как решить первые две – проблемы неконсистентности и шардинга? Идея использовать кэш как базу данных – это очень правильное направление. Действительно, зачем нам в этом месте наша основная база данных? MySQL или Oracle – зачем она нам нужна? Давайте подумаем. Нужна, наверное, для 2-х вещей:
Всегда получается так, что холодные данные большие, а горячие – маленькие. Это закон жизни. По сути, вы реплицируете и шардируете вашу базу данных в большом количестве копий только лишь для того, чтобы обрабатывать этот маленький кусочек горячих данных, потому что к остатку холодных данных нет большого количества запросов, он нормально себя чувствует. Но вы все это реплицируете только ради горячих данных. Зачем мы делаем все это копирование? Мы можем, наверное, копировать только горячие данные? Но и тут та же самая проблема – ведь нагрузка идет именно на горячие данные и поэтому, если вы будете реплицировать и шардировать только их, проблема никуда не исчезнет, вам нужно ровно столько же серверов, чтобы обработать всю эту огромную нагрузку. И ваш босс все еще злой, потому что у вас все еще есть шардинг. На самом деле, мы говорим, что базы данных надежно хранят данные, но наш кэш сейчас тоже надежно хранит данные, потому что у него есть транзакшн лог – файл, в который пишутся все изменения. Это не что иное, как лог транзакции, это то же самое, что есть у любой базы данных, это ровно то, за счет чего обеспечивается надежное хранение в любой базе данных, никакой магии, и у кэша есть то же самое. Репликации нет. Это, конечно, плохо, но давайте подумаем, почему кэш не может быть первичным источником данных? Потому что нет репликации? Хорошо, мы ее сделаем. Почему еще кэш не может быть первичным источником данных? Потому что он не обладает свойствами баз данных? Мы тоже можем это сделать, мы можем все эти свойства баз данных поддержать, и кэш будет ими обладать. Помните картинку «Кэш – это не база данных»? Кэш может быть базой данных. Он может всеми этими свойствами обладать. В кэше нужно держать только горячие данные, куда идет много-много обращений, потому что вы шардируете и реплицируете эти холодные данные вместе со всей базой только для того, чтобы обслужить горячие данные. Но если вы будете только горячие данные шардировать, это проблему не решит, потому что это все равно упирается в количество запросов на горячие данные, т.е кэш может быть базой данных. Собственно, что мы и сделали, и назвали эту базу данных Tarantool. Мы разработали специальную базу данных для горячих данных, которая является кэшем, но при этом у него есть персистенс, транзакции (такие же, как у взрослых баз данных), репликация, у него даже есть хранимые процедуры. Т.е. все основные свойства базы данных у Tarantool’а есть. И поэтому мы его используем как первичный источник для горячих данных. Мы эти данные не дублируем нигде. У нас Tarantool, у него есть реплика, эти данные бэкапятся, как и для любой базы данных, но они не дублируются нигде, ни в каких других базах данных. Это такой всегда горячий кэш с персистентом и со свойствами баз данных, т.е. он все эти проблемы решает. По сути, нам не нужны сейчас все эти сотни серверов с шардингом и с репликами, у нас просто наша задача разделилась, Мы просто используем правильный инструмент для правильной задачи, т.е. холодные данные хранятся в хранилище. Например, в SQL хранилищах, которые были созданы десятки лет назад именно для холодных данных, потому что тогда не было такого количества запросов в секунду на данные, никто про это не думал. А горячие данные хранятся в том хранилище, которые специально задизайнено для горячих данных в Tarantool. Тут, в принципе, на слайде все написано – наш путь, через который мы прошли, но факт в том, что для большинства задач были достаточны 2 инстанса всего Tarantool – один мастер, второй – реплика, потому что нагрузка, которая идет на одну из баз данных, на один инстанс, она, скорее всего, обеспечит всю вашу полосу нагрузки, которая шла раньше на весь ваш кластер SQL серверов. И еще тут один психологический момент – не очень хочется уходить из уютного мира баз данных в неуютный новый мир кэшей. В базе данных транзакции и т.д. Тогда, когда ваш босс злой, вы доставили кэш и как-то сразу стало неуютно. И как раз Tarantool возвращает этот уют, т.е. он, мало того, что решает проблемы неконсистанси и холодного старта. Он, как бы, возвращает вас в мир баз данных для горячих данных. Теперь кейс в почте Mail.ru. Кейс был такой: нам нужно было хранить профили пользователей. Профили пользователей – это такие маленькие кусочки информации – от 500 байт до 1 Кб на пользователя. Мы изначально стали для этого дела использовать MySQL. И стали дублировать всю нагрузку на профили, которые у нас до этого лежали в старом хранилище, на чтение и на запись на ферму из MySQL. Мы поставили ферму из 16-ти MySQL, все пошардили заранее и туда пустили нагрузку. И оказалось, что на 1/8 от всей нашей нагрузки эти 16 серверов уперлись в полки. В основном, они уперлись в полку по процессору. Мы пытались их тюнить так и сяк, но по факту, все, что мы достигли – это 16 серверов на 1/8 нагрузки, т.е. на весь кластер, на всю нагрузку потребовалось бы 128 MySQL серверов. Мы подумали, что это дороговато – это больше 1 млн. долларов. И мы просто поставили несколько серверов с Tarantool и туда пустили всю нагрузку. В тестовых целях, дублировали. И оказалось, что они без проблем ее тянут целиком. Даже одного сервера было достаточно. Поставили просто 4, потому что мастер, реплика + еще пара, на всякий случай. Мы обычно перезакладываемся всегда по нагрузке. Собственно, вот она экономия миллиона долларов – просто мы в 60 раз снизили количество серверов, которое нам нужно. При этом даже пользователю стало лучше, потому что кэши обычно работают с лучшим лэйтенси. У нас суммарно в облаке и почте больше 120 инстансов Tarantool, серверов прямо с Tarantool, которые используются для разных фич, для очень большого количества фич. Если бы мы все это хранили в MySQL или в любом другом SQL, то это были бы сотни миллионов долларов, просто, если экстраполировать имеющиеся цифры. Мораль моего всего выступления: нужно использовать правильный инструмент, для правильной работы, т.е. нужно использовать базы данных для холодных данных и кэши с персистентом, как Tarantool, для горячих данных. И сэкономить на этом 1 млн. долларов. Тут краткое Summary о том, что мы сделали. Мы шардировали, реплицировали, уперлись в деньги, стали кэшировать, потеряли консистенси и еще кое-что… Сделали персистент кэш, это не база данных, но он может быть базой данных, отделили горячие от холодных данных, холодные – в MySQL, горячие – в Tarantool, спасли 1 млн. долларов и, как бонус, получили лучший юзер експириенс, потому что все стало быстрее. Контакты» [email protected] » danikin » Блог компании Mail.ruЭтот доклад — расшифровка одного из лучших выступлений на конференции разработчиков высоконагруженных систем HighLoad++. Сейчас мы активно готовим конференцию 2016 года — в этом году HighLoad++ пройдёт в Сколково, 7 и 8 ноября.В этом году Денис подал заявку под названием "Почему Tarantool такой оптимальный?". Обещается срыв покровов :) Константин Осипов так прокомментировал этот доклад — «он такой быстрый, потому что ни делает НИЧЕГО!» :) Послушаем, поспорим! Весь Программный комитет HighLoad++ продолжает дружно рекомендовать платформу Tarantool. Это одна из замечательных наших (российских) разработок и, как минимум, заслуживает внимания. Также некоторые из этих материалов используются нами в обучающем онлайн-курсе по разработке высоконагруженных систем HighLoad.Guide — это цепочка специально подобранных писем, статей, материалов, видео. Уже сейчас в нашем учебнике более 30 уникальных материалов. Подключайтесь! habr.com
www.urbanplan.ru Домашний заработок на миллион долларов / Как сэкономитьДомашний бизнес уже позволил своим создателям заработать более 30 миллиардов долларов. Конечно, организация такого источника дохода – дело не из лёгких, но нет ничего невозможного. Несколько советов для тех, кто хочет оставить основную работу и мечтает организовать своё дело. Собственный бизнес может приносить вам немалый доход, при этом у вас не будет начальников и для этого вовсе необязательно управлять крупной компанией. Вот пять примеров того, как обычные люди, грамотно использовав имеющиеся возможности и применив свои навыки и умения, смогли организовать свой бизнес, сделавший их миллионерами.1. Создайте продукт, который решит какую-нибудь вашу повседневную проблемуКэтрин Круг страдала от тяжелых болей в спине из-за длительной работы за столом. После неудачных попыток найти приемлемое решение этой проблемы, Кэтрин вместе с дизайнерами разработала пояс, поддерживающий позвоночник. Затем она представила свой проект на краудфандинговой платформе Kickstarter и привлекла около 1,2 миллиона долларов инвестиций. Сегодня Кэтрин из своего дома в Сан-Франциско управляет личной компанией, оцениваемой в миллион долларов. Домохозяйка и мать троих детей Келли Лестер также организовала свой бизнес, столкнувшись с повседневной проблемой. Келли мечтала о быстром и доступном способе упаковки обедов для своих детей. Её вдохновила идея японского варианта упаковки еды – коробочки «бенто» с несколькими ячейками, благодаря которой женщина смогла заработать миллион долларов. Наверняка вы сталкивались с проблемами в повседневной жизни – просто держите глаза и уши открытыми, ведь вдохновение может прийти в любой момент. Именно личные проблемы подтолкнули многих людей открыть своё дело, которое впоследствии стало довольно успешным.2. Определите свою нишу и создайте собственный интернет-магазинЕсть ли у вас понимание того, что может заинтересовать людей в определенной товарной категории? Если да, то вам будет интересно узнать о бизнесе, организованном 30-летним предпринимателем Алленом Уолтоном. Проработав продавцом камер видеонаблюдения в местном магазине, Уолтон смог выявить основные потребности покупателей и решил организовать свою компанию в сфере оборудования безопасности. Выбрав правильную продукцию и вложив всего тысячу долларов, Уолтон организовал собственный интернет-магазин по продаже скрытых камер. Знания конкретного сегмента рынка и потребностей покупателей помогут вам создать собственный онлайн-магазин. Обладая базовыми техническими знаниями, вы можете разработать свой собственный веб-сайт при помощи бесплатной программы Woocommerce, а если для вас это представляет сложности, то можно попросить выполнить такую работу на заказ.3. Улучшайте свои навыки при помощи технологийВы уже смогли применить свои умения в реальной жизни? А если сюда ещё подключить и знания технологий, то можно охватить гораздо большую аудиторию – ведь в реальной жизни мы ограничены временем и физическими возможностями. Персональный фитнес-тренер Дэн Межерицкий смог усовершенствовать свой проект, одновременно использовав свои знания в качестве фитнес-инструктора вместе с бизнес-системой на основе франчайзинга, которая заключается в платной передаче прав ведения бизнеса. Он создал программное обеспечение для пользователей, позволяющее автоматизировать многие функции. Благодаря мобильным телефонам Рейчел Чарлупски смогла превратить свой бизнес по предоставлению услуг приходящих нянь в сеть компаний, где в настоящее время работает более 1500 сотрудников. До того, как организовать свое дело, девушка подрабатывала в качестве самостоятельной няни в гостиницах в городе Финиксе. Алисия Шаффер превратила свой небольшой магазин по продаже головных повязок и прочих аксессуаров ручной работы в городе Ливермор, Калифорния в сайт, привлекающий около миллиона покупателей. Использовав возможности торговой площадки Etsy и создав свой личный онлайн-магазин, Шаффер смогла заработать около миллиона долларов. Итак, если вы обладаете опытом и знаниями в определённой отрасли, то технологии помогут вам охватить ещё большую аудиторию по всему миру.4. Создайте свой онлайн-курсУ вас хорошо получается обучать других людей? Этот навык может послужить отличной базой для организации собственной онлайн-школы. Для размещения и проведения такого обучения в Интернете есть множество функций – если вы обладаете техническими знаниями, то сможете создать сайт под свой онлайн-курс на базе платформы WordPress с использованием различных программ для управления сайтом. Например, Джон Ацци и Элиот Арнц в 2014 году заработали более 1 миллиона долларов благодаря своего обучающему курсу «Разработка приложений для IOS 8» на новом языке программирования Swift. Аналогичным образом Роб Персиваль, бывший учитель математики в средней школе в Кембридже за год заработал почти 1 миллион долларов благодаря разработанным им курсам по программированию. В основе популярного и успешного онлайн-курса лежит чёткая нацеленность на результат – необходимо создать такую учебную программу, благодаря которой аудитория сможет зарабатывать больше и работать более эффективно.5. Опубликуйте свою книгу в электронном форматеПрошли те дни, когда для публикации и продвижения книг приходилось обращаться к издателям. Сегодня у вас есть возможность опубликовать собственную книгу с минимальными затратами и распространить её среди миллионов читателей. Такие компании, как Amazon Kindle, Goodreads и Kobo Writing Life предлагают своим пользователям сервисы для создания, размещения и продаж своих книг. Аманда Хокинг, получившая огромную известность благодаря тому, что самостоятельно опубликовала несколько своих книг на сайте Amazon и заработала на этом более 2 миллионов долларов. Первоначально ее романы были отвергнуты всеми издательствами, в которые она обратилась. Гай Кавасаки, автор 13 бестселлеров, написал практическое руководство, которое служит отличным образцом для вдохновения на самостоятельную публикацию электронной книги. Независимо от методов вашей работы, одной страсти, которую вы питаете к своему делу, будет недостаточно – необходимо долго и упорно работать изо дня в день, постоянно совершенствоваться и прогрессировать. Не следует опускать руки, если вы потерпите неудачу, а такое может случиться, и даже не один раз. Однажды у вас всё получится.kaksekonomit.com
|