Pull to refresh
22
0
Sergey Maximov @unlocker

System Architect, Java/Scala Developer

Send message

Учимся жить с Kafka без Zookeeper

Reading time13 min
Views29K

При всех достоинствах Kafka как распределенного хранилища потока сообщений, боль вызывало раздельное хранение метаданных (топологии разделов, конфигурации кластера и прочего) и необходимость запуска в кластере рядом с Kafka еще и Apache Zookeeper. Побочным эффектом такого соседства (кроме дополнительных забот об администрировании и мониторинге) является долгое время восстановления после сбоя при больших размерах кластера, значительном количестве разделов или сложной топологии групп. Но ситуация улучшается и отличная новость появилась полторы недели назад в KIP-833, что в ближайшей версии Kafka 3.3 новый протокол согласования метаданных (KRaft), работающий внутри Kafka без Zookeeper, будет признан Production-Ready и далее постепенно зависимость от Zookeeper будет помечена как deprecated и удалена. В этой статье мы поговорим об особенностях протокола KRaft и разберемся как настроить новый кластер Kafka без необходимости установки Zookeeper.

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments3

Потоковый захват изменений из PostgreSQL/MySQL с помощью Apache Flink

Reading time18 min
Views15K

Привет! Сегодня мы поговорим и попробуем на практике реализацию паттерна Change Data Capture (далее – CDC) в Apache Flink. 

Статья разделена на несколько частей: в первой мы рассмотрим теоретические основы Change Data Capture, варианты реализации и сферы применения. Во второй – обратимся к особенностям CDC-коннекторов экосистемы Apache Flink, а также выделим самые интересные фичи (а заодно и немного расскажем об Apache Flink для тех, кто раньше с ним не сталкивался). В третьей части – перейдем к практике, закатаем рукава и реализуем несложный сценарий захвата изменений из WAL PostgreSQL, приправленный объединениями, агрегацией, стеком ELK и целым кластером Flink, правда в миниатюре.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments4

Prometheus + Grafana: 4 golden signals и другие подходы к мониторингу

Reading time9 min
Views8.2K

С мониторингом, как с кораблем. Конечно, успех в обоих случаях зависит не только от названия. Чтобы все не потонуло, важно помнить о базовых вещах на старте.

В этой статье мы хотим подробнее разобрать подходы к мониторингу и посмотреть на стек Prometheus и Grafana. Материал поможет расширить ваш кругозор, если вы недавно начали или только собираетесь работать с мониторингом. 

Читать далее
Total votes 14: ↑11 and ↓3+8
Comments2

YTsaurus SPYT: помогаем планировщику Apache Spark быть ещё эффективнее

Level of difficultyHard
Reading time13 min
Views2.2K

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

Ещё с университетских времён я исследую распределённые системы, а последние два года в Яндексе адаптирую Apache Spark к внутренней инфраструктуре. Эта статья посвящена Apache Spark, а именно: как мы в рамках YTsaurus делали его ещё эффективнее. Написана она по мотивам моего доклада для «Онтико».

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments4

Настройка VSCode для работы с Scala

Reading time5 min
Views12K

Статья рассчитана на новичков в программировании на Scala, каким я сам и являюсь, и просто на желающих начать писать программный код в VSCode.

Так получилось, что единственным гайдом по теме работы со Scalой в Visial Studio Сode оказалось это видео на ютуб-канале DevInsideYou. В нем очень подробно описан процесс установки и настройки среды для VS Code и Sublime Text.

Данная статья – адаптация видео с какими-то добавлениями от меня. Вы можете перейти к просмотру видео или продолжить читать эту статью (либо сделать и то, и другое), в таком случае, надеюсь, она будет вам полезна.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments10

Refined типы в Scala

Reading time4 min
Views4.8K

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

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments33

Практика использования BPMS в бэк-офисных процессах биржи

Level of difficultyMedium
Reading time5 min
Views2K

Центральной частью биржи являются торговые системы и их торговые ядра, в которых происходит matching заявок участников рынка и формируется order_log

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

Если в двух словах описать эти процессы: они долгие и сложные.

Почему так?

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

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

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments2

Apache Kafka и RabbitMQ: семантика и гарантия доставки сообщений

Reading time17 min
Views65K


Подготовили перевод следующей части многосерийной статьи, где сравнивается функциональность Apache Kafka и RabbitMQ. В этой публикации речь идёт о семантике и гарантии доставки сообщений. Обращаем ваше внимание, что автор учитывал Кафку до версии 0.10 включительно, а в версии 0.11 появился exactly-once. Тем не менее, статья остаётся актуальной и полна полезных с практической точки зрения моментов.
Предыдущие части: первая, вторая.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments2

