Sunteți pe pagina 1din 37

APP-CAP1714

Next Generation Messaging: VMware vFabric RabbitMQ

Tom McCuch, VMware, Inc.

#vmworldapps

Disclaimer

This session may contain product features that are


currently under development.

This session/overview of the new technology represents


no commitment from VMware to deliver these features in any generally available product.

Features are subject to change, and must not be included in


contracts, purchase orders, or sales agreements of any kind.

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?

Modern Application Trends

Written with frameworks


Developer productivity and innovation

New Application Types


Mobile, SaaS, Social Apps released early and often

Data intensive
Emerging requirements: elasticity, multi-cloud Web orientation drives exponential data
volumes

Deployed on virtual and cloud


infrastructure Trending toward hybrid (public and private)
infrastructure
4

Modern Applications need Modern Messaging

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

Synchronous Architecture is Brittle

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

Synchronous Architecture is Brittle

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

Synchronous Architecture is Brittle

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

Synchronous Architecture is Brittle

An exception occurred, please resend 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
9

Asynchronous Architecture Rules the Cloud


The status of your order is

I can fulfill part of that Order

I have an Order I can fulfill part of that Order

Your order will be delivered next Tuesday

Ill schedule delivery of that order

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

How is Messaging Used within Modern Apps?

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

Messaging Case Study Newedge


Global Asset Brokerage Services
Improved message processing, reduced app performance bottlenecks and positioned IT for future growth Challenge
Massive message and transaction volume; architecture and processes not structured for growth Performance issues with message processing; dependency on IT staff to process messages Problems with integration of application architecture; bottlenecks between apps hindering ability to handle volume and scale for business growth

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

Messaging Case Study Cloud Central


Cloud Computing Services Provider
Implemented customer-facing, self-service cloud provisioning and management systems based on RabbitMQ messaging Challenge
Brand-new cloud infrastructure built from the ground up to meet the needs of cloud users today Messaging enables the scalability and flexibility needed to meet the diverse and changing market demands AMQP-based messaging allows us to have a loosely coupled architecture Avoid lock-in to a particular API or product while functioning across multiple platforms

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

Messaging Case Study Digg


Social News Site
Offline / Batch / Asynchronous Processing

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

Advanced Message Queuing Protocol

Like email, but you can send money over it

Open, Ubiquitous, and Adaptable

async

SMTP

AMQP

sync

HTTP
unreliable

IIOP
reliable

16

Why AMQP?
A Protocol, not an API

A defined set of messaging


capabilities called the AMQ model

A network wire-level protocol, AMQP

On commodity hardware

10-25 thousand messages per


second is routine *

The NIC is usually the bottleneck * Non-persistent messages


17

Why AMQP?

AMQP security Brokers support separate virtual hosts Three levels of permissions AMQP over SSL is supported

Designed to scale horizontally Dozens of clustered brokers are


common

JPMorgan sends 1 billion AMQP


messages per day

18

AMQP Architecture

marriott routing key

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

1. booking.orbitz.marriott 2. booking.orbitz.sheraton 3. booking.travelocity.marriott

queue

21

Why RabbitMQ?

22

RabbitMQ Messaging that Just Works

design goal: no bloat - it just works mission: be everywhere AMQP LEADER


23

Building the Messaging Utility


RabbitMQ supports implementing Messaging as a Service within your cloud

Interoperable support for multiple operating


systems, platforms, languages

Lean higher server density on virtual Scalable & Available Elastic broker cloud
scales horizontally out and back to support dynamic client load

Simple to Provision template-based


provisioning with config import / export

Centrally managed HTTP-based API

24

Incredible Community Lowers Your Cost of Use

25

Enterprise Users, such as this Tier-1 Telco

26

Enterprise High Scale with Clustering

RMQ Cluster1

marriott.queue
1

RMQ1

sheraton.queue

RMQ2

motel6.queue
3

RMQ3

1. marriott.queue 2. motel6.queue 3. sheraton.queue


27

Enterprise High Availability

ESX4 ESX1 RMQ1

ESX2 RMQ2

sheraton.queue marriott.queue

sheraton.queue marriott.queue

master slave
28

Enterprise Scale with Federation


Federation Brokers are logically separate and may have different owners Brokers can run different versions of RabbitMQ and Erlang Brokers can be connected via WAN Communication is via AMQP (SSL) Brokers can be flexibly connected (Links may be one-or-two way) Chooses Availability and Partition tolerance Some exchanges in a broker may be federated while some may be local A client connecting to any broker can only see queues in that broker
29

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

Enterprise Management and Monitoring

The rabbitmq-management plugin provides an HTTPbased API for management and monitoring of RabbitMQ server, including:

A browser-based UI, and A command line tool,


rabbitmqadmin

30

Enterprise Management and Monitoring

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

A first level of access control is enforced at this point, with


the server checking whether the user has any permissions to access the virtual hosts, and rejecting the connection attempt otherwise

Resources, i.e. exchanges and queues, are named


entities inside a particular virtual host

A second level of access control is enforced when certain


operations are performed on resources

32

Enterprise Security

RabbitMQ distinguishes between configure, write and read operations on a resource

Configure operations create or destroy resources, or alter


their behavior

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

Changes to user permissions may only take effect when the


user reconnects

33

Demo Time!

CafeOps

amqp
CafeApp storefront

amqp (shovel)
ColdDrink Barista

HotDrink cluster Barista

34

35

FILL OUT A SURVEY


EVERY COMPLETE SURVEY IS ENTERED INTO DRAWING FOR A $25 VMWARE COMPANY STORE GIFT CERTIFICATE

APP-CAP1714

Next Generation Messaging: VMware vFabric RabbitMQ

Jeff Markham, VMware, Inc.

#vmworldapps

S-ar putea să vă placă și