Download presentation
Presentation is loading. Please wait.
Published byAudra Rice Modified over 9 years ago
1
Open Source XMPP for Cloud Services Matt Tucker, CTO Jive Software
2
Who am I? Member of the XMPP Standards Foundation and former chair of the board Behind Smack and Openfire at igniterealtime.org Keep giving talks about XMPP at OSCON…
4
In This Talk Brief XMPP and cloud computing overview Problems in cloud architectures; how XMPP can help Open Source tools Tips and tricks
5
XMPP (Jabber) Overview The open protocol for instant messaging (it’s fair to declare victory) IETF standard and a robust org developing the protocol: XMPP Standards Foundation Simple for developers and very deep Open Source toolset and heritage
6
XMPP Building Blocks DescriptionExample Presence Send presence data or manage presence subscriptions Giving a talk... Message Send data between users <message to='matt@jivesoftware.com' from='gato@igniterealtime.org ’ > How's that presentation going? IQ Exchange information and perform queries using a request / response protocol. pdx type= ‘ result ’ id= ‘ 123 ’ > Not Raining!
7
What is Cloud Computing? Predominately based on web services (SOAP, REST, etc) Exploding in popularity – a critical trend of software architectures Started with simple services; now growing complex
8
Cloud Service Example: Salesforce.com Uses SOAP (not XML-RPC or REST) Huge percentage of traffic is polling for updates Introduced “Outbound Messaging” to cope with polling – but there are firewall issues
9
Cloud Architecture Problems Polling doesn’t scale and isn’t real-time Need two-way data exchange with easy firewall traversal Web services are feature poor (presence, binary data, etc) SOAP is what’s needed for complex services, but it’s overly complicated Thesis: web services are great for simple cloud services; XMPP is better for complex cloud services
10
XMPP vs. SOAP XMPPSOAP Performance Security Ease Innovative Features Ubiquity
11
XMPP Cloud Architecture
12
Open Source Tools: Server Openfire Most popular XMPP server, with over 1 million downloads In production with many cloud services Massively scalable Support for even strict firewall environments -- BOSH
13
Open Source Tools: Client APIs Dozens of libraries in every major programming language – start at jabber.org Java: Smack library from igniterealtime.org Flex: XIFF library from igniterealtime.org Javascript: JSJac, dojox.xmpp
14
Open Source Tools: Cloud Components Whack (Java) – simple and high level API Components use XEP-114 (easy)
15
ExternalWeatherComponent.java public class ExternalWeatherComponent { public static void main(String[] args) { ExternalComponentManager manager = new ExternalComponentManager("example.com", 5275); // Set the secret key for this component, for authentication manager.setSecretKey("weather", "test"); // Register this component to a subdomain of the server manager.addComponent("weather", new WeatherComponent()); //... Component will now start processing requests }
16
WeatherComponent.java public class WeatherComponent implements Component { public String getName() { return "US Weather"; } public void processPacket(Packet packet) { // Get the request packet here, parse it and return a reply } public void initialize(JID jid, ComponentManager componentManager) { } public void shutdown() { }
17
Example: Clearspace Doc Sharing
18
Example: Twitter Fire Hose Uses XMPP to provide access to all status updates, which would be impossible using web services polling Only provided to a small number of services (most recently Gnip)
19
Openfire Cloud Services: Tips and Tricks External components allow for hot-deploy of new or updated services Run on separate hardware for scalability Openfire allows components to connect multiple times for scalability and redundancy Epoll on Linux provides great performance Ad-hoc command available to listen for all traffic Use XMPP federation for federating cloud services
20
Questions? Blog Entry Link Email/IM: matt@jivesoftware.commatt@jivesoftware.com www.igniterealtime.org
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.