service bus solution patterns clemens vasters principal technical lead microsoft corporation...

50
Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation AZR317

Upload: johnathan-pitts

Post on 11-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Service Bus Solution Patterns

Clemens VastersPrincipal Technical LeadMicrosoft Corporation

Abhishek LalSenior Program ManagerMicrosoft Corporation

AZR317

Page 2: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Agenda

Customer Use-Cases

Access Control and Provisioning

Messaging Channel Patterns

Message Routing Patterns

Composite integration patterns

Device Integration

Q&A

Page 3: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Before we go there ….

Common “Enterprise” Goals (per Gregor)Information portalsData replicationShared business functionService oriented architecturesDistributed business processesBusiness-to-business integration

Future “Enterprise” Goal (per us)Large scale reach to consumers via apps and devicesMeet business needs with higher agility

Page 4: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

What is Service Bus?

Line of Business

Application

Event Aggregator

Team Sharepoint

Site …

Household Appliance

Phone, Tablet, PC

Point of Sale Kiosk

SaaS Cloud Service Solution

Queues Topics Relays Notifications*

Bridges*

Page 5: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Customer Use cases

Page 6: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Retail Sites

Windows Azure

Web Services For Retailers

Service Instance

1

Retailer’s Data Center

LOB Service

Catalog Distribution Topic

Orders Queue

Relay

Service Instance

1

ServiceInstance

2

ServiceInstance

N

ServiceInstance

2

ServiceInstance

N

Per-Tenant Web ServicesMulti-Tenant Web Services

or

Page 7: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Web Services For Retailers

ISV: Solution Provider for Retail StoresSolution Profile

Point-of-sale apps send messages to QueuesOn-premises data access for sensitive dataEvent notifications between HQ and retail locations

Service Bus UsageService Bus Queues for asynchronous messagingRelay for on-premises information accessTopics for event-notifications

Page 8: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Windows Azure

Monitoring Topic

Job Queue

SaaS with Dynamic Compute Workload

Processor Service

Processing Role

Instance1

Processing Role

Instance2

Processing Role

InstanceN

Controller Service

Controller Role

Instance1

Controller Role

Instance2

Job Data Store (Blob)

1 2

3

4

5

Page 9: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

SaaS with Dynamic Compute Workload

ISV: Specialized, Dynamic Compute Capacity Provider Solution profile

Users submit jobs through a rich client appJobs are processed as HPC-style workloads on Windows AzureUsers can monitor progress, and receive notifications on progress

Service Bus UsageQueue (with external Blob references) for job submissionRelay for request-response, low latency messaging between job controller and job processing worker roles to allocate tasksTopic for event aggregation and monitoring

Page 10: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Request Queue

Windows Azure

“Who has what data about me?” Service

Consumer Web Site

Web Role Instance2

Web Role InstanceN

Reply Queues

Controller Service

SchedulingRole

Instance1

Data Services

SchedulingRole

Instance2

SchedulingRole

Instance3

Web Role Instance1

Data Service 1

Data Service 2

Data Service 3

Distribution TopicSession

Page 11: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

“Who has what data about me?” Service

Customer: Commercial website to track personal dataSolution

Data gathered from several disparate sourcesFan-out processing of customer requests from websiteResponses from different systems correlated to present results

Service Bus UsageQueues for decoupling of the web layer from middle-tier servicesEnable scaling to thousands of online web site usersTopic fan-out for communicating with data servicesRequest/Response correlation using Sessions

Page 12: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Devices

Scaling things out

Page 13: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Air Conditioners and other Devices

Sub Sub Sub

TopicTopic

Sub

Control

Partition

Even

t Fl

ow C

ontro

l Flow

SubSub

Event Store

Analytics

Page 14: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Scale-Units

Web Role (x2)

Ingestion Topic P1

Event Store P1

Subscription

Subscription

Storage Writer

Aggregator

Sub

Control SystemPx

Fan-OutTopic Px/1

Sub Sub Sub Sub Sub Sub

Storage Reader

Mobile App Service/Sit

e

Stats Topic

Page 15: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Event Ingestion

Ingestion Topic P1

Event Store P1

Ingestion Topic P2 Ingestion Topic Px

Partitions

Subscription

Subscription

Subscription

Subscription

Subscription Subscription

Storage Writer

Event Store P2

Storage Writer

Event Store Px

Storage Writer

Aggregator

Stats Topic

Aggregator

Aggregator

Analytics Store

Storage Writer

Subscription Subscription

Real-Time Analytics

Dashboard

Subscription

Control System Px

Sub

CSP1

Sub

CSP2

Custom Gateway

Page 16: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Command Fan-Out

Sub

Fan-Out

