Περατζάδα στο Event Hub
Παναγιώτης Καναβός, dotNETZone moderator
Η περίπτωση Netflix
• The Netflix microservices
architecture is a metrics
generator that occasionally
streams movies
• 750 Bn metrics/μέρα
• 300 Bn app events/μέρα
• Πως πάμε σήμερα παιδιά?
Πως το κάνουν?
• Event ingestion με Kafka κ.α.
• Επεξεργασία με RxJava
• Ναι, τα Reactive Extensions είναι!
• Προώθηση σε επόμενα βήματα
Όποιος τρώει ξανατρώει
• Σπάσιμο σε βήματα αντί για
περίπλοκη επεξεργασία
• Σταδιακές ομαδοποιήσεις
The Old New Thing
• Event Stream Processing/Complex Event Processing
• Ερευνητικό πεδίο το 1990
• The next big thing το 2005+
• Apama 2005
• Esper 2006
• Event Processing Patterns, Gartner, 2009
• SQL Server StreamInsight 2010
Unified Log Processing
• Τι είναι
• Συλλογή των log όλων των συστημάτων σε ένα σημείο
• Αποθήκευση σε «αρχική» μορφή
• Επεξεργασία με Hadoop/Spark/ElasticSearch για εξαγωγή metrics, συμπερασμάτων
• Εξαγωγή μετρήσεων σε Data Warehouse, παραγωγή reports κλπ
• Μικρή παρεκτροπή
• Ευτυχώς είχαμε ESP 
Τι άλλαξε ?
• Αντί για περίπλοκα γεγονότα, πολλά γεγονότα
• Αντί για BPM, IoT και Ops
• Syslog από το RPi ή το ESP8266?
• UDP message για κάθε καρέ του Continuum ?
Κι εμένα τι με νοιάζει?
• Θέλω να τρέξω υπηρεσία IoT, όχι να κάνω διδακτορικό
• Θέλω να ξέρω ότι οι καφετιέρες μου θα χαλάσουν πριν χαλάσουν!
• Αστείο? Ford Sync κανείς?
• Θέλω να ξέρω τι γίνεται στο e-Shop μου, όχι να μασάω logs!
• Έχεις δει πόσο πάει το Splunk?
• Θέλω να ξέρω ότι κάποιοι πελάτες της B2B εφαρμογής μου έχουν
πρόβλημα ΠΡΙΝ ακυρώσουν το συμβόλαιο.
• Με ταράξανε οι screen scrapers!
Event Hub – Μέλος ευυπόληπτης οικογένειας
Event Hub
Event Hub
Partition
Partition
Partition
Partition
Events
Consumer
Group
Consumer
Group
Cold
Storage
Event
Processor
Event
Processor
Event
Processor
Event
Processor
Χαρακτηριστικά
• Πρωτόκολλα
• AMQP
• HTTP
• MQTT
• Custom Gateway
Stream Analytics
• SQL-based stream data processing
• Windowing functions
• Low Latency
• Πολλά output targets
Τι θα παίξουμε σήμερα?
Outputs
• SQL Database
• Blob storage
• Table Storage
• Service Bus Queue
• Service Bus Topic
• Document DB
• Data Lake
• Power BI
• Event Hub
Windows
• Χρονική ομαδοποίηση event
• Απαραίτητο για την
• Επικάλυψη?
• Tumbling
• Hopping
• Sliding
• Παρκούρ ?
Tumbling Window
• Καμία επικάλυψη
• TUMBLINGWINDOW(timeunit ,windowsize,[offsetsize])
• TUMBLINGWINDOW(minute ,5)
Hopping Window
• Επικαλυπτόμενα
• HOPPINGWINDOW(timeunit ,windowsize, hopsize,[offsetsize])
• HOPPININGWINDOW(minute ,10,5)
Sliding Window
• Όλοι οι δυνατοί συνδυασμοί με επικάλυψη
• SLIDINGWINDOW (timeunit ,windowsize )
Ζόρικα Queries – Fraud Detection
SELECT
System.Timestamp as Time,
CS1.CallingIMSI, CS1.CallingNum as CallingNum1, CS2.CallingNum as CallingNum2,
CS1.SwitchNum as Switch1,
CS2.SwitchNum as Switch2
FROM
CallStream CS1 TIMESTAMP BY CallRecTime
JOIN CallStream CS2 TIMESTAMP BY CallRecTime
ON CS1.CallingIMSI = CS2.CallingIMSI
AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5
WHERE CS1.SwitchNum != CS2.SwitchNum
Ζόρικα Queries – Διάρκεια σφάλματος
SELECT
LAG(time) OVER (LIMIT DURATION(hour, 24) WHEN weight < 20000 ) [StartFault],
[time] [EndFault]
FROM input
WHERE
[weight] < 20000
AND LAG(weight) OVER (LIMIT DURATION(hour, 24)) > 20000
Σφάλμα στην πλάστιγγα βγάζει το βάρος των αυτοκινήτων > 20 τόνους.
Και η Amazon ?
• Kinesis Firehose
• Φόρτωμα Streaming Data
• Kinesis Streams
• Custom Processing. Συνδιασμός
Event Processor και Stream Jobs
(output)
• Kinesis Analytics
• Θα είναι αντίστοιχο του Stream
Analytics
• Περισσότερο IaaS παρά PaaS
Κοινά Patterns
• Think big, start small
• Η αρχιτεκτονική θα πρέπει να καλύπτει μεγάλους όγκους αλλά
• Ξεκινήστε με μικρά δείγματα
• Ευκολότερο debugging όταν είναι λίγα τα events!
• Don’t interrupt the fast Path!
• Μην μπλοκάρετε το fast path με επεξεργασίες, ETL. Αυτό γίνεται και μετά.
• Data Lake!
• Βασιστείτε στο IoT Reference Architecture
• Τα υποσυστήματα «κουμπώνουν» σε αυτή την αρχιτεκτονική
Azure IoT Reference Architecture
Solution PortalProvisioning API
Identity & Registry Stores
Stream Event Processor
Analytics/
Machine
Learning
Data Visualization
& Presentation
Device State Store
Gateway
Storage
IP capable
devices
Existing IoT
devices
Low power
devices
PresentationDevice and Event Processing
Data
Transport
Devices and
Data Sources
Cloud
Gate-
way
Agent
Libs
Agent
Libs
Control System Worker Role
Agent
Libs
Αγοράζω ή φτιάχνω ?
Αγοράζω
• Δεν έχω Bn/μέρα
• Τα αποτελέσματα πιο σημαντικά από το
κόστος
• Τώρα ξεκινάω
• Δεν έχω διδακτορικό στο CEP
• Δεν θέλω να διαχειριστώ το infrastructure
Φτιάχνω
• Έχω πολύ μεγάλους όγκους (Bn/day)
• Ξέρω τι θέλω
• Είδη πληροφορίας, ερωτήσεις, ειδοποιήσεις
• Ξέρω τι κάνω
•  Έχω PhD
•  Διάβασα ένα white paper
• Καλή Γνώση των διαθέσιμων συστημάτων
• Storm, Spark, Kafka, Docker, Mesos, Kubernetes
• Διαχειρισιμότητα
• Μεγάλη ομάδα, χρηματοδότηση, χρόνος

Περατζάδα στο Azure Event Hub

  • 1.
    Περατζάδα στο EventHub Παναγιώτης Καναβός, dotNETZone moderator
  • 2.
    Η περίπτωση Netflix •The Netflix microservices architecture is a metrics generator that occasionally streams movies • 750 Bn metrics/μέρα • 300 Bn app events/μέρα • Πως πάμε σήμερα παιδιά?
  • 3.
    Πως το κάνουν? •Event ingestion με Kafka κ.α. • Επεξεργασία με RxJava • Ναι, τα Reactive Extensions είναι! • Προώθηση σε επόμενα βήματα
  • 4.
    Όποιος τρώει ξανατρώει •Σπάσιμο σε βήματα αντί για περίπλοκη επεξεργασία • Σταδιακές ομαδοποιήσεις
  • 5.
    The Old NewThing • Event Stream Processing/Complex Event Processing • Ερευνητικό πεδίο το 1990 • The next big thing το 2005+ • Apama 2005 • Esper 2006 • Event Processing Patterns, Gartner, 2009 • SQL Server StreamInsight 2010
  • 6.
    Unified Log Processing •Τι είναι • Συλλογή των log όλων των συστημάτων σε ένα σημείο • Αποθήκευση σε «αρχική» μορφή • Επεξεργασία με Hadoop/Spark/ElasticSearch για εξαγωγή metrics, συμπερασμάτων • Εξαγωγή μετρήσεων σε Data Warehouse, παραγωγή reports κλπ • Μικρή παρεκτροπή • Ευτυχώς είχαμε ESP 
  • 7.
    Τι άλλαξε ? •Αντί για περίπλοκα γεγονότα, πολλά γεγονότα • Αντί για BPM, IoT και Ops • Syslog από το RPi ή το ESP8266? • UDP message για κάθε καρέ του Continuum ?
  • 8.
    Κι εμένα τιμε νοιάζει? • Θέλω να τρέξω υπηρεσία IoT, όχι να κάνω διδακτορικό • Θέλω να ξέρω ότι οι καφετιέρες μου θα χαλάσουν πριν χαλάσουν! • Αστείο? Ford Sync κανείς? • Θέλω να ξέρω τι γίνεται στο e-Shop μου, όχι να μασάω logs! • Έχεις δει πόσο πάει το Splunk? • Θέλω να ξέρω ότι κάποιοι πελάτες της B2B εφαρμογής μου έχουν πρόβλημα ΠΡΙΝ ακυρώσουν το συμβόλαιο. • Με ταράξανε οι screen scrapers!
  • 9.
    Event Hub –Μέλος ευυπόληπτης οικογένειας
  • 10.
  • 11.
  • 12.
    Stream Analytics • SQL-basedstream data processing • Windowing functions • Low Latency • Πολλά output targets
  • 13.
  • 14.
    Outputs • SQL Database •Blob storage • Table Storage • Service Bus Queue • Service Bus Topic • Document DB • Data Lake • Power BI • Event Hub
  • 15.
    Windows • Χρονική ομαδοποίησηevent • Απαραίτητο για την • Επικάλυψη? • Tumbling • Hopping • Sliding • Παρκούρ ?
  • 16.
    Tumbling Window • Καμίαεπικάλυψη • TUMBLINGWINDOW(timeunit ,windowsize,[offsetsize]) • TUMBLINGWINDOW(minute ,5)
  • 17.
    Hopping Window • Επικαλυπτόμενα •HOPPINGWINDOW(timeunit ,windowsize, hopsize,[offsetsize]) • HOPPININGWINDOW(minute ,10,5)
  • 18.
    Sliding Window • Όλοιοι δυνατοί συνδυασμοί με επικάλυψη • SLIDINGWINDOW (timeunit ,windowsize )
  • 19.
    Ζόρικα Queries –Fraud Detection SELECT System.Timestamp as Time, CS1.CallingIMSI, CS1.CallingNum as CallingNum1, CS2.CallingNum as CallingNum2, CS1.SwitchNum as Switch1, CS2.SwitchNum as Switch2 FROM CallStream CS1 TIMESTAMP BY CallRecTime JOIN CallStream CS2 TIMESTAMP BY CallRecTime ON CS1.CallingIMSI = CS2.CallingIMSI AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5 WHERE CS1.SwitchNum != CS2.SwitchNum
  • 20.
    Ζόρικα Queries –Διάρκεια σφάλματος SELECT LAG(time) OVER (LIMIT DURATION(hour, 24) WHEN weight < 20000 ) [StartFault], [time] [EndFault] FROM input WHERE [weight] < 20000 AND LAG(weight) OVER (LIMIT DURATION(hour, 24)) > 20000 Σφάλμα στην πλάστιγγα βγάζει το βάρος των αυτοκινήτων > 20 τόνους.
  • 21.
    Και η Amazon? • Kinesis Firehose • Φόρτωμα Streaming Data • Kinesis Streams • Custom Processing. Συνδιασμός Event Processor και Stream Jobs (output) • Kinesis Analytics • Θα είναι αντίστοιχο του Stream Analytics • Περισσότερο IaaS παρά PaaS
  • 22.
    Κοινά Patterns • Thinkbig, start small • Η αρχιτεκτονική θα πρέπει να καλύπτει μεγάλους όγκους αλλά • Ξεκινήστε με μικρά δείγματα • Ευκολότερο debugging όταν είναι λίγα τα events! • Don’t interrupt the fast Path! • Μην μπλοκάρετε το fast path με επεξεργασίες, ETL. Αυτό γίνεται και μετά. • Data Lake! • Βασιστείτε στο IoT Reference Architecture • Τα υποσυστήματα «κουμπώνουν» σε αυτή την αρχιτεκτονική
  • 23.
    Azure IoT ReferenceArchitecture Solution PortalProvisioning API Identity & Registry Stores Stream Event Processor Analytics/ Machine Learning Data Visualization & Presentation Device State Store Gateway Storage IP capable devices Existing IoT devices Low power devices PresentationDevice and Event Processing Data Transport Devices and Data Sources Cloud Gate- way Agent Libs Agent Libs Control System Worker Role Agent Libs
  • 24.
    Αγοράζω ή φτιάχνω? Αγοράζω • Δεν έχω Bn/μέρα • Τα αποτελέσματα πιο σημαντικά από το κόστος • Τώρα ξεκινάω • Δεν έχω διδακτορικό στο CEP • Δεν θέλω να διαχειριστώ το infrastructure Φτιάχνω • Έχω πολύ μεγάλους όγκους (Bn/day) • Ξέρω τι θέλω • Είδη πληροφορίας, ερωτήσεις, ειδοποιήσεις • Ξέρω τι κάνω •  Έχω PhD •  Διάβασα ένα white paper • Καλή Γνώση των διαθέσιμων συστημάτων • Storm, Spark, Kafka, Docker, Mesos, Kubernetes • Διαχειρισιμότητα • Μεγάλη ομάδα, χρηματοδότηση, χρόνος