03 - [Udemy] Master Microservices with Spring Boot and Spring Cloud.
За это время было изучено:
1. Закончил практику с Microservices with Spring Cloud. Проект выложенный в предыдущей главе был преобразован с внедрением JPA, что упростило работу с данными и работу с СУБД.
Разработаны и внедренны два сервиса CurrencyExchange CurrencyConversion
Feign
Изучены основы использования плагина Feign. Feign связывает сервисы и позволяет лекго вызвать из одного сервиса другой сервис. Для работы необходимо связанные сервисы отметить следующей. аннотацией
@FeignClient(name = "currency-exchange", url = "localhost:8000")-интерфейс @EnableFeignClients
Eureka server и API gateway
Изучены основы использования использования плагина Eureka. С помощью него был разработан сервис naming-service. Говоря в общем Eureka - приложение, которое реализует сетевой сервис для ответа на запросы к директроиям сервисов. Используется это для балансировки нагрузки и отработки отказа сервисов. В учебном проекте для этого можно создать еще одну конфигурацию запуска имеющегося сервиса, но на другом порту. При использовании Eureka будет распределять примерно равномерно запросы между этими сервисами.
Сервисы работающие с Eureka помечаются следующей аннотацией:
@EnableEurekaServer
В месте с эти был изучен такой инструмент как API Gateway. Который позволяет вызвать любой микросервис зарегистрированный с Eureka. Если необходимо реализовать аутентификацию, то её можно реализовать в api gateway и предоставлять только те вещи которые аутентифицированны в вашем микросервисе. Научился как можно прокси API gateway к микросервисам использующим Eureka используя Spring Cloud Gateway Discovery Locacor.
Docker Basics
2. Изучил основы использования Docker. Изучил способы выгрузки образов из репозитория, способы создания собственных образов, а также
Основные команды приложения docker:
sudo docker run -p {HOSTPORT}:{CONTAINERPORT} -d in28min/todo-rest-api-h2:1.0.0.RELEASE
-d - ditached mode запускает контейнер в фоновом режиме
Получить лог контейнер: sudo docker logs -f {IMAGE_ID}
Получить информацию по запущенным контейнерам:sudo docker container ls
Получить информацию по запущенным контейнерам:sudo docker container ls Можно запустить несколько версий одного приложения в одном контейнере (на другом порту)
Просмотреть все образы в контейнере: sudo docker images
Чтобы остановить запущенное приложение: sudo docker container stop {id-контейнера} Чтобы просмотреть все контейнеры что были созданы в том числе которые были закрыты: sudo docker container ls -a Docker Daemon - ответственен за сопоставление наших локальных файлов а также за загрузку необходимых файлов из репозитория образов, если они отсутствуют на локальной машине.
docker search mysql sudo docker image history {IMAGE ID}
sudo docker image inspect {IMAGE ID/or its part} - получить метаданные о самом контейнере в момент создания, текущий статус, платформа, детали образа, связные порты,
sudo docker logs -f {IMAGE ID/or its part}
docker conteiner prune - удаляет все остановленные контейнеры
stop -> SUGTERM -> graceful shutdown (изящное завершение работы) docker container stop {IMAGE ID/or its part}
kill -> SIGKILL -> немедленно завершает процесс docker container kill {IMAGE ID/or its part}
docker container run -p 5000:5000 -d --restart=always in28min/todo-rest-api-h2:1.0.0.RELEASE Запускает контейнер каждый раз при перезапуске докера, чтобы этого изюежать небходимо воспользоваться функцией prune
docker events - отображает все происходящие в докере события sudo docker top {IMAGE ID/or its part} sudo docker stats
sudo docker container run -p 5000:5000 -m 512m --cpu-quota {ЧИСЛО} -d in28min/todo-rest-api-h2:1.0.0.RELEASE ЧИСЛО - 100000 = 100% 5000 = 5%
docker system df - докер deamon
Distributed tracing
С подробной информацие об утилите можно ознакомиться здесь
Основые тезисы
sleuth - один из фреймворков который приравнивает уникальный id каждому запросу(request) и когда запрос проходит через множество микросервисов id поддерживается а информация отправ
Для построения такого микросервиса внедряно 3 зависимости spring-cloud-sleuth-zipkin, spring-cloud-starter-sleuth, spring-rabbit. spring.sleuth.sampler.probability=1.0 - trace каждый запрос
Docker compose - упрощает запуск множества микросервисов.
По умолчанию микрсервис подхватывет tracing server и шлет лог принимая стандартную конфигурацию: spring.zipkin.baseURL=http:/localhost:9411/ Если же Zipkin запускается на другом URL, то необходимо выполнить изменение этой конфигурации.
in28min/mmv2-${project.artifactId}:${project.version}
IF_NOT_PRESENT - выполнит pull образа если он не существует локально (По умолчанию создает всегда - always)
sudo docker-compose up EUREKA.CLIENT.SERVICEURL.DEFAULTZONE: http://naming-server:8761/eureka
Проект с внедернными средствами docker: Docker exercises repo