RabbitMQ против Kafka: применение Kafka в событийно ориентированных приложениях

Reading time12 min
Views32K

В предыдущей статье мы рассмотрели шаблоны и топологии, применяемые в RabbitMQ. В этой части мы обратимся к Kafka и сравним её с RabbitMQ, чтобы получить некоторые представления об их различиях. Следует иметь в виду, что сравниваться будут скорее архитектуры событийно-ориентированных приложений, а не конвейеры обработки данных, хотя грань между этими двумя понятиями в данном случае будет довольно размытой. Вообще, это скорее спектр, чем четкое разделение. Просто наше сравнение будет сфокусировано на части этого спектра, связанной с событийно-управляемыми приложениями.


Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments3

Мониторинг микросервисных приложений: взгляд SRE

Reading time8 min
Views12K


Современная инфраструктура — множество небольших приложений, запущенных в контексте одного менеджера приложений, который упра'вляет их количеством, обновлением и запросами на ресурсы. Она является таковой не потому, что админы решили, будто так удобно ею управлять. Такая инфраструктура отражает текущее мышление в области разработки программного обеспечения. Для того чтобы понять, почему мы сейчас говорим о микросервисной архитектуре как об идеологии, необходимо вернуться на 30 лет назад.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments6

13 инструментов для обработки текста в командной оболочке

Reading time17 min
Views87K
Здесь представлен фрагмент будущей книги «Основные инструменты и практики для начинающего разработчика программного обеспечения» Бальтазара Рубероля и Этьена Броду. Книга должна помочь образованию подрастающего поколения разработчиков. Она охватит такие темы, как освоение консоли, настройка и эффективная работа в командной оболочке, управление версиями кода с помощью git, основы SQL, инструменты вроде Make, jq и регулярные выражения, основы сетевого взаимодействия, а также лучшие практики разработки программного обеспечения и совместной работы. В настоящее время авторы упорно работают над этим проектом и приглашают всех поучаствовать в списке рассылки.

Содержание


Читать дальше →
Total votes 56: ↑53 and ↓3+50
Comments65

RabbitMQ против Kafka: два разных подхода к обмену сообщениями

Reading time18 min
Views303K

В прошлых двух статьях мы рассказывали об IIoT — индустриальном интернете вещей — строили архитектуру, чтобы принимать данные от сенсоров, паяли сами сенсоры. Краеугольным камнем архитектур IIoT да и вообще любых архитектур работающих с BigData является потоковая обработка данных. В ее основе лежит концепция передачи сообщений и очередей. Стандартом работы с рассылкой сообщений сейчас стала Apache Kafka. Однако, для того, чтобы разобраться в ее преимуществах (и понять ее недостатки) было бы хорошо разобраться в основах работы систем очередей в целом, механизмах их работы, шаблонах использования и основной функциональности.



Мы нашли отличную серию статей, которая сравнивает функциональность Apache Kafka и другого (незаслуженно игнорируемого) гиганта среди систем очередей — RabbitMQ. Эту серию статей мы перевели, снабдили своими комментариями и дополнили. Хотя серия и написана в декабре 2017 года, мир систем обмена сообщениями (и особенно Apache Kafka) меняется так быстро, что уже к лету 2018-го года некоторые вещи изменились.

Читать дальше →
Total votes 87: ↑82 and ↓5+77
Comments41

Опыт настройки и использования WSL (подсистемы Linux в Windows 10)

Reading time9 min
Views253K

К написанию данной статьи меня побудил вопрос на Тостере, связанный с WSL. Я, после нескольких лет использования систем на ядре Linux, около полугода назад перешел к использованию Windows 10 на домашнем ПК. Зависимость от терминала и Linux окружения в моей работе практически сразу привели меня к вопросу: или ставить виртуалку или попробовать WSL. Я выбрал второе, и остался вполне доволен.


Под катом я расскажу как установить и настроить WSL, на какие я наткнулся проблемы и ограничения, как запускать Linux приложения из Windows и наоборот, а так же как интегрировать элементы окружения Xfce в окружение рабочего стола Windows.


Читать дальше →
Total votes 67: ↑64 and ↓3+61
Comments82

Как мы учились эксплуатировать Java в Docker

