advantages of service broker

4
28/08/12 Advantages of Service Brok er 1/4 msdn.microsoft.com/en-us/library/ms166063(v=sql.100).aspx Database Integration Ordering and Coordinating Messages 0 out of 2 rated this helpful - Rate this topic Advantages of Service Broker SQL Server 2008 Service Broker's features provide a number of significant benefits to database applications. These features and benefits include: Dat abase integration enhanc es appli c at ion perform ance a nd sim pli fies adm ini st ration. Message ordering and coordination for simplified application development Loose application coupling provides workload flexibility. Related message locking allows more than one instance of an application to process messages from the same queue without explicit synchronization. Automatic activation allows applications to scale with the message volume. Service Broker's integrated design provides benefits for application performance and administration. Integration with SQL Server allows transactional messaging without the added overhead and complexity of an external distributed transaction coordinator. An application receives one or more messages, processes the message or messages, and sends a reply message within a single database transaction. If the transaction fails, all work rolls back, and the received message is returned to the queue so that another attempt can be made to process it. No actions take effect until the application commits the transaction. The application remains in a consistent state. Administration is easier when data, messages, and application logic are all in the database, because administration for the application (disaster recovery, security, backup, and so on) then become part of the routine administration for the database, and the administrator does not have to manage three or four separate components. With traditional messaging systems, the message store and the database can become inconsistent. For example, when one component is restored from a backup, another component must also be restored from a backup taken at the same time, or else the information in the message store does not match the information in the database. Because Service Broker keeps messages and data in the same database, inconsistency is not an issue. A common development environment is also a benefit of database integration. The messaging part of an application and the data part of an application can use the same SQL Server languages and tools in a Service Broker application, taking advantage of the developer's familiarity with database programming techniques for message-based programming. Stored procedures that implement a Service Broker service can be written in either Transact-SQL or one of the common language runtime (CLR) languages. Programs outside the database use Transact- SQL and familiar database programming interfaces such as ADO.NET. Additionally, database integration enables automatic resource management. Service Broker runs in the context of the SQL Server instance, so Service Broker monitors all messages ready to be transmitted from all databases in the instance. This allows each database to maintain its own queues while helping Service Broker to manage resource usage across the entire SQL Server instance.

Upload: manuel-martinez

Post on 04-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

7/31/2019 Advantages of Service Broker

http://slidepdf.com/reader/full/advantages-of-service-broker 1/4

/08/12 Advantages of Service Broker

dn.microsoft.com/en-us/library/ms166063(v=sql.100).aspx

Database Integration

Ordering and Coordinating Messages

0 out of 2 rated this helpful - Rate this topic

Advantages of Service BrokerSQL Server 2008

Service Broker's features provide a number of significant benefits to database applications. These

features and benefits include:

Database integration enhances application performance and simplifies administration.

Message ordering and coordination for simplified application development

Loose application coupling provides workload flexibility.

Related message locking allows more than one instance of an application to process messages

from the same queue without explicit synchronization.

Automatic activation allows applications to scale with the message volume.

Service Broker's integrated design provides benefits for application performance and

administration.

Integration with SQL Server allows transactional messaging without the added overhead and

complexity of an external distributed transaction coordinator. An application receives one or more

messages, processes the message or messages, and sends a reply message within a single

database transaction. If the transaction fails, all work rolls back, and the received message is

returned to the queue so that another attempt can be made to process it. No actions take effect

until the application commits the transaction. The application remains in a consistent state.

Administration is easier when data, messages, and application logic are all in the database,

because administration for the application (disaster recovery, security, backup, and so on) then

become part of the routine administration for the database, and the administrator does not have

to manage three or four separate components.

With traditional messaging systems, the message store and the database can become

inconsistent. For example, when one component is restored from a backup, another component

must also be restored from a backup taken at the same time, or else the information in the

message store does not match the information in the database. Because Service Broker keeps

messages and data in the same database, inconsistency is not an issue.

A common development environment is also a benefit of database integration. The messaging

part of an application and the data part of an application can use the same SQL Server

languages and tools in a Service Broker application, taking advantage of the developer's

familiarity with database programming techniques for message-based programming. Stored

procedures that implement a Service Broker service can be written in either Transact-SQL or one

of the common language runtime (CLR) languages. Programs outside the database use Transact-

SQL and familiar database programming interfaces such as ADO.NET.

Additionally, database integration enables automatic resource management. Service Broker runs

in the context of the SQL Server instance, so Service Broker monitors all messages ready to be

transmitted from all databases in the instance. This allows each database to maintain its own

queues while helping Service Broker to manage resource usage across the entire SQL Server

instance.

7/31/2019 Advantages of Service Broker

http://slidepdf.com/reader/full/advantages-of-service-broker 2/4

/08/12 Advantages of Service Broker

dn.microsoft.com/en-us/library/ms166063(v=sql.100).aspx

Loose Coupling and Workload Flexibility

Related Message Locking

In traditional messaging systems, the applicat ion has been responsible for ordering and

coordinating messages that may arrive out of order. For example, Application A sends messages

1, 2, and 3. Application B receives and acknowledges messages 1 and 3, but experiences an error

with message 2. Application A resends message 2, but now the message is received after

messages 1 and 3. In the past, a developer either had to write the application so that message

order didn't matter, or else temporarily cache message 3 until message 2 arrived so that the

application could process the messages in the correct order. Neither solution is straightforward or

simple.

Another problem with traditional systems has been duplicate delivery. In the previous example, if 

Application B receives message 2, but the acknowledgement message back to Application A is

lost, Application A will resend message 2, causing Application B to receive message 2 twice.

