Как стать автором
Обновить
1
0
Иван Симкин @Imsim

Lead Data Engineer

Отправить сообщение

P2P-форум с нуля | от NAT hole punching до автономной и полностью децентрализованной сети

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров17K

Многие, кто работают с интернет-сокетами в любой сфере IT, задаются вопросом о пробросе портов. Связано это с тем, что практически во всех домашних/общественных/корпоративных роутерах реализован механизм NAT, который перекрывает прямой доступ к устройствам в этих подсетях извне, общаясь с внешним интернетом от их имени.

У NAT есть киллер-фича — он представляет собой идеальный фаервол: атаки извне не могут использовать порты локальных устройств напрямую, следовательно, это решает проблему атак на сетевую уязвимость ОС.

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

Разнообразные сервисы работают на серверах, т. е. имеют некую ноду, которая имеет белый адрес в интернете (находится не за NAT). Все пользователи же подключаются к этому единому серверу. В таком случае проблема «невидимости» пользователей отпадает. Однако чисто серверное взаимодействие ограничивает скорость участников, так ещё и не отказоустойчиво. Если сервер упадёт, то все клиенты отправятся за ним (считаем, что это одноклеточный сервис не на всяких там kubernetes).

Как вы уже могли были догадаться, даже в реалиях, когда практически все устройства находятся за NATами, P2P реален. Когда вы являетесь участником bittorrent-раздачи, трансфер больших данных осуществляется напрямую. Как это работает? Поиск ответа на этот вопрос завёл меня в глубокие дебри, разгребая которые я написал оверлейную p2p-сеть, где трекерами являются сами её участники. Интересно? Тогда добро пожаловать под кат.
Читать дальше →
Всего голосов 76: ↑76 и ↓0+76
Комментарии25

4 года холакратии — честный отзыв о работе без руководителей

Время на прочтение10 мин
Количество просмотров29K

В этой статье я постарался честно и вдумчиво проанализировать опыт перехода из вертикальной структуры в горизонтальную. Как мы к этому пришли? Как проходил переход? Что с зарплатами? Куда делись руководители, которые вдруг стали не нужны? Если что-то упустил, спрашивайте в комментариях.

Читать далее
Всего голосов 85: ↑78 и ↓7+88
Комментарии98

Тест свинцовых аккумуляторов 12V 7Ah средней цены

Время на прочтение3 мин
Количество просмотров23K
Полгода назад я тестировал дешевые свинцовые аккумуляторы и результаты были довольно грустными. Теперь я протестировал три модели аккумуляторов средней ценовой категории и одну подороже.



Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии42

Как и зачем мы сделали Spark-коннектор к Greenplum

Время на прочтение5 мин
Количество просмотров6.9K

Всем привет! Меня зовут Андрей, я работаю системным архитектором в Arenadata. В этой статье расскажу, как и зачем мы сделали свой инструмент для обмена данными между Arenadata DB (аналитическая MPP-СУБД на базе Greenplum) и фреймворком для распределенной обработки данных Apache Spark (входит в экосистему Arenadata Hadoop).

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии4

Делаем ТруЪ-DevOps в мире хранилищ данных

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров5.6K

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

В нашем data warehouse 6,5 петабайт активных данных. Вы и сами можете представить масштабы, когда речь идет о Почте России: работа сайта и приложения, логистика, трейсинг посылок и даже строительство сортировочных центров основываются на данных нашего хранилища. 

Я расскажу, как мы применяем DevOps-практики на таких объемах DWH и как внедрить подобное у себя.

Читать далее
Всего голосов 26: ↑26 и ↓0+26
Комментарии6

Изменить сохранения Spark Часть вторая: реализация партишенера

Время на прочтение44 мин
Количество просмотров2.5K

Изменить сохранения Spark! Часть вторая: реализация партишенера!

Читать далее
Всего голосов 5: ↑4 и ↓1+6
Комментарии0

Изменить сохранения Spark! Часть первая: разделяй и… сортируй

Время на прочтение23 мин
Количество просмотров7.4K

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

И если в начале нашего пути процесс обновления длился несколько часов (до десяти-двенадцати часов), то теперь ему требуется всего тридцать-сорок минут, а использование вычислительных ресурсов уменьшено вдвое!

При этом была создана библиотека расширения Spark, которая предоставляет DataSource для преобразования данных в файлах в формат этого DataSource, изменения данных командой MERGE через DataFrame API или SQL, а в будущем ещё и UPDATE, DELETE и некоторые операции DDL.

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

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

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

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

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Data Engineer
Lead
Git
Python
SQL
Docker
OOP
Database