Pull to refresh
-5
0
Alexander @rauch

Пользователь

Send message

Эфемерные контейнеры в Kubernetes

Level of difficultyMedium
Reading time12 min
Views6.3K
image

Предисловие


С версии Kubernetes 1.16 была добавлена возможность запуска эфемерных контейнеров (Ephemeral Containers). Эта функция позволяет запускать временные контейнеры в рамках существующих Pod'ов, чтобы помочь в диагностике и отладке проблем, а также для выполнения различных задач в рамках существующего окружения.

Эфемерные контейнеры не заменяют существующие контейнеры в Pod'ах, а запускаются рядом с ними в рамках того же сетевого пространства и с теми же точками монтирования. Это означает, что эфемерные контейнеры могут легко получить доступ к ресурсам Pod'а, таким как файловая система или сетевые интерфейсы.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments2

TCP против UDP или будущее сетевых протоколов

Reading time27 min
Views170K
Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

По идее, если бы, к примеру, однажды один ленивый разработчик не попробовал развернуть свой ML на Python (потому что только его и знал), мир скорее всего никогда не проникся бы такой любовью к презренному «супер-джава-кодерами» языку. А сегодня слабости этого языка в прошлом контексте применения безоговорочно обеспечивают ему первенство в развертывании и запуске многочисленных майнерских А/Б.

Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Kombat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

Десять лет назад все были абсолютно уверены, UDP — это что-то про негарантированную доставку. Если нужен надежный протокол — это TCP. И вопреки традициям в этой статье мы будем сравнивать такие, кажущиеся несравнимыми вещи, как TCP и UDP.


Осторожно, под катом 99 иллюстраций и схем и все важные.
Total votes 162: ↑159 and ↓3+156
Comments75

Легион одиноких мужчин

Reading time21 min
Views157K

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


image

В четверг, 13 июля 1995 года высокое давление в верхних слоях атмосферы над Чикаго опустило огромное количество горячего воздуха на землю, из-за чего температура подымалась до отметки 41°C. В городе Среднего Запада, не готовом к тропической жаре, деформировались дороги, на улицах ломались машины и закрывались школы. В пятницу три трансформатора энергетической компании Consolidated Edison вышли из строя, оставив 49000 людей без электричества. В апартаментах небоскрёбов без кондиционирования воздуха температура поднималась до 49°C даже с открытыми окнами. Жара не ушла и в субботу. Тело человека способно справляться с такой жарой лишь в течении 48 часов подряд, после чего оно начинает отключать защитные механизмы. Отделения скорой помощи в больницах были так переполнены, что не принимали жертв солнечного удара. Воскресенье было не лучше, в результате чего выросло количество смертей – от обезвоживания, жары и почечной недостаточности. Морги переполнились, тела хранились в грузовиках для перевозки мяса. В целом 739 человек погибло в этот период сильной жары.
Читать дальше →
Total votes 50: ↑43 and ↓7+36
Comments527

NewSQL = NoSQL+ACID

Reading time15 min
Views33K

До недавнего времени в Одноклассниках около 50 ТБ данных, обрабатываемых в реальном времени, хранилось в SQL Server. Для такого объема обеспечить быстрый и надежный, да еще и устойчивый к отказу ЦОД доступ, используя SQL СУБД, практически невозможно. Обычно в таких случаях используют одно из NoSQL-хранилищ, но не всё можно перенести в NoSQL: некоторые сущности требуют гарантий ACID-транзакций.

Это подвело нас к использованию NewSQL-хранилища, то есть СУБД, предоставляющей отказоустойчивость, масштабируемость и быстродействие NoSQL-систем, но при этом сохраняющей привычные для классических систем ACID-гарантии. Работающих промышленных систем этого нового класса немного, поэтому мы реализовали такую систему сами и запустили ее в промышленную эксплуатацию.

Как это работает и что получилось — читай под катом.
Читать дальше →
Total votes 61: ↑60 and ↓1+59
Comments60

Пишем свой протокол поверх UDP

Reading time24 min
Views41K
Первые прямые трансляции с места событий появились в России почти 70 лет назад и вели их из передвижной телевизионной станции (ПТС), которая внешне походила на «троллейбус» и позволяла вести эфиры не из студии. А всего лишь три года назад Periscope позволил вместо «троллейбуса» использовать мобильный телефон.

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