Application code had to be able to either identify and discard the duplicate, or reprocess the

duplicate without negative effects. Again, both approaches were difficult to implement.

Message coordination has also traditionally been a difficult issue to handle. For example, an

application may submit hundreds or thousands of requests to a service. The service processes

the requests in parallel and returns a response as soon as the service finishes processing the

request. Because each request takes a different amount of t ime to process, the application

receives responses in a different order from the order in which the application sent the outgoing

message. However, to correctly process responses, the application must assoc iate each

response with the correct outgoing message. In traditional messaging systems, each application

managed this association, which added to the cost and complexity of developing the application.Service Broker solves these problems by handling message order, unique delivery, and

conversation identificat ion automatically. Once a conversation is established between two

service broker endpoints, an application receives each message only once, and in the order in

which the message was sent. Your application can process messages exactly once, in order,

without additional code. Finally, Service Broker automatically includes an identifier in every

message. An application can always tell which conversation a particular message belongs to.

Service Broker provides loose coupling between the initiating application and the target

application. An application can send a message on a queue and then continue with applicationprocessing, relying on Service Broker to ensure that the message reaches its destination. This

loose coupling provides scheduling flexibility. The initiator can send out multiple messages, and

multiple target services can process them in parallel. Each target service processes messages at

its own pace, depending on the current workload.

Queuing also allows systems to distribute processing more evenly, reducing the peak capacity

required by a server. This can improve overall throughput and performance in database

applications. For example, many database applications have a surge in transactions at certain

times of the day, increasing resource consumption and slowing response times. With Service

Broker, these applications need not perform all of the processing for a business transaction when

it is submitted to the application. Instead, the application uses Service Broker to send information

about the transaction to applications that perform background processing. Those applicationsprocess the transactions reliably over a period of time, while the main entry application continues

to receive new business transact ions.

If the dest ination is not immediately available, the message remains in the transmission queue for

the sending database. Service Broker retries the message until the message is sent successfully,

or until the lifetime of the conversation expires allowing a reliable conversation to continue

between two services even if one service is temporarily unavailable at some point during the

conversation. Messages in the transmission queue are part of the database; Service Broker

delivers the message even if the instance fails over or restarts.

7/31/2019 Advantages of Service Broker

http://slidepdf.com/reader/full/advantages-of-service-broker 3/4

/08/12 Advantages of Service Broker

dn.microsoft.com/en-us/library/ms166063(v=sql.100).aspx

Automatic Activation

See Also

One of the most difficult things to accomplish in a traditional messaging application has been to

allow multiple programs to read in parallel from the same queue. In traditional messaging systems,

messages can get processed out of order when multiple programs or multiple threads are reading

from the same queue. Service Broker prevents this situation from occurring through conversation

group locking.

Consider a traditional order processing application. Message A, containing instructions about

creating the order header, and Message B, containing instructions about creating the order line

items, are both received on the queue. If both of these messages are dequeued by separate

application instances and processed at the same time, the order line item transaction might

attempt to commit first, and fail because the order does not yet exist. The failure in turn causes

the transaction to roll back and the message to be requeued and processed again, wasting

resources. Traditionally, programmers solved this problem by combining the information from

Message A and Message B into a single message. While this approach is straightforward for two

messages, this approach scales poorly to systems that involve coordinating dozens or hundreds

of messages.

Service Broker solves this problem by associating related conversations in a conversation group.

Service Broker automatically locks all messages in the same conversation group, so that these

messages can only be received and processed by one application instance. Meanwhile, other

instances of the application can continue to dequeue and process messages in other

conversation groups. This allows multiple parallel application instances to work reliably and

efficiently, without requiring complicated locking code in the application.

One of the most useful features of Service Broker is activation. Activation allows an application

to dynamically scale itself to match the volume of messages that arrive in the queue. Service

Broker provides features that allow both programs running inside the database and programs

running outside the database to take advantage of activation. However, Service Broker does not

require that an application use activation.

Service Broker monitors the activity in a queue to determine whether an application is receiving

messages for all of the conversations that have messages available. Service Broker activation

starts a new queue reader when there is work for the queue reader to perform. To determinewhen there is work for a queue reader, Service Broker monitors activity on the queue. When the

number of queue readers matches the incoming traffic, the queue periodically reaches a state

where either the queue is empty, or all messages in the queue belong to a conversation that is

being processed by another queue reader. If a queue does not reach this state for a period of 

time, Service Broker activates another instance of the application.

Applications use different activation approaches for programs that run inside the database and

programs that run outside the database. For programs within the database, Service Broker starts

another copy of the stored procedure specified by the queue. For programs that run outside the

database, Service Broker generates an activation event. The program monitors this event to

determine when another queue reader is needed.

Service Broker does not stop a program started through activation. Instead, activatedapplications are written to shut down automatically after a certain period of time without any

messages arriving to be received. An application designed this way can allow the number of 

application instances to grow and shrink dynamically as the traffic to the service changes. Also,

if the system shuts down or is rebooted, applications are automatically started to read the

messages in the queue when the system restarts.

Traditional messaging systems lack this behavior, and frequently end up having either too many

or too few resources dedicated to a particular queue at any given time.

7/31/2019 Advantages of Service Broker

http://slidepdf.com/reader/full/advantages-of-service-broker 4/4

/08/12 Advantages of Service Broker

dn.microsoft.com/en-us/library/ms166063(v=sql.100).aspx

© 2012 Microsoft. All rights reserved.

Other Resources

Logical Architecture [Service Broker]

Benefits of Programming with Service Broker

Did you find this helpful? Yes No

Community Content