- 91
- 525 519
Уголок сельского джависта
Russia
เข้าร่วมเมื่อ 23 ม.ค. 2009
Я - сельский джавист, и друзья меня зовут Шурик. А это канал моего профессионального блога, посвящённого разработке программного обеспечения на платформе Java. Я тут рассказываю о Java, Kotlin, Spring и многом другом.
4777218563
4777218563
Основы Apache Kafka
Информационные системы в процессе своей работы порождают большое количество событий, которые могут быть связаны как с самой системой, так и с реализуемой предметной областью.
Но созданные события нужно доставить до получателей - других компонентов информационной системы, и в этом случае на помощь приходят брокеры очередей сообщений и стриминговые системы. В этом ролике речь пойдёт о самой популярной системе стриминга событий - Apache Kafka и будут описаны следующие темы:
- Краткое описание стримов данных
- Терминология Kafka
- Локальный запуск Apache Kafka
- Использование утилит CLI для отправки и получения сообщений
- Отправка и получение сообщений в проекте на Java
00:00:00 Вступление
00:01:35 Про стримы данных
00:06:36 Терминология и теория Kafka
00:21:00 Установка и запуск Kafka
00:31:39 Отправка и получение сообщений в CLI
00:47:49 Создание отправителя в Java
00:55:21 Использование транзакций
01:02:55 Не идемпотентные отправители и подтверждение записи
01:06:12 Создание получателя в Java
01:08:28 Ручное назначение партиций получателю
01:11:14 Получение сообщений
01:16:57 Подписка на топик в группе получателей
01:25:00 Поиск смещения
01:39:55 Фиксация прочитанных смещений получателем
01:55:30 Про семантики доставки
02:01:35 Пример семантики Exactly Once
02:06:40 Выводы
Связанные с роликом статьи:
Про очереди сообщений: alexkosarev.name/2024/10/25/about-mq/
Начало работы с Kafka: alexkosarev.name/2024/10/31/kafka-intro/
Запуск Apache Kafka в кластере: alexkosarev.name/2024/11/04/kafka-clustering/
Apache Kafka: партиции и реплики: alexkosarev.name/2024/11/08/kafka-partitions-and-replicas/
Отправка сообщений в Kafka: alexkosarev.name/2024/12/03/kafka-sending-messages/
Получение сообщений из Kafka: alexkosarev.name/2024/12/04/kafka-receiving-messages/
Канал в Telegram: t.me/+TZCuO38vG3oqu_Jq
Поддержать проект: www.tinkoff.ru/cf/4PEOiVCZQuS
Но созданные события нужно доставить до получателей - других компонентов информационной системы, и в этом случае на помощь приходят брокеры очередей сообщений и стриминговые системы. В этом ролике речь пойдёт о самой популярной системе стриминга событий - Apache Kafka и будут описаны следующие темы:
- Краткое описание стримов данных
- Терминология Kafka
- Локальный запуск Apache Kafka
- Использование утилит CLI для отправки и получения сообщений
- Отправка и получение сообщений в проекте на Java
00:00:00 Вступление
00:01:35 Про стримы данных
00:06:36 Терминология и теория Kafka
00:21:00 Установка и запуск Kafka
00:31:39 Отправка и получение сообщений в CLI
00:47:49 Создание отправителя в Java
00:55:21 Использование транзакций
01:02:55 Не идемпотентные отправители и подтверждение записи
01:06:12 Создание получателя в Java
01:08:28 Ручное назначение партиций получателю
01:11:14 Получение сообщений
01:16:57 Подписка на топик в группе получателей
01:25:00 Поиск смещения
01:39:55 Фиксация прочитанных смещений получателем
01:55:30 Про семантики доставки
02:01:35 Пример семантики Exactly Once
02:06:40 Выводы
Связанные с роликом статьи:
Про очереди сообщений: alexkosarev.name/2024/10/25/about-mq/
Начало работы с Kafka: alexkosarev.name/2024/10/31/kafka-intro/
Запуск Apache Kafka в кластере: alexkosarev.name/2024/11/04/kafka-clustering/
Apache Kafka: партиции и реплики: alexkosarev.name/2024/11/08/kafka-partitions-and-replicas/
Отправка сообщений в Kafka: alexkosarev.name/2024/12/03/kafka-sending-messages/
Получение сообщений из Kafka: alexkosarev.name/2024/12/04/kafka-receiving-messages/
Канал в Telegram: t.me/+TZCuO38vG3oqu_Jq
Поддержать проект: www.tinkoff.ru/cf/4PEOiVCZQuS
มุมมอง: 2 321
วีดีโอ
SC24EP22 Шаблонизация с Helm - Разработка проектов со Spring
มุมมอง 3K7 หลายเดือนก่อน
В заключительном ролике цикла я хочу вкратце рассказать о Helm - инструменте, который позволяет упростить процесс написания дескрипторов развёртывания для Kubernetes за счёт шаблонизации. Все написанные ранее дескрипторы развёртывания для сервисов имеют по большей части схожую структуру, и шаблонизация в данном случае позволит уменьшить дублирование кода и в целом ускорить процесс развёртывания...
SC24EP21 Kubernetes без Spring Cloud - Разработка проектов со Spring
มุมมอง 1.9K8 หลายเดือนก่อน
Kubernetes предоставляет богатый набор инструментов, благодаря чему вам не требуется Spring Cloud для развёртывания проектов на основе Spring Boot. Это позволяет более рационально использовать ресурсы облака и даже немного сэкономить на облачных услугах. В двадцать первом ролике цикла речь пойдёт о замене Spring Cloud Gateway, Spring Cloud Netflix Eureka и Spring Cloud Config на средства Kubern...
SC24EP20 Развёртывание сервисов в Kubernetes - Разработка проектов со Spring
มุมมอง 3.4K8 หลายเดือนก่อน
В двадцатом ролике цикла речь пойдёт о Kubernetes, инструменте, который в значительной степени упрощает развёртывание и сопровождение проектов с микросервисной архитектурой в облачной инфраструктуре. Оркестраторы, реализующие спецификации k8s, позволяют автоматизировать процессы развёртывания, миграции и масштабирования сервисов. В рамках ролика будет продемонстрировано развёртывание ранее напи...
SC24EP19 Контейнеризация приложений с Docker и Docker Compose - Разработка проектов со Spring
มุมมอง 3.4K8 หลายเดือนก่อน
В девятнадцатом ролике цикла речь пойдёт о развёртывании сервисов в контейнерах Docker, я расскажу о том, как можно написать универсальный Dockerfile, продемонстрирую запуск сервисов в контейнерах. А затем я перейду к Docker Compose, при помощи которого можно управлять развёртыванием не одного контейнера, а набором контейнеров, необходимых для работы проекта. Кроме этого вкратце будут затронуты...
SC24EP18 Шлюз API Spring Cloud Gateway - Разработка проектов со Spring
มุมมอง 4.5K8 หลายเดือนก่อน
В некоторых случаях вам может понадобиться реализовать единую точку входа для множества REST API, реализованных в рамках разных сервисов. В экосистеме Spring Cloud для данных целей существует Spring Cloud Gateway, позволяющий реализовать шлюз API (API Gateway) и гибко настраивать маршрутизацию запросов к вашим REST API. В цикле роликов "Разработка проектов со Spring" я рассказываю на простых пр...
SC24EP17 Сервис конфигураций Spring Cloud Config - Разработка проектов со Spring
มุมมอง 2.3K8 หลายเดือนก่อน
В семнадцатом ролике цикла речь пойдёт о сервисе конфигураций Spring Cloud Config. При сопровождении большого количества сервисов процесс изменения их настроек становится сложнее, особенно если речь заходит о массовом изменении настроек, так как у каждого сервиса есть свой файл с параметрами, который находится на сервере с запущенным сервисом. Spring Cloud Config позволяет централизованно управ...
SC24EP16 Реестр сервисов Spring Cloud Netflix Eureka - Разработка проектов со Spring
มุมมอง 2.7K8 หลายเดือนก่อน
В проектах с микросервисной или распределённой архитектурой количество запускаемых сервисов может исчисляться десятками, а в больших проектах их количество может и вовсе переваливать за сотню. И чтобы упростить работу при настройке экземпляров тех или иных сервисов придуманы реестры сервисов, которые в свою очередь позволяют реализовать механизм поиска сервисов (Service Discovery). При запуске ...
SC24EP15 Сбор трассировок с Grafana Tempo - Разработка проектов со Spring
มุมมอง 2.1K8 หลายเดือนก่อน
Пятнадцатый ролик серии завершает тему мониторинга сервисов, а посвящён он распределённым трассировкам с использованием Micrometer Tracing и Grafana Tempo. В процессе обработки запроса может быть задействовано большое количество компонентов: сервисов, баз данных, очередей сообщений и т.д. Трассировки предоставляют информацию о прохождении запроса через компоненты ваших сервисов, а собираемая ст...
SC24EP14 Централизованный сбор логов с Grafana Loki - Разработка проектов со Spring
มุมมอง 3K8 หลายเดือนก่อน
Логгирование является важной составляющей процесса мониторинга сервисов. Однако стандартный вывод логов в консоль или файл неудобен тем, что при необходимости анализа логов нужно подключаться к серверу, на котором запущен сервис. Хорошим решением является централизованное хранение логов, и в данном ролике для этого будет использован Grafana Loki, а так же будет продемонстрирована настройка Logb...
SC24EP13 Мониторинг сервисов с Micrometer и VictoriaMetrics - Разработка проектов со Spring
มุมมอง 2.4K8 หลายเดือนก่อน
В тринадцатом ролике цикла я продолжаю тему мониторинга сервисов, но на этот раз предлагаю рассмотреть более распространённую связку инструментов: Micrometer, VictoriaMetrics в качестве альтернативы Prometheus и Grafana. Примеры настройки инструментов мониторинга будут включать и OAuth 2.0. В цикле роликов "Разработка проектов со Spring" я рассказываю на простых примерах о процессе разработки в...
SC24EP12 Мониторинг и администрирование со Spring Boot Admin - Разработка проектов со Spring
มุมมอง 3K9 หลายเดือนก่อน
Мониторинг и администрирование являются важными составляющими процесса эксплуатации разрабатываемых сервисов. В настоящее время для этого существует достаточно большое количество инструментов общего назначения, но в этом ролике я хотел бы рассказать о специфичном для Spring Boot проекте, который называется Spring Boot Admin. Данный инструмент позволяет реализовать мониторинг проектов на основе ...
SC24EP11 Документация REST-сервисов - Разработка проектов со Spring #java #spring #swagger #openapi
มุมมอง 3K9 หลายเดือนก่อน
Написание документации является неотъемлемой частью процесса разработки даже относительно небольших проектов. В случае с REST-сервисами вы можете описать их вручную в формате OpenAPI, а можете использовать инструменты документирования, которые автоматизируют часть этого процесса. В одиннадцатом ролике серии речь пойдёт об использовании двух инструментов для автоматического генерирования докумен...
SC24EP10 Тестирование реактивных веб-приложений - Разработка проектов со Spring
มุมมอง 1.7K9 หลายเดือนก่อน
Тестирование является неотъемлемым этапом разработки программного обеспечения и обеспечивает качество разрабатываемых проектов, соблюдение требований и спецификаций, а также позволяет выявлять ошибки на ранних этапах. В десятом ролике серии речь пойдёт о модульном и интеграционном тестировании проектов на основе Spring Webflux и Project Reactor. Кроме этого в ролике рассматривается применение T...
SC24EP09 Безопасность реактивных веб-приложений - Разработка проектов со Spring
มุมมอง 2K9 หลายเดือนก่อน
Информационную систему сложно представить себе без аутентификации и авторизации - так или иначе нужно управлять доступом пользователя к тем или иным ресурсам. В девятом ролике серии речь пойдёт об обеспечении безопасности реактивных веб-приложений при помощи Spring Security и будет продемонстрирована настройка цепочки фильтров безопасности. В рамках ролика демонстрируется аутентификация и автор...
SC24EP08 Работа с реактивными базами данных - Разработка проектов со Spring #spring #java #mongodb
มุมมอง 1.9K9 หลายเดือนก่อน
SC24EP08 Работа с реактивными базами данных - Разработка проектов со Spring #spring #java #mongodb
SC24EP07 Разработка реактивных REST-сервисов - Разработка проектов со Spring
มุมมอง 3.1K9 หลายเดือนก่อน
SC24EP07 Разработка реактивных REST-сервисов - Разработка проектов со Spring
SC24EP06 Разработка реактивного веб-приложения - Разработка проектов со Spring
มุมมอง 6K9 หลายเดือนก่อน
SC24EP06 Разработка реактивного веб-приложения - Разработка проектов со Spring
SC24EP05 Тестирование веб-приложений - Разработка проектов со Spring #java #spring #softwaretesting
มุมมอง 7K9 หลายเดือนก่อน
SC24EP05 Тестирование веб-приложений - Разработка проектов со Spring #java #spring #softwaretesting
SC24EP04 Безопасность веб-приложений - Разработка проектов со Spring #java #spring #security
มุมมอง 11K9 หลายเดือนก่อน
SC24EP04 Безопасность веб-приложений - Разработка проектов со Spring #java #spring #security
SC24EP03 Работа с базами данных - Разработка проектов со Spring #java #spring #data #jpa #sql
มุมมอง 9K9 หลายเดือนก่อน
SC24EP03 Работа с базами данных - Разработка проектов со Spring #java #spring #data #jpa #sql
SC24EP02 Разработка REST-сервиса - Разработка проектов со Spring #java #spring #rest
มุมมอง 12K9 หลายเดือนก่อน
SC24EP02 Разработка REST-сервиса - Разработка проектов со Spring #java #spring #rest
SC24EP01 Разработка веб-приложения - Разработка проектов со Spring #spring #java #web #validation
มุมมอง 26K10 หลายเดือนก่อน
SC24EP01 Разработка веб-приложения - Разработка проектов со Spring #spring #java #web #validation
О цикле роликов - Разработка проектов со Spring
มุมมอง 14K10 หลายเดือนก่อน
О цикле роликов - Разработка проектов со Spring
Client, Resource Server, Login - Spring Security OAuth 2.0 #java #spring #security #oauth #oidc
มุมมอง 7K10 หลายเดือนก่อน
Client, Resource Server, Login - Spring Security OAuth 2.0 #java #spring #security #oauth #oidc
Actuator, Micrometer, Victoria Metrics, Grafana - Мониторинг Spring Boot #micrometer #springboot
มุมมอง 9Kปีที่แล้ว
Actuator, Micrometer, Victoria Metrics, Grafana - Мониторинг Spring Boot #micrometer #springboot
Основы OAuth 2.0 и OpenID Connect #oauth #oidc #openidconnect
มุมมอง 12Kปีที่แล้ว
Основы OAuth 2.0 и OpenID Connect #oauth #oidc #openidconnect
Мой год видеоблоггинга - ожидания, результаты, планы #влог #блог
มุมมอง 1.2Kปีที่แล้ว
Мой год видеоблоггинга - ожидания, результаты, планы #влог #блог
Гексагональная архитектура и микросервисы #java #microservices #hexagonal
มุมมอง 10Kปีที่แล้ว
Гексагональная архитектура и микросервисы #java #microservices #hexagonal
Access Control List (ACL) - Spring Security в деталях #springsecurity #java #acl #spring
มุมมอง 2.5Kปีที่แล้ว
Access Control List (ACL) - Spring Security в деталях #springsecurity #java #acl #spring
thanks. good job
Тайм-коды: 1:30 - введение, что такое аор и для чего оно существует? 2:31 - пример кода с дублирующимся кодом, где можно применить аор 4:11 - теория о компонентах аор 11:05 - зависимости, как подключить возможность использовать аор в спринге 12:07 - подробное описание приложения, где будем тестить аор 13:40 - создание конфига для аор 14:42 - создание класса-аспекта для дальнейшего создания советов(advices) и точек среза(pointcut) нем 16:00 - создаем advice и pointcut 19:29 - подробнее о pointcut -> указатель within 22:08 - несколько аннотаций в указателе within 23:48 - указатель execution 27:12 - еще больше об указателе execution - возможность указать аннотации для любой части сигнатуры метода+исключения+целевой класс 32:52 - указатель this 35:46 - указатель target 37:43 - указатель args 39:40 - указатель @target 42:05 - указатель @args 43:25 - указатель @within 45:56 - указатель bean 46:48 - использование отрицания, объединение нескольких правил, объединение правил в группы в pointcut 49:37 - начало advice -> аннотация для совета Before 50:35 - аннотация для совета After 51:58 - аннотации для совета AfterReturning и AfterThrowing 53:52 - получение доступа к результату/исключению после срабатывания советов AfterReturning и AfterThrowing 56:33 - аннотация для совета Around(неверный синтаксис) 58:58 - верный синтаксис работы аннотации Around(использование ProceedingJoinPoint) 1:00:40 - порядок выполнения советов с разными аннотациями 1:01:40 - использование JoinPoint и его методов в аннотациях для получение доп. инфы о выполняемой логике 1:03:03 - модификация аргументов в методах с аннотацией Around 1:05:17 - начало введения (Introduction) 1:06:33 - статическая переменная + аннотация DeclareParents 1:09:23 - уточнение, что модификация(добавления др. поведения/интерфейсов) через введения возможна только для proxy класса, но не для целевого класса 1:11:14 - заключение
thanks
Урок супер большое спасибо! Хотелось бы разбора с приватным репозиторием, у меня почему-то не получилось, вписывал логин и пароль, но при получении пишет что не может авторизироваться(( а с публичным репо всё работает окей
Видео супер!
Большое спасибо за видео!
Счастья, здоровья и долгих лет жизни автору! материал просто супер!
красава, спасибо!
Круто, планируется ли разбор spring boot kafka? Там есть тонкости?
почему происходит конфликт айдишников с файла product.sql и реальными данными в бд? не дает положить id1,2,3 и тд, говорит уже имеется. дроп бд спасает, но все же это ведь вообще не выход) после окончания тестов, как и предполагалось, бд пустая, а сиквен заполняется.
Добрый день, был бы очень благодарен если бы рассказал, как экспортировать realms с юзерам. Так как череp UI скачивается без юзеров, а когда пытаюсь стянуть конфиг из докера по пути /opt/keycloak/data/import то там не обновляются новые юзеры. Спасибо!
Спасибо большое за ваши видео, всегда мега информативно и структурно 👌👍
Как я вовремя начал изучать java spring
Александр: "вообще начинать рассказ про Spring Security следует начинать с фильтров" Так же Александр - снимает 8 видеороликов до фильтов суммарно на 2,5 часа)))
Это просто офигенно
thanks
Видео огонь , подача классная . Правда материал , тяжело заходит , голова дымится
Вроде бы все знаю, но еще раз послушать для повторения - просто огонь!
Дружище, дико респектую за твою работу 🤝
Александр, привет! Прям во время, очень ждал! Спасибо 🙏
Спасибо, хороший подарок на новый год. Был опыт проектирования на основе DDD и Event Sourcing, было бы интересно посмотреть видео чтобы почерпнуть опыт, буду ждать)
Ждал!
Привет в одном из видео был сайт который редиректит по айпи аля тиниднс какой-то, никак найти не могу, не подскажешь?
th-cam.com/video/QAIjOGq9PWE/w-d-xo.html nip.io
100
Спасибо, ваши видео лучшие🎉
Вы, лучший
Примеры кода нужны, спасибо
thanks
УРАААА ДОЖДАЛИСЬ!
топчик
Огромнейшая вам благодарность за проделанный труд
а ребитом тоже пользуются или больше кафка? спасибо
Конечно пользуются, но на мой взгляд Kafka немного популярнее
@@shurik_codes еще такое хотел спросить - спринг - клауд - надо ли учить начинающему-джуниору
Spring Cloud содержит большое количество модулей и погружаться во все не нужно. Джуну в целом не требуется знание Spring Cloud, на мой взгляд, но при желании можно ознакомиться с тем же Gateway, например
Спасибо большое, вы лучший ❤
Обожаю этот канал, спасибо тебе!!!❤
ооо, Маэстро! Рад что ты с нами!
Лучший 🔥🔥🔥🔝
Класс! Спасибо большое!!
Спасибо! Очень своевременно.
Спасибо большое, С наступающим! После Нового года ждем уроки про KUBERNETES
Полезно. С наступающим)
Спасибо
Вообще крутяк!
а у меня все сработало с обычным Principal, без всяких токенов
Очень плохо, что не говорите версии спринг бута. Все очень быстро становится деприкейтед
29:00 - А для чего мы явно бросаем BindException? И для чего явно работаем с BindingResult? Спринг ведь может делать под капотом?
Полностью согласен 👍 город очень красивый, есть на что посмотреть и где погулять
И у него и у соера глаза косят
про друге транзукции если можно - платёжную систему какую-нить самую популярную
контент супер, было бы круто если бы было продолжение с контейнеризацией
Скачал код с репозитория, создал проект в IJ - как запустить? Кнопки с зелёным треугольником нет. Создал конфигурацию с типом Spring Boot, прописал main класс - кнопка появилась. Но не компилируется java.lang.NullPointerException: Cannot invoke "org.springframework.boot.docker.compose.core.DockerCliInspectResponse.hostConfig()" because "inspectResponse" is null docker compose up -d предварительно я запустил - т.е. контейнер с postgres запущен