Еще через полгода, летом 2016, Одноклассники запустили свое мобильное приложение OK Live для стриминга, в котором постарались решить эти проблемы.

Александр Тоболь отвечает за техническую часть видео в Одноклассниках и на Highload++ 2017 рассказал про то, как писать свой UDP протокол, и зачем это может потребоваться.

Из расшифровки его доклада вы узнаете все про другие протоколы стриминга видео, какие есть нюансы, и про то, какие уловки иногда требуются.


Говорят, что надо всегда начинать с архитектуры и ТЗ — якобы без этого нельзя! Так и сделаем.
Total votes 55: ↑53 and ↓2+51
Comments44

Разбор основных концепций параллелизма

Reading time17 min
Views64K
Всем кофе!

Завтра у нас плавненько стартует практически юбилейный поток курс «Разработчик Java» — уже шестой по счёту начиная с апреля прошлого года. А это значит, что мы снова подобрали, перевели интереснейший материал, которым делимся с вами.

Поехали!

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

РАЗДЕЛ 1

Вступление

С момента своего создания Java поддерживает ключевые концепции параллелизма, такие как потоки и блокировки. Эта памятка поможет Java-разработчикам, работающим с многопоточными программами, понять основные концепции параллелизма и способы их применения.

РАЗДЕЛ 2

Концепции

Концепция Описание
Atomicity (атомарность) Атомарная операция — это операция, которая выполняется полностью или не выполняется совсем, частичное выполнение невозможно.
Visibility (видимость) Условия, при которых один поток видит изменения, сделанные другим потоком

Таблица 1: Концепции параллелизма

Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments12

Внутренние механизмы ТСР, влияющие на скорость загрузки: часть 2

Reading time14 min
Views34K


В первой части мы разобрали «тройное рукопожатие» TCP и некоторые технологии — TCP Fast Open, контроль потока и перегрузкой и масштабирование окна. Во второй части узнаем, что такое TCP Slow Start, как оптимизировать скорость передачи данных и увеличить начальное окно, а также соберем все рекомендации по оптимизации TCP/IP стека воедино.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments6

Архитектура растущего проекта на примере ВКонтакте

Reading time14 min
Views41K


Алексей Акулович объясняет жизненный путь высоконагруженного проекта на PHP. Это — расшифровка Highload ++ 2016.

Меня зовут Лёша, я пишу на PHP.

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

Начнём.
Total votes 65: ↑61 and ↓4+57
Comments46

Парсинг JSON — это минное поле

Reading time25 min
Views155K
image

JSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.

Читать дальше →
Total votes 170: ↑164 and ↓6+158
Comments60

Принципы и приёмы обработки очередей

Reading time16 min
Views38K


Принципы и приёмы обработки очередей


Константин Осипов (Mail.ru)


Как вы считаете, какова стоимость очередей с приоритетами? То есть если кто-то лезет вне очереди, то как посчитать стоимость для всей системы в этой ситуации, чему она пропорциональна? Времени обслуживания клиента — например, 5 минут стоит его обслужить? Она пропорциональна количеству ожидающих, потому что время ожидания для каждого из них увеличится.


Для начала о себе — я занимаюсь разработкой СУБД Tarantool в Mail.ru. Этот доклад будет об обработке очередей. У нас много очередей внутри системы, фактически вся база данных построена как система массового обслуживания.


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




Total votes 48: ↑45 and ↓3+42
Comments2

Курс молодого бойца для Spark/Scala

Reading time3 min
Views27K
Хабр, привет!

Команда Retail Rocket использует узкоспециализированный стек технологий Hadoop + Spark для вычислительного кластера, о котором мы уже писали обзорный материал в самом первом посте нашего инженерного блога на Хабре.

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


Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments8

Spring Boot: от начала до продакшена

Reading time15 min
Views365K

В данной статье я попробую расписать все шаги, которые потребуются для создания небольшого проекта на Spring Boot и развертывания его на боевом сервере.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments38

Выжимаем максимум интернета из деревенских сот

