280 likes | 423 Views
Publish-subscribe, Event brokers. INF 123 – Software architecture tdebeauv@uci.edu. Outline. Pubsub Event brokers. pubsub. Newspaper distribution. Newspaper companies publish newspapers Readers (un)subscribe to a company for a newspaper Company sends newspaper to its subscribers.
E N D
Publish-subscribe,Event brokers INF 123 – Software architecture tdebeauv@uci.edu
Outline • Pubsub • Event brokers
Newspaper distribution • Newspaper companies publish newspapers • Readers (un)subscribe to a company for a newspaper • Company sends newspaper to its subscribers
Stock exchange • Jobs wants to buy AAPL below $30 • Gates wants to buy MSFT below $40 • Buffett wants to sell MSFT and AAPL for $35 • Traders are intermediaries • Publication and subscription are decoupled • Buffett does not know who he sold to • Gates does not know who he bought from
Stock exchange 2 • NYSE provides feed of stock updates • Humongous, fast • Traders are only interested in parts of it • Need filtering
Constraints • Subscribers register their interest • Interest in a publisher, an event, or a content • Publishers generate events • Sometimes through intermediaries called message broker, or message bus, or even proxy • Usually asynchronous • Publishers don’t wait for subscribers to publish • Subscribers give a callback to be notified
Gains • Scalable one-way communication • Usually over the network • “Well adapted to the loosely coupled nature of distributed large-scale applications” [Eugster03] • Can decouple subscribers from publishers • Decoupling • Privacy • Content filtering
Request-reply vs pubsub Request-reply Pubsub Less coupled Push info • Implies client-server • Medium coupling • Pull info
More about pubsub • AKA producer-consumer • Implies message queues • Pubsub != client-server
Pubsub + space partitioning = scale http://www.cescg.org/CESCG-2000/JKrivanek/
But … • What if everyone subscribes to one item? • BarackObama: 43M followers on Twitter • Bandwidth limits, slower updates • Can/should cache • What if everyone subscribes to everything? • Then Pubsub is probably not the right style
Apple Push Notifications http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
Apple Push Notifications • Subscription • Device token = content of interest • Delivered by APNS, for security – why? • Notification • APNS intermediary between appServer and appClient • For privacy – why?
Zoom-in/out • Zoom on a region of the board • Useful with a million small pieces • Originally client-side • The server sends all piece movement events • Most events that the client receives are not rendered, and could be ignored • Then server-side pubsub • Only receive events near me • Client subscription == client view • Client model = subset of server model
“Near me” • Current view: x, y, w, h • Subscribe to [x: x+w, y: y+h] • Subscribe to [x-d: x+w+d, y-d: y+h+d] • Partition the world statically in cells • Subscribe to the cells that my view overlap with User-oriented software development for real time online applications, Gorlatch 2008
Event broker vs pubsub • Event broker = pubsub • With an intermediary • Where subscribers publish • And publishers subscribe • And usually with function callbacks rather than over the network
Mini-map • Receive player position message • Change player position on main screen • Change player position on mini-map
Mini-map • Main view and mini-map view • Both subscribe to: • My movements • Quest markers • The main view subscribes to: • Other players movement • The mini-map subscribes to: • Zoom clicks
Widgets • GUI widgets • N widgets interested in an event • A widget may fire another event in response • Enqueue new event? • Or dispatch it right away?
Publish events http://ezide.com/games/writing-games.html
Dispatch events http://ezide.com/games/writing-games.html
If you’re interested … • http://msdn.microsoft.com/en-us/library/ff650653.aspx • http://ezide.com/games/writing-games.html • The Many Faces of Publish/Subscribe, Eugster et al. 2003 • http://code.google.com/p/pubsubhubbub/ • http://www.capitalware.com/dl/docs/intro_pub_sub.pdf