Академический Документы
Профессиональный Документы
Культура Документы
3 курс, 3530203/00102
Дата: 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
@RequiredArgsConstructor
public class AlphaKafkaProducer {
5
private final KafkaTemplate < String , MessageDto >
kafkaTemplate ;
@Component
@RequiredArgsConstructor
public class AlphaScheduler {
5 private final AlphaKafkaProducer producer ;
2.4.2. Beta
Приложение beta реализует CRUD (см. Приложение 1), Kafka listener (рис.
2.15), отправку сообщения приложению gamma через feign client (рис. 2.16).
Для реализации данного функционала в файл конфигурации application.yml
должен содержать такие характеристики как: порт, на котором работает приложение
25
alpha, адрес и порт сервера Kafka, классы десериализаторов для ключей и значений
и данные для доступа к базе данных (рис. 2.14)
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 - deserializer : org . apache . kafka . common . serialization .
StringDeserializer
15 value - deserializer : org . springframework . kafka . support .
serializer . JsonDeserializer
spring :
kafka :
consumer :
properties :
20 spring :
json :
trusted :
packages =*:
25 listener :
ack - mode : record
2.4.3. Gamma
@Service
@RequiredArgsConstructor
@EnableKafka
5 public class BetaKafkaListener {
@FeignClient ( value = " BetaFeign " , url = " localhost :8086/ gamma
")
public interface BetaFeignServiceUtil {
Рис.2.17
27
ЗАКЛЮЧЕНИЕ
Приложение 1
Код контроллера Alpha
@RestController
@RequestMapping ( " / beta " )
@RequiredArgsConstructor
5 public class BetaController {
try {
BetaData result = betaService . findById ( id ) ;
20 return new ResponseEntity < >( result , HttpStatus . OK )
;
} catch ( Exception e ) {
return new ResponseEntity < >( null , HttpStatus .
NOT_FOUND ) ;
}
}
25
@PostMapping ( " / save " )
public ResponseEntity < BetaData > saveData ( @RequestBody
BetaData data ) {