Sub SubSub Sub SubSub Sub Sub

Topic Topic Topic

Partition

Control System

Page 17: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Provisioning

Provisioning

Device Allow List

Registration with factory

installed device-id

Access Control Service

Service Bus

Service Id

Sub Sub Sub

TopicQueue

Create Subscription

Create “Service Id”

Set “Listen” Permission

Set “Send”

Permission

Partition Allocator

Device Verificatio

n

1

2

34

5

• Per-device id and key• Partition Queue URI• Partition Subscription

URI

Factory installed device-id

Page 18: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Enterprise Integration Patterns

http://www.eaipatterns.com/ by Gregor Hohpe

Page 19: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Messaging Channel Patterns

Page 20: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Publish-Subscribe

ScenarioSender broadcasts event to all interested receivers

Common use-casesEvent Notification

S RTopic SubSub

Sub

R

R

Page 21: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Create Topics and Subscriptions

NamespaceManager namespaceManager = NamespaceManager.Create()

namespaceManager.CreateTopic(“topicName"); namespaceManager.CreateSubscription(“topicName", “FirstSubscription"); namespaceManager.CreateSubscription(“topicName", “SecondSubscription"); namespaceManager.CreateSubscription(“topicName", “ThirdSubscription");

Page 22: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Publish Subscribe

demo

Page 23: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Content-Based Router

ScenarioRoute a message to different recipients based on data contained in the message

Common Use-CasesOrder Processing Systems

S RTopic SubSub

Sub

R

R

Page 24: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Create Subscriptions with Rules (Filters)

TopicDescription mainTopic = namespaceManager.CreateTopic(“topicName");

namespaceManager.CreateSubscription(“topicName", “AuditSubscription"); namespaceManager.CreateSubscription(“topicName", “Category1Subscription",

new SqlFilter(“Category = 1")); namespaceManager.CreateSubscription(“topicName", “CategoryNot1Subscription",

new SqlFilter(“Category <> 1"));

BrokeredMessage myMessage = new BrokeredMessage(); myMessage.Properties.Add(“Category”, 1);

or myMessage.Properties.Add(“Category”, 2);

or myMessage.Properties.Add(“Category”, 3);

Page 25: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

demo

demo

Content-Based Router

Page 26: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Recipient List

ScenarioThe sender wants to send the message to a list of recipients

Common use-casesOrder processing systems – route to specific vendors/departments

S RTopic SubSub

Sub

R

R

Page 27: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Create Rules (with SQL Filters) TopicDescription mainTopic = namespaceManager.CreateTopic(“topicName");

namespaceManager.CreateSubscription(“topicName", “AuditSubscription"); namespaceManager.CreateSubscription(“topicName", "FirstSubscription",

new SqlFilter("Address LIKE '%First%'")); namespaceManager.CreateSubscription(“topicName", “SecondSubscription",

new SqlFilter("Address LIKE '%Second%'"));

BrokeredMessage myMessage = new BrokeredMessage(); myMessage.Properties.Add(“Address”, “First”);

or myMessage.Properties.Add(“Address”, “Second”);

or myMessage.Properties.Add(“Address”, “First,Second”);

Page 28: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

demo

demo

Recipient List

Page 29: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Message Routing Patterns

Page 30: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Splitter

ScenarioBreak down a message into a series of independent messages

Common use-casesNeed to split a single job to multiple jobs

Parallel processing Process by different services

Order Processing Systems – process one order which may include many items.

Order 1

Item1

Order 1

Item2

Order2

Item11

Order2

Item12

Order2:Item 11

Item 12

Order 1:Item1 Item2

Topic

Order Processing

Page 31: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Aggregator

ScenarioCollect individual messages, detect completion and publish a single messageSelf starting aggregator – No prior knowledge is required Full content aggregator – Need to know how many aggregates (messages) in the session

Common use-casesDistributed Query system – Merge replies from multiple providersOrder Processing Systems – combine the results of individual but related suborders into single order for further processing

Page 32: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Implementing Aggregator with Service Bus

Correlate messages with sessions Use Session state to monitor the overall progress and determine completeness Full content aggregator strategies

S2

Queue

S1

Ordered Received Queue

Order 1

Item2Order

2Item1

1

Order 1

Item1

Order2

Item12

Order2:READY

Order 1:READY

Order 1: Item1, Item2

Order 2: Item11, Item12

Page 33: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Processing SessionsQueueDescription queueDescription = new QueueDescription(queueName)

{RequiresSession = true }; // Specify Session Id when sending the messageBrokeredMessage message = new BrokeredMessage();message.SessionId = sessionId;

// Accepting session and reading messagesMessageSession sessionRcv = sessionQueueClient.AcceptMessageSession(TimeSpan.FromSeconds(10));while ((receivedMessage = sessionRcv.Receive(TimeSpan.FromSeconds(10))) != null) {

ProcessMessage(receivedMessage);}

// Close Session after all messages have been processed sessionRcv.Close();

Page 34: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Using Session State// Extracting sessions state Stream stream = messageSession .GetState();if (stream != null){

using (var reader = new StreamReader(stream)) { state = reader.ReadToEnd(); }}// Modify session stateusing (var stream = new MemoryStream()) {using (var writer = new StreamWriter(stream)){ writer.Write(state); writer.Flush(); stream.Position = 0; messageSession.SetState(stream);} }messageSession.Close();

Page 35: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Resequencer

ScenarioA statefull filter which collects and reorders messages

Common use-casesGet a stream of related but out-of-order messages back into the correct order

Page 36: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Next: M2

Implementing Resequencer with Service BusCorrelate messages with sessions ID. Identify

sequence with a sequence ID property Use session state to store out-of-sequence messagesDefer out-of-sequence messages for a later time

S RQueueM1M3M2 M1M3 M2

Next: M2Out-Of-Seq: M3

M3

Next: M3Out-Of-Seq: M3

Page 37: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Deferring messages if (sessionState.GetNextSequenceId() != messageId){ Console.WriteLine("Defering message: Category {0}, Message sequence {1}",

session.SessionId, messageId); // Deferring the message, and setting sessions state. // Note: Use transaction scope to ensure consistency message.Defer(); sessionState.AddOutOfSequenceMessage(messageId, message.SequenceNumber); SetState(session, sessionState);}…

while (sessionState.GetNextOutOfSequenceMessage() != -1){ //Call back defered messages Console.WriteLine("Calling back for deferred message: sequence {0}",

sessionState.GetNextSequenceId()); receivedMessage = receiver.Receive(sessionState.GetNextOutOfSequenceMessage()); ProcessMessage(receivedMessage, ref sessionState, receiver);}

Page 38: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

demo

demo

Resequencer

Page 39: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Composite integration patterns

Page 40: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Composed Message Processor

ScenarioDistribute messages to several systems for processing. Aggregate the responses to create a single reply.Need to maintain the overall message flow when a message is sent to multiple recipients each send a reply back.

Common use-casesOrder processing – A large order being fulfilled by deferent departments each providing subset of the items

Page 41: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Composed Message Processor

QueueOrder

1Item1DeptA

Order 1

Item2DeptB

Order2

Item11

DeptB

Order2

Item12

DeptAOrder2:Item 11

Item 12

Order 1:Item1 Item2 Order Handling Order ProcessingSplitter

TopicDept B

Dept A

Dept C

Order Processing

TopicDept B

Dept A

Dept C

Inv2

Inv1

Queue

Order Aggregating

Order2:READY

Order 1:READY

Order 1

Item1DeptAOrder

1Item2DeptB

Order2

Item11

DeptB

Order2

Item12

DeptA

Order2 <Item 11,Item 12>

Order 1<Item1,Item2>

S1

S2

Inventory System

Page 42: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Scatter-Gather

ScenarioDistribute a message to multiple recipients and re-aggregate the responsesNeed to handle a single request by multiple (parallel) processing services before returning single response

Common use-casesDistributed Query system– Merge replies from multiple providers

Page 43: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Scatter-Gather

S1

Scattering Topic

Vendor B

Vendor A

Vendor C

Loan Req-1

Loan Req-2 V2

V3

V1Loan Req-

1

Loan Req-

1

Loan Req-

1

Loan Req-

2

Loan Req-

2

Queue

Gathering

V2

V3

V1

Loan Req-

1

Loan Req-

1Loan Req-

2

Req2 <Quote, Vendor3>

Req1 <Quote, Vendor1>

Req2

Req1

Page 44: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Agenda

Customer Use-Cases

Access Control and Provisioning

Messaging Channel Patterns

Message Routing Patterns

Composite integration patterns

Device Integration

Q&A

Page 46: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Resources

Connect. Share. Discuss.

http://northamerica.msteched.com

Learning

Microsoft Certification & Training Resources

www.microsoft.com/learning

TechNet

Resources for IT Professionals

http://microsoft.com/technet

Resources for Developers

http://microsoft.com/msdn

Page 47: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

Complete an evaluation on CommNet and enter to win!

Page 48: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

MS Tag

Scan the Tagto evaluate thissession now onmyTechEd Mobile

Page 49: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation

© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to

be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS

PRESENTATION.

Page 50: Service Bus Solution Patterns Clemens Vasters Principal Technical Lead Microsoft Corporation Abhishek Lal Senior Program Manager Microsoft Corporation