the architecture of wemlin hub
play

The Architecture of Wemlin Hub Ognen Ivanovski, Netcetera Jug.ch - PowerPoint PPT Presentation

The Architecture of Wemlin Hub Ognen Ivanovski, Netcetera Jug.ch 15 Wemlin Data Data Planning Software Planning Software AVCS AVCS Wemlin Hub g Wemlin Hub Plan Data transport schedule (plan) over certain time package in nature


  1. The Architecture of Wemlin Hub Ognen Ivanovski, Netcetera Jug.ch ‘15

  2. Wemlin

  3. Data

  4. Data Planning Software

  5. Planning Software

  6. AVCS

  7. AVCS

  8. Wemlin Hub

  9. g Wemlin Hub

  10. Plan Data transport schedule (plan) over certain time package in nature Formats: HAFAS, GTFS, VDV 453 REF, VDV 454 REF, REST

  11. RT Streams updates on planned data stream in nature Formats: GTFS RT, VDV-453, VDV-454, REST

  12. Getting Data different protocols & implementations remote system availability issues

  13. Figuring things out different sources, no referential guarantees every data source is different data quality issues Example: station refeferences Example: trip references

  14. Data Enrichment line colors location station metadata (e.g. which lines stop there, which stations are near by)

  15. Serve many users

  16. Key Concerns RT Batch low latency throughput throughput available excllent failure management

  17. Key Concerns processing programs the same for both batch and RT data

  18. Key Concerns fast reaction to load changes

  19. Architecture Constraints decisions hard to change

  20. Microkernel Architectural Style

  21. tap filter transform aggregate sink

  22. tap sink

  23. filter public interface Filter { boolean accept(Object obj); } stateless

  24. transform public interface Transformer { Object transform(Object original); } stateless

  25. aggregate public interface Aggregator { Optional<?> aggregate(Object obj); }

  26. Composition pipeElement = PipelineBuilder.from(gtfsInputJunction()) .transform(new StoppingPlaceResolver()) .filter(new InvalidStopsFilter()) .transform(new UnresolvedLineVehicleTypeAdder()) .transform(new UnresolvedLineNameAdjuster()) .transform(new LineResolver()) .transform( new LineColorsEnricher(...)) .aggregate(new CacheAggregator(cache())) .to(nullSink());

  27. Model immutable : model objects are values (changing means a new object) algebraic : each object identity is defined by it's contents. pure : in the sense of no external dependencies

  28. Stop Projection Stopping Trip Line Place Station Schedule

  29. Architecture Model Pipeline Pure Java Functional Microkernel Immutable Filter (stateless, pure function) Algebraic Transformer (stateless, pure function) Inverse References Aggregator (stateful, function) Sink (consumer) / Tap (producer)

  30. pipeElement = PipelineBuilder.from(gtfsInputJunction()) .transform(new StoppingPlaceResolver()) .filter(new InvalidStopsFilter()) .transform(new UnresolvedLineVehicleTypeAdder()) .transform(new UnresolvedLineNameAdjuster()) .transform(new LineResolver()) .transform( new LineColorsEnricher(...)) .aggregate(new CacheAggregator(cache())) .to(nullSink());

  31. pipeline “compile” assembly

  32. Assemblies Spring Integration based Thread-pool based Fork-join based

  33. Segments parallel / serial separated by queues segmentation based on the used interfaces

  34. Fork-Join to be effective, one must batch batching introduces latency (in RT) trick batch mode RT mode

  35. Memoization at construction time Problem: immutable objects —> lots of created objects @DesignatedFactoryMethod AspectJ runtime weaver

  36. backends frontend hornet

  37. Scaling

  38. Storage In-memory custom store replacable just an Aggregator makes blue-green deployments a beeze

  39. Wins Constraint Gain immutable model execution stragety freedom algebraic model parallelism Inverse references scalability controlled state memoization at constructor time (functional) microkernel style cacheability composability

  40. Wins Constraint Gain immutable model execution stragety freedom algebraic model parallelism Inverse references scalability controlled state memoization at constructor time (functional) microkernel style cacheability composability

  41. Wins Constraint Gain immutable model execution stragety freedom algebraic model parallelism Inverse references scalability controlled state memoization at constructor time (functional) microkernel style cacheability composability

  42. Wins Constraint Gain immutable model execution stragety freedom algebraic model parallelism Inverse references scalability controlled state memoization at constructor time (functional) microkernel style cacheability composability

  43. Wins Constraint Gain immutable model execution stragety freedom algebraic model parallelism Inverse references scalability controlled state memoization at constructor time (functional) microkernel style cacheability composability

  44. Wins Constraint Gain immutable model execution stragety freedom algebraic model parallelism Inverse references scalability controlled state memoization at constructor time (functional) microkernel style cacheability composability

  45. Architecture is Important It’s the set of constraints you choose for your system It how those constraints work in concert It happens on a smaller scale than you usually think

  46. Acknowledgments Clojure 
 (especially Rich Hickey’s talk on values, state and identity) Lamina 
 https://github.com/ztellman/lamina Apache Storm 
 https://storm.incubator.apache.org Casading 
 http://www.cascading.org Akka 
 http://akka.io

  47. Thank You ? ognen.ivanovski@netcetera.com @ognenivanovski

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend