Documente Academic
Documente Profesional
Documente Cultură
#vmworldapps
Disclaimer
Technical feasibility and market demand will affect final delivery. Pricing and packaging for any new technologies or features
discussed or presented have not been determined.
Why Messaging?
Data intensive
Emerging requirements: elasticity, multi-cloud Web orientation drives exponential data
volumes
Traditional approaches to messaging imply predictable, static interaction between well-known end-points
Modern approaches to messaging embrace the unpredictable, dynamic, and transient nature of the web
5
Place Order
Fulfill Order
Manage Inventory
Schedule Delivery
If any component is unavailable within this synchronous flow, all in-flight messages will be affected, regardless of what component they are currently in -- and since state is maintained across the components, the system can be complex to reset
6
Place Order
Fulfill Order
Manage Inventory
Schedule Delivery
If any component is unavailable within this synchronous flow, all in-flight messages will be affected, regardless of what component they are currently in -- and since state is maintained across the components, the system can be complex to reset
7
Place Order
Fulfill Order
Manage Inventory
X X X X
Schedule Delivery
X X
X X
If any component is unavailable within this synchronous flow, all in-flight messages will be affected, regardless of what component they are currently in -- and since state is maintained across the components, the system can be complex to reset
8
Manage Inventory
X X X X
Schedule Delivery
X X
X X
If any component is unavailable within this synchronous flow, all in-flight messages will be affected, regardless of what component they are currently in -- and since state is maintained across the components, the system can be complex to reset
9
In this asynchronous flow: All state is kept in the simple messages being passed Each stateless component interacts only with the broker cloud If a component is lost, only the in-flight messages within that component
must be re-delivered Components can be quickly provisioned on-demand
10
Event
I need to know when to do something
Fragment
I need to only give you a piece of this data
Route
Control who gets which message, without changing sender or receiver
Batch
Producer and consumer can run at independent times
Publish
Tell everyone who wants to know about this
Modularity
Deploy, Scale, and Version a distributed system
11
Solution
Results
Built modern lightweight dev Dramatically increased business /deploy framework with Spring, agility, application performance; tc Server - proven to scale, improved time to market, perform w/ massive load increased revenue w/enhanced app development, deployment Rabbit MQ message broker; implemented for handling RabbitMQ provided business heavy message volumes agility, dynamically integrate new and existing applications GemFire implemented as data regardless of platform, management platform for low organization, programming latency, in-memory global data language, or operating system processing GemFire provided faster data Hyperic application distribution; improved customer management deployed for app service w/same day global monitoring, management transaction visibility
12
Solution
Results
Cloud Centrals user-friendly Reliable Message Delivery self-service provisioning Using messaging with RabbitMQ system allows the companys provides high reliability for the customers to perform tasks via Cloud Central provisioning a simple HTML user interface system RabbitMQ supports cross Greater Scalability platform messaging it has the As demand for our platform tooling Cloud Central really increases, we can scale that needed, such as a good .NET without having painful migrations client library later on and without having to rework any architecture RabbitMQ is utilized to respond to user requests to open new Improved Customer Satisfaction accounts, create new virtual RabbitMQ is the cornerstone of a machines, start VMs, and other reliable system that provides a provisioning activities seamless end-user experience
13
Challenge
Offline / Batch / Async Serve requests that are not in the interactive request / response loop and are typically only indirectly initiated by a user the work here can take from seconds, minutes or hours
Solution
Messaging and Events The online and offline worlds are connected in an asynchronous way using RabbitMQ to queue up events that have happened like a user Dugg a story or jobs to perform such as please compute this thing
14
http://about.digg.com/blog/how-digg-is-built
Why AMQP?
15
async
SMTP
AMQP
sync
HTTP
unreliable
IIOP
reliable
16
Why AMQP?
A Protocol, not an API
On commodity hardware
Why AMQP?
AMQP security Brokers support separate virtual hosts Three levels of permissions AMQP over SSL is supported
18
AMQP Architecture
marriott binding
marriott
M1 M2 M3
queue
19
AMQP Architecture
marriott
M1 M2 M3
queue sheraton
M1 M2 M3
queue motel6
M1 M2 M3
queue
20
AMQP Architecture
all_bookings
1 2
3
queue
booking.orbitz.*
orbitz_bookings
2
queue
orbitz_marriott_booking s
queue
21
Why RabbitMQ?
22
Lean higher server density on virtual Scalable & Available Elastic broker cloud
scales horizontally out and back to support dynamic client load
24
25
26
RMQ Cluster1
marriott.queue
1
RMQ1
sheraton.queue
RMQ2
motel6.queue
3
RMQ3
ESX2 RMQ2
sheraton.queue marriott.queue
sheraton.queue marriott.queue
master slave
28
Clustering A cluster forms a single logical broker Nodes must run the same version of RabbitMQ and frequently Erlang Brokers must be connected via LAN Communication is via Erlang All nodes connected to all other nodes in both directions Chooses Consistency and Availability Clustering is all-or-nothing A client connecting to any node can see queues on all nodes
The rabbitmq-management plugin provides an HTTPbased API for management and monitoring of RabbitMQ server, including:
30
The rabbitmqadmin CLI can perform the same actions as the web-based UI (as it is a specialized HTTP client), and is more convenient for use when scripting
31
Enterprise Security
When an AMQP client establishes a connection to an AMQP server, it specifies a virtual host within which it intends to operate
32
Enterprise Security
Write operations inject messages into a resource Read operations retrieve messages from a resource
RabbitMQ may cache the results of access control checks on a per-connection or per-channel basis
33
Demo Time!
CafeOps
amqp
CafeApp storefront
amqp (shovel)
ColdDrink Barista
34
35
APP-CAP1714
#vmworldapps