Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Строим плот - Как не утонуть в данных

335 views

Published on

Презентация подготовлена по материалам выступления Дениса Кравченко на Vitebsk Archi Meetup (26.02.2014). http://devowl.org/

Published in: Software
  • Login to see the comments

Строим плот - Как не утонуть в данных

  1. 1. Who is who • Денис • EPAM Systems • Ведущий JEE-разработчик
  2. 2. Agenda • Архитектура «Producer/Consumer» • Публикация данных • Publishing Tool • Dead message workflow
  3. 3. Потому что зоопарк • Зоопарк источников данных • Зоопарк хранилищ данных • Независимые наборы данных • Распределенная инфраструктура • Различные сценарии работы
  4. 4. Publishing System
  5. 5. Архитектура «Producer/Consumer» PRODUCER CONSUMER 220
  6. 6. Используемые технологии • JMS • Apache Camel • Apache ActiveMQ • Apache Thrift
  7. 7. 1 Пересылать сообщение на конкретные окружение/датасет/хранилище Проблема
  8. 8. Region Coherence Region Oracle PROD-1 Vehicle Coherence Vehicle HBase Inventory Solr Inventory Oracle Dealer Solr Dealer Oracle Region Coherence Region Oracle QA-1 Vehicle Coherence Vehicle HBase Inventory Solr Inventory Oracle Dealer Solr Dealer Oracle
  9. 9. JMS
  10. 10. 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
  11. 11. 2 Проблема PRODUCER CONSUMER CONSUMER
  12. 12. PRODUCER CONSUMER CONSUMER CONSUMER 2 Проблема ?
  13. 13. PRODUCER CONSUMER CONSUMER CONSUMER 2 Решение ?
  14. 14. PRODUCER CONSUMER CONSUMER CONSUMER 2 Решение ?
  15. 15. TOPIC QUEUE QUEUE QUEUE PRODUCER CONSUMER CONSUMER CONSUMER VIRTUAL TOPIC
  16. 16. 3 Проблема TOPIC QUEUE QUEUE QUEUE PRODUCER VIRTUAL TOPIC OK FAIL FAIL CONSUMER 1 CONSUMER 2 CONSUMER 3
  17. 17. 3 Решение TOPIC QUEUE QUEUE QUEUE PRODUCER VIRTUAL TOPIC OK CONSUMER 1 CONSUMER 2 CONSUMER 3 DestinationInterceptor
  18. 18. 4 Проблема void doMagic(); void doNothing(); int return42(); MESSAGE ?
  19. 19. 3 Apache Camel + Thrift Решение
  20. 20. RECEIVER SERVICE void doMagic(); void doNothing(); int return42(); CAMEL ROUTE executeThrift(); THRIFT BODY JMS message THRIFT PROCESSOR THRIFT PROCESSOR void doMagic(); void doNothing(); int return42(); THRIFT PROCESSOR findProcessor ProcessFunc ProcessFunc ProcessFunc CONSUMER CONSUMER
  21. 21. Apache Thrift
  22. 22. Apache Thrift namespace java com.example.counter.thrift.gen service CounterService { oneway void increment(1:i32 value) } Содержимое файла example.thrift:
  23. 23. 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 } }
  24. 24. Publishing Tool (Shasta)
  25. 25. Dead message workflow
  26. 26. А если «что-то не так»? 1) Dead queue на брокере 2) Dead-message-consumer 3) MongoDB 4) Dead-message-producer
  27. 27. Итого 15 окружений 44 уникальных наборов данных 73 консьюмера # # #

×