В этой статье я бы хотел поделиться способом написания асинхронных микросервисов на Python, в основе которых библиотека Faust. А в качестве брокера сообщений Kafka. Ну и немного мониторинга с Prometheus и Grafana.
Software Agency Owner
Грабли на пути к keep-alive
Увеличение активности обмена данными между микросервисами зачастую является проблемой в архитектуре современных IT решений. Выжать максимум и выжить любой ценой — серьёзный вызов для любой разработки. Поэтому поиск оптимальных решений — это не прекращающийся процесс. В статье кратко изложены проблемы, которые могут возникнуть при высоконагруженном использовании http запросов и пути их обхода.
Envoy для самых маленьких
Всем привет!
Я работаю бэкенд-разработчиком в компании Tinkoff, где участвую в разработке платформы CRM-системы для обслуживания физических и юридических лиц.
Использование edge proxy и балансировщика в частности — это почти мастхэв при построении современных систем. Сегодня на рынке представлено большое количество разнообразных решений, у каждого из которых есть преимущества и недостатки. Мы остановимся на одном из самых свежих — Envoy.
Envoy — это высокопроизводительный балансировщик, реализованный на C++. Его разработала компания Lyft — сервис заказа такси в Штатах, прямой конкурент Uber — для использования как с отдельными сервисами, так и в качестве связующего звена в сложных микросервисных системах. В том числе для реализации относительно свежего архитектурного явления — service mesh.
Формируя основной фундамент нашей платформы, он реализует cors, access-control, rate limiting, outlier detection, проверку jwt и многое другое.
На Хабре есть отличная статья, которая разбирает его основные отличия от ближайших соседей и проливает свет на внутреннее устройство. Мы же сфокусируемся больше на прикладных моментах, разберемся с запуском и настройкой, попробуем сразу несколько видов балансировки трафика. Поехали!
Envoy. 1. Введение
Приветствую! Это небольшая статья, отвечающая на вопросы: "что такое envoy?", "зачем он нужен?" и "с чего начать?".
Что это
Envoy — это L4-L7 балансировщик написанный на С++, ориентированный на высокую производительность и доступность. С одной стороны, это в некотором роде аналог nginx и haproxy, соизмеримый с ними по производительности. С другой, он больше ориентирован под микросервисную архитектуру и обладает функционалом не хуже балансировщиков на java и go, таких как zuul или traefik.
Таблица сравнения haproxy/nginx/envoy, она не претендует на абсолютную истину, но дает общую картину.
nginx | haproxy | envoy | traefik | |
---|---|---|---|---|
звезд на github | 11.2k/mirror | 1.1k/mirror | 12.4k | 27.6k |
написан на | C | C | C++ | go |
API | нет | socket only/push | dataplane/pull | pull |
active healthcheck | нет | да | да | да |
Open tracing | внешний плагин | нет | да | да |
JWT | внешний плагин | нет | да | нет |
Расширение | Lua/C | Lua/C | Lua/C++ | нет |
Введение в Data Engineering. ETL, схема «звезды» и Airflow
При этом, несмотря на всю важность, образование в сфере data engineering продолжает оставаться весьма ограниченным. Мне повезло, поскольку я успел поработать со многими инженерами, которые терпеливо объясняли мне каждый аспект работы с данными, но не все обладают такой возможностью. Именно поэтому я решил написать эту статью — введение в data engineering, в которой я расскажу о том, что такое ETL, разнице между SQL- и JVM-ориентированными ETL, нормализации и партиционировании данных и, наконец, рассмотрим пример запроса в Airflow.
Apache Kafka – мой конспект
— Тема (Topic)
— Подписчики (consumer)
— Издатель (producer)
— Группа (group), раздел (partition)
— Потоки (streams)
Kafka — основное
При изучении Kafka возникали вопросы, ответы на которые мне приходилось эксперементально получать на примерах, вот это и изложено в этом конспекте. Как стартовать и с чего начать я дам одну из ссылок ниже в материалах.
Apache Kafka – диспетчер сообщений на Java платформе. В Kafka есть тема сообщения в которую издатели пишут сообщения и есть подписчики в темах, которые читают эти сообщения, все сообщения в процессе диспетчеризации пишутся на диск и не зависит от потребителей.
Как пользоваться интерфейсами в Go
В свободное от основной работы время автор материала консультирует по Go и разбирает код. Естественно, что в ходе такой деятельности он читает много кода, написанного другими людьми. В последнее время у автора этой статьи сложилось впечатление (да именно впечатление, никакой статистики), что программеры стали чаще работать с интерфейсами в «стиле Java».
Этот пост содержит рекомендации автора материала об оптимальном использовании интерфейсов в Go, основанные на его опыте в написании кода.
В примерах этого поста мы будет пользоваться двумя пакетами
animal
и circus
. Многие вещи в этом посте описывают работу с кодом, граничащим с регулярным применением пакетов.Как делать не надо
Очень распространенное явление, которое я наблюдаю:
package animals
type Animal interface {
Speaks() string
}
// применение Animal
type Dog struct{}
func (a Dog) Speaks() string { return "woof" }
REST-сервисы на ASP.NET Core под Linux в продакшене
Конфигурация: ASP.NetCore на Linux позволила не только использовать существующую on-premise платформу, но и принесла еще несколько дополнительных плюсов, в частности, в виде полноценных Docker и Kubernetes, которые сильно упрощают жизнь.
О сервисе
С 1 апреля 2017 года в продуктах 2ГИС появилась иконка, на которую можно нажать и начнет проигрываться видео. Рекламодатели, которые размещаются в справочнике, теперь могут купить новый способ размещения рекламы, а все продукты нашей компании (мобильные, онлайн, API), ходят на сервис, про который я буду сегодня рассказывать.
Топология этого сервиса примерно представлена на картинке ниже. Сервис помечен облачком в центре, он, по сути дела, является бэкендом для продуктов. Когда продукт приходит и говорит: «Дай мне для этого рекламодателя всю информацию о видеорекламе», сервис ему послушно ее отдает. Это информация такого плана: такая-то обложка лежит на таком-то CDN, такой-то видеофайл в таких-то разрешениях лежит там-то и там-то, само видео длится такое количество времени и прочее.
Осторожно: много информации и кода.
Краткая шпаргалка по tmux (менеджеру терминалов)
tmux
— это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen
, только лучше (в первую очередь потому, что использует модель клиент—сервер).Вашему вниманию предлагается минималистическая шпаргалка, позволяющая быстро начать использовать
tmux
, а уж тонкую настройку, продвинутые команды и бесконечные хот-кеи желающие найдут, набрав man tmux
.Практический опыт использования Blynk для датчика СО2. Часть 1
Начало
Идея проекта родилась несколько лет назад, когда в порыве DYI-энтузиазма на Ali был куплен датчик качества воздуха MQ-135. По спецификации этот датчик реагирует на наличие в воздухе таких веществ как: NH3, NOx, спирт, бензин, дым и CO2 и выдает свою абстрактную оценку качества воздуха на аналоговом выходе [да я знаю, что существуют подстроечные резисторы и способы калибровки, но как то это слишком сложно].
Испытания показали, что на всякие вредные и «вонючие» соединения датчик реагирует отлично, показывая достаточно резкое изменение выходного уровня. Хуже дело обстояло с определением невидимого врага, а именно углекислого газа СО2. Про вред и очевидную повсеместность этого диоксида сказано немало, повторяться не будем.
Работа с Anaconda на примере поиска корреляции курсов криптовалют
Цель этой статьи — предоставить легкое введение в анализ данных с использованием Anaconda. Мы пройдем через написание простого скрипта Python для извлечения, анализа и визуализации данных по различным криптовалютам.
Attention! S in Ethereum stands for Security. Part 1. Blockchain things
С этой статьи мы начинаем цикл, посвященный типичным уязвимостям, атакам и проблемным местам, присущим смарт-контрактам на языке Solidity, и платформе Ethereum в целом. В первой части мы поговорим вот о чем:
- почему сложно реализовать децентрализованную биржу на смарт-контрактах
- как сгенерировать случайное число
- как вывести из строя всю Proof-of-Authority сеть
Эксперименты с контрактами Solidity в тестовой сети Rinkeby блокчейна Ethereum
Эта статья представляет собой небольшое практическое руководство, которое поможет вам быстро настроить среду разработки смарт-контрактов на языке Solidity для блокчейна Ethereum. Вы опубликуете первый контракт, сохраните его в тестовом блокчейне Rinkeby и научитесь вызывать методы контракта. Это будет ваш первый шаг на пути создания децентрализованных приложений DApp (Decentralized Application).
Несмотря на обилие книг, статей и руководств, посвященной теме этой статьи, новичку довольно трудно приступить к публикации контрактов и работе с ними. При попытке что-то сделать по книгам, руководствам и статьям нередко оказывается, что примеры не работают, а команды возвращают непонятные ошибки. Я попытаюсь в некоторой степени упростить первый этап освоения, отразив в этой статье свой опыт изучения Ethereum.
При погружении в эту тему я использовал приложение (браузер) Mist в среде Microsoft Windows, а также интерфейс командной строки Geth узла Ethereum в среде Ubuntu. В этой статье мы расскажем о работе с Geth, а также немного о том, как вызывать методы контрактов из Node.js.
С благодарностью приму замечания и пожелания по дальнейшим статьям про блокчейн Ethereum, разработку контрактов на языке Solidity и приложений DApp.
Структура и модель выполнения .NET Core приложений
Текст объемный и рассчитан на:
- начинающих разработчиков, которые только знакомятся с платформой .NET Core;
- опытных разработчиков, выполняющих роль DevOps-инженеров в produсtion-окружении.
В статье не упоминается процесс создания приложений при помощи SDK (dotnet CLI), однако эта информация будет полезной для понимания, как работает SDK, а именно её основной компонент (ядро) — «драйвер» dotnet.dll, поскольку эта библиотека является управляемой сборкой и выполняется на .NET Core.
Примеры процессов выполнения описаны для ОС Windows, но работают по тому же принципу и на других ОС (с учетом различных расширений исполняемых файлов и нативных библиотек).
Как фронтенд-разработчику настроить базу данных
Недавно меня спросили, как фронтенд-разработчику проще всего сохранить пользовательские данные? Под катом — моя краткая инструкция для тех, кто с базами данных «на вы».
Работаем с долгими API в ASP.NET Core правильно или тонкости переезда на новую платформу
Линия — видеонаблюдение: 30 бесплатных возможностей
Привыкший к политике многочисленных систем видеонаблюдения пользователь уже не верит в то, что за небольшую цену может быть «все включено». Обязательно для работы какой-нибудь функции необходимо приобрести платный модуль. Из-за этого цена на бюджетное решение для видеонаблюдения разрастается до неприличных размеров.
Нам такое «двойное дно» не по душе и мы стремимся сделать все для того, чтобы пользователь за одну определенную цену получил все необходимое для построения своей системы видеонаблюдения.
Поэтому вот список 30 бесплатных возможностей системы видеонаблюдения «Линия», которые включены всегда, вне зависимости от того, что именно вы приобретаете: код активации программы, плату видеозахвата или видеосервер. С каждым обновлением системы, которое, к слову, также абсолютно бесплатное, добавляются новые функции.
Для тех, кому лень читать, сразу мотайте в конец, там специальное предложение для дилеров или инсталляторов систем видеонаблюдения. Даже если вы не тот и не другой, но очень хочется попробовать и начать, то вам это тоже будет очень интересно!
Практика с dapp. Часть 2. Деплой Docker-образов в Kubernetes с помощью Helm
Ускорьте ваш сайт с помощью машинного обучения
Многие из нас постоянно думают о производительности веб-приложений: добиваются 60 FPS на медленных телефонах, загружают свои ассеты в идеальном порядке, кэшируют всё что можно, и много чего ещё.
Но не является ли такое представление о производительности веб-приложений слишком ограниченным? С позиции пользователя все эти действия — лишь крошечный кусок большого пирога производительности.
В этой статье мы пройдёмся по всем этапам использования сайта, как если бы это делал обычный человек, измерив длительность каждого из них. И особое внимание уделим конкретному шагу на одном конкретном сайте, который может быть ещё больше оптимизирован. Хочется верить, что решение (которым будет машинное обучение) может быть использовано во многих различных случаях на разных сайтах.
Автоматическое распознавание текста в видео
Краткий обзор
Мы занимаемся разработкой алгоритмов для автоматической сегментации символов в фильмах, которые извлекают текст из предисловия, титров и заключения. Наши алгоритмы используют стандартные символы текста в видео, чтобы повысить качество сегментации и, как следствие, эффективность распознавания. Как результат мы имеем отдельные символы из кадров. Их можно проанализировать с помощью любого ПО OCR. Результаты распознавания нескольких экземпляров одного и того же символа во всех последующих кадрах объединяются для повышения качества распознавания и для вычисления конечного результата. Мы протестировали наши алгоритмы в серии экспериментов с видеоклипами, записанными с телевизора, и достигли хороших результатов сегментации.
Information
- Rating
- Does not participate
- Location
- Украина
- Date of birth
- Registered
- Activity