Emitter: Scalable, fast and secure pub/sub in Go This is a draft presentation. It will be improved for the actual lightning talk presentation. Emitter: Scalable, fast and secure pub/sub in Go Emitter.io
Content Communication challenge Solution API Use cases Specs SDKs and platform support
Messaging challenge Suppose Alice wants to send Bob a message, but Bob is offline. Message is stored on server How to avoid message from getting lost when server is down? Have 2 or more servers store the same message What to do if the maximum server capacity is reached (bandwith or storage capacity)? Have multiple servers with load balancing Scale up and down depending on traffic How do Alice and Bob and the servers know who to communicate with? Intelligent communication system Alice Bob
Messaging challenge Online communication might seem simple at first sight, but…. You might need a complex back-end messaging system with: Load balancing Storage Inter-server communication system Automatic scaling etc etc
Messaging challenge The same challenges occur in: IoT Web applications Online gaming Wouldn’t it be nice if there would be an off-the-shelf solution for all these use cases?
Solution A possible solution to this challenge is Emitter Pub/Sub:
API Subscriber Publisher Publisher Broker Subscriber ChannelX ChannelX
Use case 1 Chat
Use case 2 Pressure and temperature sensors in furnaces of crematorium: passing on data to central dashboard
Optimized garbage disposal system Use case 3 Optimized garbage disposal system
Use case 4 Online game
Stocks and user notifications at certain events Use case 5 Stocks and user notifications at certain events
Use case 6 Twitter live stream
Emitter Open source Free Horizontally scalable You can tune it You need server(s) Emitter Cloud Pay per usage No need for servers Fewer things to worry about
Emitter Scalable: Built to handle millions of messages per second and to scale horizontally. Fast: Designed to ensure reliable, speed-of-light message delivery and high throughput. Secure: Supports TLS encryption, binary messages, expirable channel keys and permissions. Persistent: Messages can be stored for a period of time and sent to subscribers on demand. Light weight: Uses standard MQTT protocol, little overload, low battery usage Easy to use: Simple API, supports message filtering, binary (supports all data types)
Emitter SDK’s for Java Javascript Typescript .Net / C# GO C/C++ Python Platform support NodeJS Netduino
Emitter.io