Say Hello to my Little Friend - Fedora Messaging Infrastructure

Slides:



Advertisements
Similar presentations
An Erlang Implementation of Restms. Why have messaging? Separates applications cheaply Feed information to the right applications cheaply Interpret feed.
Advertisements

© 2008 EBSCO Information Services SUSHI, COUNTER and ERM Systems An Update on Usage Standards Ressources électroniques dans les bibliothèques électroniques.
Oct, 26 th, 2010 OGF 30, NSI-WG: Network Service Interface working group Web Services Overview Web Services for NSI protocol implementation
Snejina Lazarova Senior QA Engineer, Team Lead CRMTeam Dimo Mitev Senior QA Engineer, Team Lead SystemIntegrationTeam Telerik QA Academy SOAP-based Web.
Operational Technology + Information Technology Arlen Nipper - Cirrus Link Applying Message Oriented Middleware to Operational Systems.
Extensible Networking Platform IWAN 2005 Extensible Network Configuration and Communication Framework Todd Sproull and John Lockwood
Distributed Systems Architectures
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
Condor Project Computer Sciences Department University of Wisconsin-Madison Asynchronous Notification in Condor By Vidhya Murali.
Service Broker Lesson 11. Skills Matrix Service Broker Service Broker, provides a solution to common problems with message delivery and consistency that.
Getting Started with WCF Windows Communication Foundation 4.0 Development Chapter 1.
Implementing search with free software An introduction to Solr By Mick England.
Network Topologies.
Client/Server Architectures
VAP What is a Virtual Application ? A virtual application is an application that has been optimized to run on virtual infrastructure. The application software.
Kevin Hudson Oracle Corporation October Evolution of Oracle from Application to Infrastructure.
Adapting Legacy Computational Software for XMSF 1 © 2003 White & Pullen, GMU03F-SIW-112 Adapting Legacy Computational Software for XMSF Elizabeth L. White.
Using the SAS® Information Delivery Portal
XMPP Concrete Implementation Updates: 1. Why XMPP 2 »XMPP protocol provides capabilities that allows realization of the NHIN Direct. Simple – Built on.
(Business) Process Centric Exchanges
P-IMAP Draft Overview (
Server to Server Communication Redis as an enabler Orion Free
Messaging. Message Type Patterns Command Invoke a procedure in another application SOAP request is an example Document Message Single unit of information,
S imple O bject A ccess P rotocol Karthikeyan Chandrasekaran & Nandakumar Padmanabhan.
SOAP-based Web Services Telerik Software Academy Software Quality Assurance.
AMQP, Message Broker Babu Ram Dawadi. overview Why MOM architecture? Messaging broker like RabbitMQ in brief RabbitMQ AMQP – What is it ?
Spring RabbitMQ Martin Toshev.
IPS Infrastructure Technological Overview of Work Done.
Netconf Schema Query Mark Scott IETF 70 Vancouver December 2007
September 28, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser
E-commerce Architecture Ayşe Başar Bener. Client Server Architecture E-commerce is based on client/ server architecture –Client processes requesting service.
1 Distributed Systems Architectures Distributed object architectures Reference: ©Ian Sommerville 2000 Software Engineering, 6th edition.
The Mechanics of HTTP Requests and Responses and network connections.
D-Bus and Friends: Making Linux “Just Work” on the Desktop John (J5) Palmieri Desktop Engineer
SDN controllers App Network elements has two components: OpenFlow client, forwarding hardware with flow tables. The SDN controller must implement the network.
Research of Web Real-Time Communication Based on WebSocket
Development Environment
What’s new in the SIF3 World?
A Web Services Journey on the .NET Bus
Discussion 11 Final Project / Git.
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 6: Planning, Configuring, And Troubleshooting WINS.
Data Virtualization Tutorial… OAuth Example using Google Sheets
Free Cloud Management Portal for Microsoft Azure Empowers Enterprise Users to Govern Their Cloud Spending and Optimize Cloud Usage and Planning MICROSOFT.
PROTEAN: A Scalable Architecture for Active Networks
Platform as a Service.
Server Concepts Dr. Charles W. Kann.
IETF-59 P-IMAP Draft Overview ( Stéphane H. Maes – Jean.
Distribution and components
LCGAA nightlies infrastructure
Chapter 9 – RPCs, Messaging & EAI
AJAX.
Spacewalk and Koji at Fermilab
Modular Infrastructure Design with Messaging
Proposal: A General Infrastructure for Efficient Application-Level Protocols Steven Czerwinski Goal: To investigate ways to make.
Exploring Azure Event Grid
Module 3 Building a web app.
Streaming Network Analytics System
Introduction to Web Services and SOA
Chapter 27 WWW and HTTP.
SUSHI, COUNTER and ERM Systems An Update on Usage Standards
Implementing an OpenFlow Switch on the NetFPGA platform
Chapter 17: Client/Server Computing
Message Queuing.
Chapter 11. Frame Relay Background Frame Relay Protocol Architecture
Enterprise Integration
Python and REST Kevin Hibma.
Introduction to Web Services and SOA
Elmo Muhammad Shahbaz Lalith Suresh, Jennifer Rexford, Nick Feamster,
SDMX IT Tools SDMX Registry
Presentation transcript:

Say Hello to my Little Friend - Fedora Messaging Infrastructure

What is Messaging? A standard infrastructure for routing useful information from one place to the next E-mail is a specific messaging system optimized for sending human readable text We need a way to send computer parsable messages Linux uses D-Bus as its desktop messaging protocol

What is AMQP? Advanced Message Queuing Protocol An industry standard for building messaging infrastructure used mainly by banks Provides routing, ACL mechanisms, messaging patterns and realtime capabilities Provides standard data type marshaling

What is QMF? Qpid Management Framework A protocol built on top of AMQP Provides a complete object and event system Events Objects Properties Statistics

What is Qpid? Apache's implementation of the AMQP and QMF standards Both Java and C++ brokers We use the C++ broker as it is the only one to support QMF at the moment Python, Ruby and C++ bindings are available yum search qpid

Why not D-Bus (insert favorite messaging protocol here)? Distributed messaging – we want upstream to get our data and visa versa While D-Bus was built for simplicity and the desktop it doesn't have the flexibility needed for distributed internet messaging ReST interfaces are here to stay but they are pull only and not very efficient AMQP has push capabilities, packetted data and interesting optimization paths

Why does Fedora Need Messaging? E-mail spam/notification isn't very useful for most people A computer parsable messaging format means we can display notifications in a way that is most useful for each user It also means we can automate processes federate in the future to get notifications from upstream sources

How do we plan on using Messaging?

Security Domain Architecture Publishers send events to the main Fedora Infrastructure broker Subscribers listen for events within their security domain's broker Forwarding rules specify what messages can be forwarded into what security domain Firewall rules, browser domain security and ACLs mean clients can only talk within their security domain

Security Domain Architecture(cont.) Forwarding links can be severed without disrupting applications. A FAS ACL enabled security domain would allow monitoring abuse per user and shutting out their account if suspicious activity is detected Domains that are using up too much bandwidth can be limited while other domains can be given priority for time sensitive channels

Security Domain Issues Slightly more complex rules need to be maintained New features such as QMF don't fully support federated brokers (but this is on the development timeline)

AMQP Model Server +-------------------------------+ | Virtual host | | +-----------------------+ | | | | | +-------------+ | | +-----------+ | | | Publisher | ----------> | Exchange | | | | Application | | | +-----+-----+ | | +-------------+ | | | | | | | | | | | | | Binding | | | | \|/ | | +-------------+ | | +---------+ | | | Consumer | <----------- | Message | | | | Application | | | | Queue | | |

Message Flow +-------------+ +-------+ +-------------+ +-------+ | Publisher | -----------------> |Message| | application | +---+---+ +-------------+ | | +---------+ |Exchange | +----+----+ +------------+------------+ | | | Message Message Message Queue Queue Queue +-------------+ +-------+ +-------+ +-------+ | Consumer | +-------+ +-------+ +-------+ | application | <---- |Message| +-------+ +-------+

Payload Formats AMQP only defines the routing and queue manipulation parts of a complete protocol Content is just a binary blob requiring some sort of explicit contract between the client and the server as to how it is formatted Options are spin our own or QMF

Spin our own w/ Publish/Subscribe pattern Use the amq.topic exchange which defines a routing key binding org.fedoraproject.# would be our routing key (e.g. koji would use org.fedoraproject.koji as its routing key) Simplicity is advantageous here Works with federation Doesn't define an object model for expanded functionality in the future

Spin our own w/ JSON Payload Pros Almost every language has a JSON library We already use this for ReST calls Cons Extra overhead JSON is not processed securely in every library Need to receive the whole JSON string before parsing can be done

Spin our own w/AMQP type lib Pros Use the AMQP library to marshal and demarshal data Fairly compact binary format Cons Better than the JSON format but still not a full object model Extensive type system can be confusing No tools to debug and not human readable

QMF Pros Complete object model gives us methods, properties and statistics for future expandability Uses a subset of the AMQP type library for payload w/ tools to debug messages Compact payloads based on schemas so types aren't transmitted with every message We have the developers' ears and can help shape QMF to our needs

QMF Cons Extra handshake plus schema fetching means high startup costs gearing it to long running processes Schemas aren't federated between brokers yet Bindings for producers aren't quite ready or are very low level Complexity of object system is an overhead we don't need just yet

We need to define use cases Koji Bodhi FAS PackageDB Package CVS Bugzilla Upstream etc.

Koji Events Build Started Build Completed Build Failed Tasks? - e.g. do we want higher level events or do we want to stick closer to the actual bare bones architecture?

Bodhi Events Update Requested Update Pushed Update Canceled Karma Incremented Karma Decremented

FAS Events User Added User Removed Group Added Group Removed User Added to Group User Removed from Group

PackageDB Events ACLs Changed Package Added Package Orphaned Package Removed

Package CVS Events Commit Made Repo Created Branch Created

Bugzilla Events New Bug Bug Updated Bug Closed

Upstream Events Package Released New Project