Reading time6 min
Views40K
На кануне новогодних праздников понадобилось пораньше покинуть столицу, покинуть ее в направлении таких мест, в которых интернет бывает довольно редко. На период отсутствия на работе я обещал напарникам быть на связи. А так как мой род деятельности напрямую связан с web, то я решил поэкспериментировать с доступностью интернетов в планируемом месте пребывания.

Суть задачи сводился к следующему:

  1. Достичь комфортной скорости интернета.
  2. Раздавать интернет не только для себя, но и для супруги.

У нас было 2 модема, 750 мегабайт проплаченого интернета, 3 ноутбука, несколько телефонов и целое множество симок всех сортов и расцветок, точка доступа с OpenWRT, usb hub, флэшка и антенна. Не то чтобы это был необходимый запас для поездки, но если начал собирать железки, становится трудно остановиться. Единственное, что вызывало у меня опасение — это антенна. Ничто в мире не бывает более беспомощным, безответственным и слабым, чем сигнал от антенны, прошедший через 3-х метровый usb кабель. Я знал, что рано или поздно мы перейдем и на эту дрянь.
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments11

Как работает реляционная БД

Reading time51 min
Views534K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Total votes 232: ↑229 and ↓3+226
Comments134

Как вести переговоры о повышении: Cоветы ИТ-специалисту

Reading time15 min
Views51K


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

Ритм вашего сердца учащается, когда вы проверяете свой банковский счет в день начисления зарплаты: вы вполне уверены, что обнаружите стандартную сумму, которую вам обычно выплачивают… но в конце этого числа оказывается еще один ноль! Постойте-ка, что!?! Сработало, теперь вы богаты! Или скоро станете таковым, если эта схема добычи легких денег будет действовать и дальше. Как же долго это поле ввода находилось на сайте?

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

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


Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments36

Забудьте САР теорему как более не актуальную

Reading time12 min
Views65K
или «Прекратите характеризовать хранилища данных как CP или AP»

capДжеф Ходжес в своем прекрасном посте «Заметки о распределенных системах для новичков» рекомендует использовать САР теорему для критики найденных решений. Многие, похоже, восприняли этот совет слишком близко к сердцу, описывая свои системы как «СР» (согласованность данных, но без постоянной доступности при сетевой распределенности), «АР» (доступность без согласованного состояния при сетевой распределенности), или иногда «СА» (означает «Я всё ещё не читал статью Коды (Coda Hale) почти 5-летней давности»).

Я согласен со всеми пунктами статьи кроме того, что касается САР теоремы. Она слишком всё упрощает и слишком многие понимают её неверно для того, чтобы использовать для определения характеристик системы. Так что я прошу перестать ссылаться на САР теорему, говорить о ней и дать ей уже спокойно уйти на покой. Вместо неё мы должны использовать более точную терминологию для обсуждения различных компромиссов.

(Да, я понимаю всю иронию написания целой статьи по теме того, о чём призываю не писать других вообще. Но, как минимум, у меня будет ссылка, которую я смогу давать интересующимся, когда меня будут спрашивать, почему я не одобряю обсуждение САР теоремы. Также, я хочу извиниться, если статья вам покажется слишком напыщенной, но эта напыщенность опирается на множество ссылок.)

САР использует слишком узкое определение


Если вы хотите ссылаться на САР как на теорему (а не на расплывчатый концепт в маркетинговых материалах к вашей базе данных), вы должны быть точны. Математика требует точности. Доказательство сохраняется только если вы вкладывается в слова, то же самое значение, что было использовано при доказательстве. И оно опирается на очень точные определения:
Еще 3000 слов увлекательного чтива
Total votes 70: ↑66 and ↓4+62
Comments23

Открыто видео курса «Multicore programming in Java» на русском (30+30 часов)

Reading time2 min
Views60K
Добрый день.

Я занимаюсь IT-преподаванием. Читал Java Core (материалы тут).
Сейчас написал и продаю курс «Scala for Java Developers»

В этом посте решил открыть видео двух курсов (проходивших в режиме вебинаров) по многопоточности под JVM (это 16 + 16 двухчасовых лекций).

Больше о материалах (программа, полезные ссылки) можно прочитать в постах-объявлениях о вебинарах (Программа курса «Multicore programming in Java» (25 марта 2014), Программа и материалы курса «Multicore programming in Java» (31 июля)).