Reading time13 min
Views45K
Под капотом hh.ru — большое количество Java-сервисов, запущенных в докер-контейнерах. За время их эксплуатации мы столкнулись с большим количеством нетривиальных проблем. Во многих случаях чтобы докопаться до решения приходилось долго гуглить, читать исходники OpenJDK и даже профилировать сервисы на продакшене. В этой статье я постараюсь передать квинтэссенцию полученного в процессе знания.


Читать дальше →
Total votes 56: ↑53 and ↓3+50
Comments24

Универсальный API для получения информации по чекам

Reading time9 min
Views111K
Привет жителям Хабра.

В данной статье хотелось бы рассказать про API для получения чеков, которое нам не предоставила всеми любимая ФНС.

Когда только появились QR-коды на чеках я подумал «Вау, как круто! Ты сканируешь код и видишь если не всю инфу по чеку, то ссылку на него». И какого же было мое разочарование, когда просканировав такой код я увидел что-то вроде

t=20180518T220500&s=975.88&fn=8710000101125654&i=99456&fp=1250448795&n=1

Но расстраиваться я не стал и подумал, что ФНС позаботилась о нас и предоставила API для получения такой информации. Погуглив некоторое время я понял, что ФНС нам предоставила только мобильное приложение для проверки чека и просмотра той информации, что поступила к ним от магазина.
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments84

Apache Kafka + Spring Boot: Hello, microservices

Reading time12 min
Views124K
Привет, Хабр! В этом посте мы напишем приложение на Spring Boot 2 с использованием Apache Kafka под Linux, от установки JRE до работающего микросервисного приложения.

Коллеги из отдела фронтэнд-разработки, увидевшие статью, сетуют на то, что я не объясняю, что такое Apache Kafka и Spring Boot. Я полагаю, что всякий, кому понадобится собрать готовый проект с использованием вышеперечисленных технологий, знают, что это и зачем они им нужны. Если для читателя вопрос не праздный, вот отличные статьи на Хабре, что такое Apache Kafka и Spring Boot.

Мы же обойдёмся без пространных объяснений, что такое Kafka, Spring Boot и Linux, а вместо этого запустим Kafka-сервер с нуля на Linux-машине, напишем два микросервиса и сделаем так, чтобы одно из них посылало сообщения на другое — в общем, настроим полноценную микросервисную архитектуру.



Пост будет состоять из двух разделов. В первом мы настроим и запустим Apache Kafka на Linux-машине, во втором — напишем два микросервиса на Java.
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments3

Scala + MXNet = Микросервис с нейронкой в проде

Reading time20 min
Views8.9K

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

Основной, на мой взгляд, недостаток всех этих примеров — ограниченность возможностей. Вы взяли пример, — пусть даже с базовой нейронной сетью, которую предлагает автор, — запустили его, возможно, он даже заработал, а что дальше? Как сделать так, чтобы этот незамысловатый код начал работать на production-сервере? Как его обновлять и поддерживать? Вот тут и начинается самое интересное. Мне не удалось найти полного описания процесса от момента «ну вот, ML-инженер обучил нейронную сеть» до «наконец-то мы выкатили это в production». И я решил закрыть этот пробел.
Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments9

Мониторинг докер-хостов, контейнеров и контейнерных служб

Reading time7 min
Views58K

Я искал self-hosted мониторинговое решение с открытым кодом, которое может предоставить хранилище метрик, визуализацию и оповещение для физических серверов, виртуальных машин, контейнеров и сервисов, действующих внутри контейнеров. Опробовав Elastic Beats, Graphite и Prometheus, я остановился на Prometheus. В первую очередь меня привлекли поддержка многомерных метрик и несложный в овладении язык запросов. Возможность использования одного и того же языка для графических изображений и уведомления сильно упрощает задачу мониторинга. Prometheus осуществляет тестирование по методу как черного, так и белого ящика, это означает, что вы можете тестировать инфраструктуру, а также контролировать внутреннее состояние своих приложений.


Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments17

Еще 7 сервисов для мониторинга сайтов

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

image
Ещё семь новых сервисов мониторинга в этой статье
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments11

7 сервисов для мониторинга сайтов

Reading time4 min
Views121K
Здравствуйте! Часто перебои в работе сайта могут привести к потере клиентов, репутации, минусам в карму и прочим неприятностям. После покупки виртуального или выделенного сервера важно вовремя получать информацию о недоступности, поэтому сегодня я хочу рассказать о нескольких сервисах мониторинга сайтов/серверов и провести их сравнение.

image

На обозрение представлены следующие сервисы:
  1. host-tracker.com
  2. monitis.com
  3. monitorus.ru
  4. pingup.ru
  5. site24x7.com
  6. uptimerobot.com
  7. webopulsar.ru

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead