tasty topics
play

Tasty Topics! Novel approaches using Topic Filtering - PowerPoint PPT Presentation

Tasty Topics! Novel approaches using Topic Filtering michael.hussey@solace.com dev.solace.com https://www.linkedin.com/in/michael-hussey Pub/Sub revision Distributed Decoupled Fan-in/Fan-out Persistence Register interest in


  1. Tasty Topics! Novel approaches using Topic Filtering

  2. michael.hussey@solace.com dev.solace.com https://www.linkedin.com/in/michael-hussey

  3. Pub/Sub revision • Distributed • Decoupled • Fan-in/Fan-out • Persistence • Register interest in Topic Image credit: pubnub.com

  4. Topics Topic ≠ "#$! food/apple/slices food_apple_slices */*/slices List {food_apple_slices, food_ham_slices} => String search? food/apple/slices food/ham/slices

  5. Who Cares? • Simpler • Consistent • Reduces unnecessary data copies – E.g. In IoT reduces unnecessary sensor reads

  6. Use Case 1 Migrating Your Data Format

  7. Case 1: Migrating Your Data Format { { “Person” : “Tom”, “Employee” : “Team” : “Magicians”, [“Id” : “0000732006”, “Mobile” : “07746 244422”, “Name” : “Tom Fairbairn”, “EmployeeId” : 6 “PhoneNum” : “+44(0)7746244422”, } “DirectReports”: [], ”ReportsTo”: “Ben Taieb” ] }

  8. CI/CD Build Test Release “Employee” : [“Id” : “0000732006”, “Name” : “Tom Fairbairn”, Tag

  9. Data Format – read/write Gson gson = new Gson(); empolyeeData = gson.fromJson(data, employee.class); public class employee { public class employee { private String Person; private class employeeData { private String Team; private String Id; private String Mobile; private String Name; public int EmployeeId; private String PhoneNum; … private String[] DirectReports; } private String ReportsTo; } … } Tag: v1.0 Tag: v2.0

  10. Data Format topic private String versionedTopic = “london/employee/json/$GIT_TAG_NAME/[…]”; session.subscribe(versionedTopic); producer.send(message, versionedTopic);

  11. Use Case 2 Monitoring

  12. Monitoring

  13. A quick diversion https://ip/endpoint Websockets

  14. A quick diversion -again V 1 V 5 V 3

  15. Pub/Sub Monitoring over Pub/Sub! Monitoring/Management API Pub/Sub ReST MQTT Any app Monitoring app

  16. Use Case 3 Replay

  17. Case 3: Replay/Event-streaming DB Dealing with shared state DB DB – Ployglot persistence? – Replay “state of the world” from message stream DB DB DB DB DB DB DB DB

  18. Replay – queues that can subscribe app/control app/config Queue data/app/… • Queue Browser • TTL • LVQ

  19. Use Case 4 Authorisation

  20. Case 4: Authorisation On Behalf Of Pub/Sub 1. Request: log-in 2. Service calculates subscriptions Subscription Application 3. Service applies subscriptions manager for app 4. Reply with OK 5. App receives matching data

  21. On Behalf Of • Client has no awareness of topics/services – No chance to guess other services – No work/exposure at client • Fully pluggable architecture

  22. Authorisation Pub/Sub 1. Request account balance 2. Service calculates subscriptions Any app Subscription app 3. Service subscribes for app 4. App receives matching data

  23. Use Case 5 Find the nearest… Geo-location using topics

  24. Case 2:Find The Nearest… In Real Time Source: ICOMP 2016, A.L. Lee, Ranged Filtering of Streaming Numeric Data… using Topic-Based Pub/Sub Messaging

  25. Geo-filtering topic Publish to topic with location: <app>/<type>/<lat>/<long>/<vehicle>/<id> geo/sim/51.520150/-00.097330/CAR/00021 Where is CAR00021? subscribe(“geo/sim/*/*/CAR/00021”);

  26. Geo-filtering location subscribe(“geo/sim/51.52015*/-00.09733*/>”); Match: lat 51.520150 to 51.520159 long -000.097330 to -000.097339

  27. Geo-filtering location subscribe(“geo/sim/51.52*/-00.09*/>”); Match: lat 51.520 to 51.529999 long -0.090 to -0.099999

  28. Geo-filtering location subscribe(“geo/sim/51.52*/-00.09*/>”, “geo/sim/51.516*/-00.092*/>”, “geo/sim/51.516*/-00.093*/>”, “geo/sim/51.516*/-00.094*/>”, “geo/sim/51.516*/-00.096*/>”, “geo/sim/51.517*/-00.092*/>”, “geo/sim/51.517*/-00.093*/>”, “geo/sim/51.517*/-00.094*/>”, “geo/sim/51.517*/-00.096*/>”, // repeat for 51.518 and .519 );

  29. Geo-filtering location • Create any polygon – Accuracy at metre level – Circles, arcs… • Subscriptions generated once • Matches then stream in with no extra computation

  30. Geo-filtering location algorithm Divide space into rectangles aligned to subscriptions • Throw away rectangles with no match •

  31. Geo-filtering location algorithm Repeat: divide remaining rectangles by 10 • Throw away rectangles with no match •

  32. Geo-filtering location algorithm deployment • Library? Pub/Sub 1. Request subscriptions for shape 2. Service calculates subscriptions Geo-filtering app Subscription app 3. Service subscribes for app 4. App receives matching data

  33. Use Case 6 Addressing millions of things… IOT at scale using topics

  34. IOT Edge to Core connectivity For IoT at scale, a 2 tier o architecture is applied JMS Phone backend / out/phone/dev123/status Subscribe Publish URL: The connection layer out/> o Topic: out/phone/> terminates device REST device_id:dev123 connections and is “wide Type: Phone out/> and shallow” AMQP s Box backend u Subscribe : c t p i a o t / s T 6 h s 5 i 4 Topic: l v b e u d P / x o The core application layer b o / out/box/> t u o Load Balancer MQTT out/> aggregates and queues device_id:dev456 Type: Box, home data and is “narrow and MQTT Subscribe: deep”, and communicates out/> with business logic and … > / analytics applications t u o MQTT JMS Subscribe Queue: Publish Topic: (Load Balanced) device_id:dev789 out/car/dev4789/status out/> Type: Car Connection Layer Application Layer

  35. MEP:Device to Cloud, In Only Publish topics/URLs should have the chosen o 1 namespace for “out” for out from devices, 3 “in” as in to devices, or other similar/multiple JMS Phone backend verbs / out/phone/dev123/status Subscribe Publish URL: out/> Topic: Messages land at the connection layer o out/phone/> REST message broker device_id:dev123 2 1 Type: Phone The connection layer message broker is o 2 AMQP bridged to the application layer broker out/box/dev456/status Box backend Subscribe Publish Topic: o u t / > Topic: “out/>” or any other relevant topics are o out/box/> Load Balancer mapped to bridges for the data to flow from MQTT > / t u o connection tier to application tier. Any other device_id:dev456 1 verbs/with more levels, wildcards, static Type: Box, home subscriptions can be used for more MQTT Subscribe: sophisticated routing/filtering out/> 4 The Core Application message brokers deliver … o 3 > / t messages to backend systems based on their u o subscriptions (note the phone and box 4 MQTT JMS Subscribe Queue: wildcards). Publish Topic: (Load Balanced) device_id:dev789 out/car/dev789/status out/> Type: Car 5 1 5 Connection Layer Application Layer

  36. MEP: Device to Cloud request reply Publish topics/URLs should have the chosen Listen URL: / in/phone/dev123/reply o 1 namespace for “out” for out from devices, 3 “in” as in to devices, or other similar/multiple JMS Phone backend Subscribe Topic: verbs / out/phone/dev123/request Publish URL: out/phone/*/request Publisher publishes the request message on o REST Publish Topic: the show topic. Messages land at the in/phone/dev123/reply device_id:dev123 2 connection layer message broker 1 Type: Phone 3 The connection layer broker is bridged to the o : 2 c p i Box backend o T e b > application layer message broker bi- r i / c 6 s 5 b 4 u v S e d / x directionally o b / n i t s Load Balancer e MQTT c : u i q p e o T / r 6 h s 5 i 4 b l v The request is routed to the appropriate u e o device_id:dev456 d P / x 3 o b / t u o subscribing backend system Type: Box, home 1 The backend system replies using the reply o destination sent in the request. This ensures MQTT Subscribe: … the reply is routed to the sending device in/> 4 1 The same information, which is going to the o 4 MQTT devices can also be captured for analytics and JMS Subscribe Queue: Subscribe Topic: (Load Balanced) device_id:dev789 audit by passive listeners such as Hadoop and in/car/dev789/> in/>,out/> Spark over various protocols Type: Car 4 Publish Topic: out/car/dev789/request Connection Layer Application Layer

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