Курс рассчитан на слушателей, которые начинают изучать многопоточность с нуля (после крепкого курса Java Core, Middle Developer из чистого web-а или перешедшим из скриптовых/интерпретируемых языков программирования). Он не будет подходить тем, кто перешел из «суровых» С/С++ или ищет «академической высоты».

Детально рассматриваются темы Hardware, New Java memory Model, java.util.concurrent (atomics, blocking queues, thread pool, locks, synchronizers), message passing alternative, software transactional memory alternative, Java 7 Fork/Join, Java 8 Parallel Streams (+Lambdas, +Stream API), CSP/JCSP alternative

Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments1

О личном опыте работы с «бодишопами» или предупрежден — значит вооружен

Reading time6 min
Views55K
image
Обманутые программисты пишут жалобу в Departament of Labor

Сегодня хотел бы поделиться своим опытом и опытом работы знакомых с такой штукой, как консалтинговая компания АКА «бодишоп». Думаю, всем желающим поехать за границу работать будет полезен сей опыт.
TLDR: опыт негативный, название фирмы указывать не буду, дабы не нарушать правила.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments14

Не пельменем единым жив программист или история о том, как все успеть

Reading time7 min
Views136K
image

По заявкам трудящихся и в связи с переносом — возвращаю пост, который многих порадовал. Надеюсь НЛО будет не против.

На написание этого поста меня сподвиг замечательный пост «За что конкретно я ненавижу некоторых отдельно взятых маркетологов — или как айтишник по магазинам ходил». Сразу хочу извиниться за возможные опечатки — пишу с планшета, сидя в микроавтобусе и вытягивая сеть телефоном. Hacker's keyboard очень удобен для ssh-доступа, но большие тексты писать им не очень удобно.

IT- специалисты — народ любопытный. То соберут на базе микроконтроллеров автоматическую систему полива и освещения для любимого фикуса, то пропатчат прошивку мультиварки для раздачи торрентов. Но, по непонятной и загадочной причине, когда дело доходит до еды, пресловутый принцип DIY дает сбой. И наш герой, способный часами переделывать кинескоп старого телевизора в Луч Смерти, идет на кухню утолить голод соевым текстуратом пополам с гидроцеллюлозой и «коллагеновым сырьем».

В этом посте я хочу разрушить миф о том, что еда может быть либо быстрой и удобной, либо съедобной. Не секрет, что многим из нас приходится работать по 12 часов в сутки, что не способствует кулинарным подвигам с участием 28 приправ и перьев с зада дракона, омытых слезами единорога. Вы получите замечательную возможность посмотреть в глаза своей половинки на 8 марта после того, как она получит не контроллер для дистанционного управления шторой, а свежевыпеченный хлеб ручной работы рано утром. Если вам надоело есть синтетику — добро пожаловать под hubracut.
Читать дальше →
Total votes 269: ↑263 and ↓6+257
Comments292

Как бороться с OutOfMemoryError на практике, или ох уж мне эти базы данных

Reading time17 min
Views73K
Приветствую, Хабр!
Немного лирики
Сегодня, 2015-03-21, я решил сделать пол-дела, и всё-таки начать писать статью о том, как же всё-таки начать понимать, что же делать с OOM, да и вообще научиться ковырять heap-dump'ы (буду называть их просто дампами, для простоты речи. Также я постараюсь избегать англицизмов, где это возможно).
Задуманный мной объём «работ» по написанию этой статьи кажется мне не однодневным, а посему статья должна появиться лишь через пару недель спустя день.

В этой статье я постараюсь разжевать, что делать с дампами в Java, как понять причину или приблизиться к причине возникновения OOM, посмотреть на инструменты для анализа дампов, инструмент (один, да) для мониторинга хипа, и вообще вникнуть в это дело для общего развития. Исследуются такие инструменты, как JVisualVM (рассмотрю некоторые плагины к нему и OQL Console), Eclipse Memory Analyzing Tool.
Очень много понаписал, но надеюсь, что всё только по делу :)
Читать дальше →
Total votes 50: ↑49 and ↓1+48
Comments31

Information

Rating
Does not participate
Location
Lisbon, Lisboa, Португалия
Date of birth
Registered
Activity