Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Data Streaming für Cloud Natives

Data Streaming für Cloud Natives

F029ec9c798e4dc447cab5e76f62fa17?s=128

Nicolas Byl

May 04, 2017
Tweet

Transcript

  1. 1 DATA STREAMING FÜR CLOUD NATIVES building IoT 2017 Nicolas

    Byl, codecentric AG
  2. 2 . 1 Stream Processing, anyone?

  3. 2 . 2 Spring Cloud Dataflow

  4. 3 . 1 PROCESSING MODELL

  5. 3 . 2 Streams kleinste Einheit von Spring Cloud Dataflow

    Verarbeitungsstrecke
  6. 3 . 3 Stream Struktur Source als Datenquelle Multiple Processor

    Instanzen für nachfolgende Verarbeitungsschritte Sink als Ende der Verarbeitungskette
  7. None
  8. 3 . 4 3 . 5 Verarbeitung Jeder Instanz der

    Verarbeitungskette ist eine Spring Boot Applikation Pufferung zwischen Verarbeitungsschritten in Queue Pull Mechanismus für nächste Datensatz
  9. 3 . 6 Queueing

  10. 4 . 1 ARCHITEKTUR

  11. None
  12. 4 . 2 4 . 3 Building Blocks Spring Boot

    Spring Integration Spring Batch
  13. 4 . 4 Deployables Spring Boot Applikationen Spring Cloud Stream

    Starters Spring Cloud Stream Spring Cloud Task
  14. 4 . 5 Deployer Spring Cloud Deployer - SPI

  15. 4 . 6 Interfaces Command Line Interface Dashboard Flo Editor

    REST
  16. 5 . 1 BUILDING STREAMS

  17. 5 . 2 Command Line Interface Definition und Management der

    vorhandenen Streams DSL zur Verkettung von Applikation mittels |
  18. 5 . 3 Beispiel 1: Ticktack stream create --name ticktock

    --definition "time | log" --deploy
  19. 5 . 4 Beispiel 2: HTTP-Request stream create --name test

    --definition "http | log" stream deploy test --properties "app.http.spring.cloud.deployer.kubernetes.c http post --target http://<IP>:8080 --data "Hello"
  20. 5 . 5 Grafischer Editor

  21. 6 . 1 CUSTOM APPLICATIONS

  22. 6 . 2 Programmiermodell - Spring Cloud Stream Source, Sink

    & Processor sind normale Spring Beans Kopplung an Spring Integration Binding an den jeweiligen Typen Abstraktion des Queueing Providers durch das Framework
  23. 6 . 3 Beispiel 1: Direkte Bearbeitung in der Beans

    @EnableBinding(Processor.class) public class TransformProcessor { @Autowired VotingService votingService; @StreamListener(Processor.INPUT) @SendTo(Processor.OUTPUT) public VoteResult handle(Vote vote) { return votingService.record(vote); } }
  24. 6 . 4 Beispiel 2: Spring Integration als Source @EnableBinding(Source.class)

    public class TimerSource { @Value("${format}") private String format; @Bean @InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedDelay public MessageSource<String> timerMessageSource() { return () -> new GenericMessage<>(new SimpleDateFormat(format).format( } }
  25. 6 . 5 Beispiel 3: Reative Processor @EnableRxJavaProcessor public class

    RxJavaTransformer { private static Logger logger = LoggerFactory.getLogger(RxJavaTransformer @Bean public RxJavaProcessor<String,String> processor() { return inputStream -> inputStream.map(data -> { logger.info("Got data = " + data); return data; }) .buffer(5) .map(data -> String.valueOf(avg(data))); } [...] }
  26. 7 . 1 BEISPIELE

  27. 7 . 2 Beispiel 3: Twitter Analyse stream create --name

    twitter-demo --definition "twitterstream --twitter.credentials.consumer-key=<...> [..] | field-value-counter --field-value-counter.fieldName=entities.hashtags.text --field-value-counter.name=hashtags"
  28. 8 . 1 ZUSAMMENFASSUNG

  29. 8 . 2 Andere Anwendungen Analytics Monitoring CRM ...

  30. 8 . 3 The End Copyright 2017