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, то необходимо выполнить изменение этой
конфигурации.
sudo docker-compose up EUREKA.CLIENT.SERVICEURL.DEFAULTZONE:
http://naming-server:8761/eureka
Проект с внедернными средствами docker:
Docker exercises repo