Академический Документы
Профессиональный Документы
Культура Документы
Дата: 07.07.2023
2
СОДЕРЖАНИЕ
Введение ........................................................................................................ 3
Глава 1. Теоретическая часть......................................................................... 4
1.1. Микросервисная архитектура ................................................................ 4
1.2. REST API ................................................................................................ 6
1.3. Spring Boot .............................................................................................. 7
1.4. Spring Scheduler ...................................................................................... 9
1.5. Feign Client.............................................................................................. 10
1.6. Apache Kafka ........................................................................................... 11
1.7. Docker...................................................................................................... 13
Глава 2. Практическая часть ......................................................................... 18
2.1. Технологии .............................................................................................. 18
2.2. Контейнеризация Postgres и PgAdmin, создание базы данных.............. 18
2.3. Настройке Apache Kafka с помощью Docker.......................................... 20
2.4. Создание микросервисов........................................................................ 22
2.4.1. Alpha..................................................................................................... 23
2.4.2. Beta ....................................................................................................... 24
2.4.3. Gamma.................................................................................................. 25
2.5. Взаимодействие микросервисов............................................................. 27
Заключение.................................................................................................... 28
Список использованных источников............................................................. 29
Приложение 1. Код контроллера Alpha......................................................... 30
3
ВВЕДЕНИЕ
1.7. Docker
2.1. Технологии
2.4.1. Alpha
@ Service
@ Re quired Args
Con s tructor
public class Alph a Kafk a Prod u cer {
5
private final Kafka Template < String , Message Dto >
kafka Template ;
@ Component
@ Re quired Args Co nstruc tor
public class Alph a Sched u ler
{
5 private final Alpha Kafk a Produ cer producer ;
2.4.2. Beta
Приложение beta реализует CRUD (см. Приложение 1), Kafka listener (рис.
2.15), отправку сообщения приложению gamma через feign client (рис. 2.16).
Для реализации данного функционала в файл конфигурации
application.yml должен содержать такие характеристики как: порт, на котором
работает приложение
26
server :
port : 8080
spring :
5 datasource :
username : postgres
url : jdbc : postgresql :// localhost :5432 / postgres
password : postgres
kafka :
10 bootstrap - servers : localhost :29092 , localhost
:29093 consumer :
group - id : app
auto - offset - reset : earliest
key - deseriali zer : org . apache . kafka . common . s erialization .
String Deseriali z er
15 value - deserial izer : org . s pring fram ework . kafka .
support . seriali zer . Json Des eriali zer
spring :
kafka :
consumer :
properties :
20 spring :
json :
trusted :
packages =*:
25 listener :
ack - mode : record
2.4.3. Gamma
@ Service
@ Req uired Args
Co nstruc tor @ Enab le Kafka
5 publi c class Beta Kafk a Liste ne r {
private final Beta F eign Serv ice Util be ta F eign Serv ice
10 Util ;
@ Feign Clien t ( value = " Beta Feign " , url = " localhost :8086/
gamma ")
public interface Beta Feign Servic e Util {
Рис.2.17
28
2.19, 2.20).
Рис.2.18. Offset Explorer: сообщения присланные в beta-topic
ЗАКЛЮЧЕНИЕ
Приложение 1
Код контроллера Alpha
@ RestCo ntroll er
@ Re que stM app ing ("/beta")
@ Re quired Args
Con s tructor
5 publi c class Beta Controll er {
15 @ GetMapping ("/get-by-id/{id}")
public Response Entity < BetaData > find Data By Id ( @ Path
Variable ("id") Long id ) {
try {
Beta Data result = beta Service . find By Id ( id );
20 return new Response Entity < >( result , Ht tp Status . OK )
;
} catch ( Exception e) {
return new Response Entity < >( null , Htt p Status .
NOT_ FOUND );
}
}
25
@ PostMapp ing ("/save")
publ ic Response Entity < BetaData > save Data ( @ RequestBody
Beta Data data ) {