Строим плот - Как не утонуть в данных
TRANSCRIPT
![Page 1: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/1.jpg)
![Page 2: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/2.jpg)
Who is who
• Денис
• EPAM Systems
• Ведущий JEE-разработчик
![Page 3: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/3.jpg)
Agenda
• Архитектура «Producer/Consumer»
• Публикация данных
• Publishing Tool
• Dead message workflow
![Page 4: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/4.jpg)
![Page 5: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/5.jpg)
![Page 6: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/6.jpg)
Потому что зоопарк
• Зоопарк источников данных
• Зоопарк хранилищ данных
• Независимые наборы данных
• Распределенная инфраструктура
• Различные сценарии работы
![Page 7: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/7.jpg)
Publishing System
![Page 8: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/8.jpg)
Архитектура «Producer/Consumer»
PRODUCER CONSUMER
220
![Page 9: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/9.jpg)
Используемые технологии
• JMS
• Apache Camel
• Apache ActiveMQ
• Apache Thrift
![Page 10: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/10.jpg)
1
Пересылать сообщениена конкретные
окружение/датасет/хранилище
Проблема
![Page 11: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/11.jpg)
RegionCoherence
RegionOracle
PROD-1
VehicleCoherence
VehicleHBase
InventorySolr
InventoryOracle
DealerSolr
DealerOracle
RegionCoherence
RegionOracle
QA-1
VehicleCoherence
VehicleHBase
InventorySolr
InventoryOracle
DealerSolr
DealerOracle
![Page 12: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/12.jpg)
JMS
![Page 13: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/13.jpg)
Topic
Queue
PRODUCER TOPIC
CONSUMER #1
CONSUMER #2
CONSUMER #3
{M1, M2, M3}
{M1, M2, M3}M1
M1
M1
{M1, M2, M3}
{M1, M2, M3}
QUEUEPRODUCER
CONSUMER #1
CONSUMER #2
CONSUMER #3
{M1, M2, M3}
M1
M2
M3
M1
M2
M3
![Page 14: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/14.jpg)
2 Проблема
PRODUCER
CONSUMER
CONSUMER
![Page 15: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/15.jpg)
PRODUCER
CONSUMER
CONSUMER
CONSUMER
2 Проблема
?
![Page 16: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/16.jpg)
PRODUCER
CONSUMER
CONSUMER
CONSUMER
2 Решение
?
![Page 17: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/17.jpg)
PRODUCER
CONSUMER
CONSUMER
CONSUMER
2 Решение
?
![Page 18: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/18.jpg)
TOPIC
QUEUE
QUEUE
QUEUE
PRODUCER
CONSUMER
CONSUMER
CONSUMER
VIRTUAL TOPIC
![Page 19: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/19.jpg)
3 Проблема
TOPIC
QUEUE
QUEUE
QUEUE
PRODUCER
VIRTUAL TOPIC
OK
FAIL
FAIL CONSUMER 1
CONSUMER 2
CONSUMER 3
![Page 20: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/20.jpg)
3 Решение
TOPIC
QUEUE
QUEUE
QUEUE
PRODUCER
VIRTUAL TOPIC
OK
CONSUMER 1
CONSUMER 2
CONSUMER 3
DestinationInterceptor
![Page 21: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/21.jpg)
4 Проблемаvoid doMagic(); void doNothing(); int return42();
MESSAGE
?
![Page 22: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/22.jpg)
3
Apache Camel+
Thrift
Решение
![Page 23: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/23.jpg)
RECEIVERSERVICE void doMagic();
void doNothing();
int return42();
CAMEL ROUTE
executeThrift();
THRIFTBODY
JMS message
THRIFT PROCESSOR
THRIFT PROCESSOR
void doMagic();
void doNothing();
int return42();
THRIFT PROCESSOR
findProcessorProcessFunc
ProcessFunc
ProcessFunc
CONSUMER
CONSUMER
![Page 24: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/24.jpg)
Apache Thrift
![Page 25: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/25.jpg)
Apache Thrift
namespace java com.example.counter.thrift.gen
service CounterService {
oneway void increment(1:i32 value)
}
Содержимое файла example.thrift:
![Page 26: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/26.jpg)
Producer/Consumer
// Producer
CounterService.Client client
= new CounterService.Client(sender.getProtocol());
client.increment(1);
// Consumer
@Component("counterConsumer")
public class CounterConsumer extends AbstractDataHandler
implements CounterService.Iface {
@Override
public void increment(int value) {
// perform your business logic here
}
}
![Page 27: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/27.jpg)
Publishing Tool(Shasta)
![Page 28: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/28.jpg)
![Page 29: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/29.jpg)
![Page 30: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/30.jpg)
![Page 31: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/31.jpg)
Dead message workflow
![Page 32: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/32.jpg)
![Page 33: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/33.jpg)
А если «что-то не так»?
1) Dead queue на брокере
2) Dead-message-consumer
3) MongoDB
4) Dead-message-producer
![Page 34: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/34.jpg)
Итого
15 окружений
44 уникальных наборов данных
73 консьюмера
#
#
#
![Page 35: Строим плот - Как не утонуть в данных](https://reader033.vdocuments.site/reader033/viewer/2022051122/58ab79a11a28abb54e8b6bc7/html5/thumbnails/35.jpg)