Post on 29-Dec-2015
transcript
22
Arvindra SehmiHead of Enterprise & ArchitectureDeveloper & Platform GroupMicrosoft EMEA HQasehmi@microsoft.comwww.thearchitectexchange.com/asehmi
Architecting for HighArchitecting for HighPerformance, Decentralized, Agent-Performance, Decentralized, Agent-Oriented, Connected ApplicationsOriented, Connected Applications
33
TopicsTopics
Performance-Challenged ApplicationsMessaging Network Architecture"Agile Machine" Agent ArchitectureConclusion
44
TopicsTopics
Performance-Challenged ApplicationsMessaging Network Architecture"Agile Machine" Agent ArchitectureConclusion
55
Performance-Challenged ApplicationsPerformance-Challenged Applications
App scalability is hard to plan forApp performance is hard to design forProcessing latency depends on the
aboveProcessing often needs to proceed
with incomplete information Flight reservations Financial trading
77
CAPCOCAPCO
Requirements of their customers are:A consistent system & application
architectureSystems integration capabilityPredictable & controllable high
performance
88
SGX OpportunitySGX Opportunity
Capco commissioned by the Singapore Exchange Limited (SGX) to provide business assessment & technical architecture advice
Required to implement a centralised processing utility that will provide matching services for Post Trade, Pre-Settlement interactions for equities & fixed income trading in the Singapore market
Initial prototype built in C++/Unix
99
Benchmark –Benchmark –High Performance ScenarioHigh Performance ScenarioFinancial Trade LifecycleFinancial Trade Lifecycle
InvestmentInvestmentManagerManager
Broker/DealerBroker/Dealer
ExchangeExchange(e.g. NYSE)(e.g. NYSE)CSDCSD
(e.g. DTCC)(e.g. DTCC)
CustodianCustodian
1.1. The Investment Manager sends the Block Trade to the
Broker/Dealer.
2.2. The Broker/Dealer send the Block Trade to the Specialist on
the Exchange.
3.3. The Specialist executes all the
individual blocks and sends the result to
the Dealer.
4.4. The Broker/Dealer send the Investment Manager an average
Price.
5.5. The Investment Manager tells the
Broker/Dealer how to allocate the Trade to
individual clients.
6.6. The Broker/Dealer allocates the Trades
according to the Invest Manager’s instructions
and books them into individual client accounts.
7.7. The Broker/Dealer sends the Trade
information to the CSD for confirmation
and settlement.
8.8. The CSD sends confirms to the
Investment Manager and the Custody
Bank.
9.9. The Custodian or the Investment
Manager affirms that the Trade is good.
10.10. On settlement date, deliveries of shares and money are moved between
the Client’s Custodian and the Broker/Dealer accounts at the CSD.
Adapted from Sungard Inc. – Case of the Bungled Trade
1010
The Simple Queuing ModelThe Simple Queuing Model
In-bound MQ & In-bound MQ & message routing message routing processorsprocessors
Message Handling MQs & Business Message Handling MQs & Business Logic Processors (per message type Logic Processors (per message type state management & message matching)state management & message matching)
Confirms & out-Confirms & out-bound MQs & bound MQs & processorsprocessors
MessageProcessor
MessageQueue
1212
Performance MetricsPerformance Metrics Metric Symbol Definition
Length of Observation
T Total number of time units over which the observation has been made.
Arrivals N Total number of Arrivals over the length of observation. Completions C Total number of Completions over the length of the
observation. Busy Time B The number of time units where the number of messages in
the system exceeds zero. Utilisation U
The calculated value: T
BU
Throughput X
The calculated value: T
CX
Mean Service Time S
The calculated value: C
BS
Execution Distribution
A
The calculated value:
T
ttMessagesA
0
)(
Mean Queue Length N
The calculated value: T
AN
Residence Time RT
The calculated value: C
ART
Queuing Time Q The calculated value: RT – S
1313
ComputeComputeServerServer
ComputeComputeServerServer
Processing Per Compute ServerProcessing Per Compute Server
ComputeComputeServerServer
ComputeComputeServerServer Alloc Q ALCAlloc Q ALC
Noe Q NOENoe Q NOE
Settle Q SETSettle Q SET
Nett Q NETNett Q NET
CFM Q CFMCFM Q CFMTrade Q PAMTrade Q PAM CLS Q CLSCLS Q CLS
PAM Trade QPAM Trade Q
x4x4
x2x2
x4x4
x4x4
x1x1 x1x1x2x2
x2x2
1414
Scalable Transaction EngineScalable Transaction EngineCore processing pipelineCore processing pipeline
DatabaseDatabaseServer Server
DatabaseDatabaseServer Server DatabaseDatabase
MessageMessageDriverDriver
MessageMessageDriverDriver
Compute Compute ServerServer
Compute Compute ServerServer
MessageMessageSinkSink
MessageMessageSinkSink
Core ProcessingPipeline
Pipeline is replicated as required on new machines
1515
Measuring performanceMeasuring performance
Tool Function
Message Generator • Generates domain-specific messages (e.g. for Straight Through Processing or Exchange business-processing models)
• Allows a number of different business scenarios or cases to be generated
Message Driver • Provides a programmable message rate & variability
• Acts as the input source to the queuing model
• Takes the output of the message generator
Message Sink • A component which provides a means of reading messages from a nominated message queue
• Allows the input rate to be balanced against the output rate (a criteria of the Buzen & Denning performance measurement model)
Performance Monitor • Provides the required statistics for the performance calculation as required by the execution model
• Statistics are used to calculate the performance metrics
1616
Redmond ISV Labs Benchmark (1/2)Redmond ISV Labs Benchmark (1/2) Focused early efforts on optimizing
performance of system on a single dual processor IBM x330 server accessing a SQL 2000 SP2 database on 8 processor IBM x370 server
App CPU utilization ~100% SQL CPU utilization less than 50% Network cards saturated The 3 key inhibitors performance were:
1. SQL log bound (disk I/O)2. Use of dynamic SQL statements rather than
sprocs3. Original process configuration was not correctly
“balanced”
1717
Redmond ISV Labs Benchmark (2/2)Redmond ISV Labs Benchmark (2/2)All servers used Windows Server 2003SQL performance team recommended:
Move audit log to local disk store Hash data between N compute servers & N
database instances spreading disk load over multiple striped Raid 1+0 arrays
Change to clustered index on match table Use multiple disk controllers
MSMQ performance team recommended MSMQ v3.0, overcoming 4MB memory buffer limits & context switching issues
Use ICECAP & built-in WS2K3 performance counters
1818
Scale-out performance resultsScale-out performance results
Scale-out over 8 Application Servers & 1 SQL Server achieved a performance of 7734 msg/sec
12
34
56
78
1 SQL DB
2 SQL DB
4 SQL DB0
1000
2000
3000
4000
5000
6000
7000
8000
MSG/SEC
Capco STE App Servers
SQL Database Servers
1 SQL DB 1337 2618
2 SQL DB 3570
4 SQL DB 5096 7734
1 2 3 4 5 6 7 8
1919
RaidRaid
ArrayArray
[x4][x4]
DatabaseDatabaseServerServer
[x1][x1] 4
ComputeCompute
ServerServer
[x8][x8]
7734 msg/sec = 668,217,600 msg/day7734 msg/sec = 668,217,600 msg/day= ~65 Million Trades per Day= ~65 Million Trades per Day
PAMPAM NOENOE ALCALC NPRNPR SETSET Throughput (msg/sec)Throughput (msg/sec)
Node 1Node 1 Node 2Node 2 Node 3Node 3 Node 4Node 4 Node 5Node 5 Node 6Node 6 Node 7Node 7 Node 8Node 8 AverageAverage TotalTotal
22 22 44 44 44 10751075 818818 10061006 976976 970970 970970 918918 10011001 967967 77347734
• 8 x 1-way Win2K PC• Each running 1 x Message Driver• Each Message Driver populates a remote input trade queue on the target compute server• Seven million messages are delivered in total per test• Each “Trade” transaction consists of 1 Noe, 2 Allocs, 2 Net Proceeds, & 2 Settlement Instructions
• 8 x 1-way Win2K PC• Each running 1 x Message Driver• Each Message Driver populates a remote input trade queue on the target compute server• Seven million messages are delivered in total per test• Each “Trade” transaction consists of 1 Noe, 2 Allocs, 2 Net Proceeds, & 2 Settlement Instructions
• 8 x 2-way WinServer-2K3 PC• Each running 2 Pam, 2 Noe, 4 Allocs, 4 Net Proceeds, & 4 Settlement Instructions processing components• All processing components read off queues & write to queues. All queues, except the trade input queue are local, express message queues• Database updates have affinity to one of the available databases through the use of a multi-key hashing algorithm computed over the trade match fields
• 8 x 2-way WinServer-2K3 PC• Each running 2 Pam, 2 Noe, 4 Allocs, 4 Net Proceeds, & 4 Settlement Instructions processing components• All processing components read off queues & write to queues. All queues, except the trade input queue are local, express message queues• Database updates have affinity to one of the available databases through the use of a multi-key hashing algorithm computed over the trade match fields
• 1 x 8-way WinServer-2K3 PC• Running 1 x SQL Server 2000 with 4 instances of the STE Database • 4 x Raid 1+0 Disk Arrays• Using a clustered index on the match table with date-time ordering was a natural fit to the real data’s arrival time heuristics• Data grew gracefully at the end of the clustered index table• Disk queues on the Raid arrays maxed despite only 50% SQL Server CPU utilization• This implied we could increase performance even more by increasing the number of spindles on the Raid Arrays• The 100 GB network cards also saturated
• 1 x 8-way WinServer-2K3 PC• Running 1 x SQL Server 2000 with 4 instances of the STE Database • 4 x Raid 1+0 Disk Arrays• Using a clustered index on the match table with date-time ordering was a natural fit to the real data’s arrival time heuristics• Data grew gracefully at the end of the clustered index table• Disk queues on the Raid arrays maxed despite only 50% SQL Server CPU utilization• This implied we could increase performance even more by increasing the number of spindles on the Raid Arrays• The 100 GB network cards also saturated
MessageMessageDriverDriver
[x8][x8] 1
2121
London Stock ExchangeLondon Stock Exchange
[ 2002/2003 ]
Largest most international equity exchange in Europe Has $6.8 trillion of UK and international companies market capitalisation on its markets Has transacted $9.2 trillion of business over the year One third of the world’s liquidity!
2222
Historic Variation in Daily Order Volumes
0
500000
1000000
1500000Ju
l-00
Aug
-00
Sep
-00
Oct
-00
Nov
-00
Dec
-00
Jan-
01
Feb
-01
Mar
-01
Apr
-01
May
-01
Jun-
01
Jul-0
1
Aug
-01
Sep
-01
Oct
-01
Nov
-01
Dec
-01
Jan-
02
Feb
-02
Mar
-02
Apr
-02
May
-02
Jun-
02
Jul-0
2
Aug
-02
Sep
-02
Oct
-02
Nov
-02
Dec
-02
Jan-
03
Date
Tota
l Dai
ly O
rder
Ad
diti
on
s an
d D
elet
ion
s
Peak 2003
Peak 2002
Peak 2001
Peak 2000
Peak 1999
Peak 1998
Orders
30 per. Mov.Avg. (Orders)
Peak 2002
Peak 2001
Peak 2000
Peak 2003
5x increase in peak order volumes in 2 years (2000-02)
The first Tuesday of February 2003 saw order message volumes increase over the 1,500,000 level due to The first Tuesday of February 2003 saw order message volumes increase over the 1,500,000 level due to current stock market volatility. These messages form the key input to LSE’s market data systems. current stock market volatility. These messages form the key input to LSE’s market data systems.
Scalability is therefore KEY to success.Scalability is therefore KEY to success.
2x increase in peak order
volumes in 1 year (2001-02)
The Scalability ChallengeThe Scalability Challenge
Scalabilityis a KEY Criterion
2323
Example:Example:
• Half of the LSE’s revenuesHalf of the LSE’s revenues come from information sales. come from information sales.
• Timely and accurate information Timely and accurate information is critical for the market to is critical for the market to operate correctly. operate correctly.
• Information “degrades” rapidly Information “degrades” rapidly over time as shown below. over time as shown below.
Annual Annual RevenueRevenue
45% of 45% of RevenueRevenue
1 1 SecondSecond
15 15 MinutesMinutes
1 1 MonthMonth
6 6 MonthsMonths
Age of Age of InformationInformation
The Performance ChallengeThe Performance Challenge
Performance& Latency
are KEY Criteria
2424
Real Time ProcessingGeneration of new messages, based on RTP of existing LSE message types
Real time messages must be processed in order of receipt
Data WarehousingArchiving of all LSE sourced messages
BatchEOD activity reports, warehouse query execution etc.
Inputs Outputs
Real Time Processing Operational Data Store
Data Warehouse Batch Processing
LSE System
LMILTrading In
LMIL
LSE System Functional OverviewLSE System Functional OverviewA System Built by Accenture (UK)A System Built by Accenture (UK)
2525
Real-Time Processing ExamplesReal-Time Processing Examples
Trade High-Low: Trade prices come from ‘Trade Report’ message System must disseminate new message for each new Highest Price for each stock System must disseminate new message for each new Lowest Price for each stock Trade Reports can be cancelled, reported late, delayed, never publicised !! Trade Reports (applies to every message) must be processed in order (per stock) !! !! All processing on a trade report must be done transactionally !!
Opening Price Opening prices come from ‘Trade Reports’ and / or ‘Best Price’ messages If price is ‘first of the day’, system must disseminate new message for each stock Rules for ‘first of the day’ are complex !! All processing on a trade report / best price must be done transactionally !!
Trades VWAP (Volume Weighted Average Price) VWAP is Σ(Price * Volume) / Σ(Volume) New VWAP disseminated every 15 seconds if volume has changed by a threshold
amount Trade cancellations and contras must be taken into account !! All processing on a trade report must be done transactionally !!
2626
LSE “Agents”LSE “Agents”
AgentAgent
ProcessingComponent
ListenerComponent
InternalQueues
QueueReader
Checkpoint
AuditDB
ProcessingDB
In-memoryStore
RecoveryMessage Store
For RecoveryLogic
AgentRouter
HashBalancer
• Listener components listen to external interfaces, or other Agents• Hash balancer distributes messages across internal queues, maintaining order of processing• Internal queues exploit multiprocessing capabilities of a machine (1 thread per queue) and allow
for fast input• Processing components execute processing in one transaction, using ‘fat’ SPs• Agent router routes and sends messages to other Agents via .NET Remoting (TCP/IP)• All components checkpoint for recovery
2727
LSE “Agents”LSE “Agents”
AgentAgent
ProcessingComponent
ListenerComponent
InternalQueues
QueueReader
Checkpoint
AuditDB
ProcessingDB
In-memoryStore
RecoveryMessage Store
For RecoveryLogic
AgentRouter
HashBalancer
AgentAgent
ProcessingComponent
ListenerComponent
InternalQueues
QueueReader
Checkpoint
AuditDB
ProcessingDB
In-memoryStore
RecoveryMessage Store
For RecoveryLogic
AgentRouter
HashBalancer
AgentAgent
ProcessingComponent
ListenerComponent
InternalQueues
QueueReader
Checkpoint
AuditDB
ProcessingDB
In-memoryStore
RecoveryMessage Store
For RecoveryLogic
AgentRouter
HashBalancer
Scale Out
2828
Architecture Overview - Key PointsArchitecture Overview - Key Points.NET Infrastructure
C#, .NET Remoting, ADO.NET, ASP.NET (UI + Web Services)
Application Logic C# code wraps ‘thin’ data access layer Functionally Stored Procedures (64 bit SQL 2000)
Packaging System Agents contain all message processors Database configures each Agent’s roles (processors) Agents are spread amongst all application servers
(scalability) Agents have several internal queues (parallelism) Agents communicate via Remoting (TCP/IP)
2929
Architecture Overview - Key PointsArchitecture Overview - Key Points
Resilience / Reliability System is hosted on Windows Server 2003 Agents run under MS Cluster Services All communication is checkpointed and fully
recoverable
Scalability / Load Balancing Hash Balancing (order of processing) Internal (Agent queues) and External (amongst
Agents) NOTE: In-memory queues, NOT MSMQ queues
3030
Redmond Enterprise Engineering Center Redmond Enterprise Engineering Center Benchmark – Technical ScopeBenchmark – Technical Scope
Real Time Processing only No data warehousing, no batch processing 1000 messages per second
(200 per second on day 1!) Latency < 1 second
Focus on new technologies Clustering on Windows Server 2003 .NET CLR Performance ( esp. Remoting & v1.1 ) 64 bit SQL Server
Test, Measure, Enhance Availability Reliability Performance
3131
TopicsTopics
Performance-Challenged ApplicationsMessaging Network Architecture"Agile Machine" Agent ArchitectureConclusion
3232
Architecture Requirements Architecture Requirements Be able to scale up quickly
Minimum turnaround time – matter of minutes Easy deployment, reappropriation of resources
Break complex tasks into smaller steps Distribute work across machines Use specialized resources for certain work
Crypto Hardware, Fast Disk, Large Memory
Maximize Total System Throughput Allow parallelization of work
Must work on expectation of stuff happening Ambiguity is the rule not the exception
3333
Queuing Networks – Re-Invented!Queuing Networks – Re-Invented!Sets of Primitive handlers, or technical
operations Generic: Route, Map, Transform, Log, Encrypt Specific: Inference Rules
Composition of primitives into Processing Units Map and Route based on Inference Rule Store and Forward, Synchronize, Split Correlate, Validate, Locate State, Match State
Composition of Processing Units into Networks Combine tasks into workflows Enlist external activities
3434
Benefits this architecture?Benefits this architecture?PrimitivesPrimitives
ReusablePerform common tasksCan be easily adjusted by configurationAct only on well-known message
headers
3535
Benefits of this architecture?Benefits of this architecture?Processing UnitsProcessing Units
ReusablePerform steps in dynamic business
processesHave no co-location assumptions
Good for scale out and fail over
Autonomous services in their own right Good for autonomous computing Good for agents
3636
Queuing Networks: Queuing Networks: Processing UnitsProcessing Units
A processing unit composes primitives Primitives are sequentially aligned in a
"pipeline" Messages pass through the pipeline Primitives modify, split, create or consume
msgs
/net/node1
Head TailPrimitivePrimitive Primitive
3737
Queuing Networks: Queuing Networks: NetworksNetworksA "network" is a set of connected pipelines
Each message travels along a path in the network Path is determined dynamically by routing rules A path is a pipeline made from processing units
Processing units in a network are called "nodes"
Network
GatewayGateway
Transform/net/node1Transform/net/node1
Preproc.Balance
/net/node2
Preproc.Balance
/net/node2
Match/net/node3
Match/net/node3
Augment/net/node4Augment
/net/node4
Match/net/node3
Match/net/node3
3838
Inside a Inside a SingleSingle Node Node
/net/node1
Head TailHandlerHandler
Pipeline
Gate-keeper
RouterSender
PortQueue
Listener
Checks Security
Checks Security Selects
Route
Selects Route Sends via
Transport
Sends via Transport
3939
ConfigManager
MSMQListener
Hosting Nodes to Create a NetworkHosting Nodes to Create a Network
/net/node1
Head TailHandlerHandler
Pipeline
Gate-keeper
RouterSender
Port
AppDomainAppDomainAppDomainAppDomain
Enterprise Services Runtime (dllhost.exe)
Process Initializer / Process Controller
TCPListener
Enterprise Services Port
/net/node2
Head TailHandlerHandler
Pipeline
Gate-keeper
RouterSender
Port
AppDomainAppDomainAppDomainAppDomain
Thread Pool
Request Queue
ProcessProcessProcessProcess
Listeners
4141
TopicsTopics
Performance-Challenged ApplicationsMessaging Network Architecture"Agile Machine" Agent ArchitectureConclusion
4242
AgentsAgentsA powerful architectural abstraction
used to manage the inherent complexity of software
An agent is a self-contained, problem-solving system capable of autonomous, reactive, pro-active, internally motivated, social behaviour
Exist in changing, uncertain worlds in which they perceive and act
Manage mental states for beliefs, desires, intentions and commitments
4343
Agent-Oriented Architecture PatternAgent-Oriented Architecture Pattern
Update Update IntentionsIntentions
Update Update IntentionsIntentions
Pursue Pursue DesiresDesires
(Exec Plans)(Exec Plans)
Pursue Pursue DesiresDesires
(Exec Plans)(Exec Plans)
BeliefsBeliefsBeliefsBeliefs CommitmentsCommitmentsCommitmentsCommitments
Update Update BeliefsBeliefs
Update Update BeliefsBeliefs
ReactReactReactReact
Accept Accept MessagesMessages
Accept Accept MessagesMessages
OtherOtherDataData
Messages fromMessages fromInput QueueInput Queue
Messages forMessages forOutput QueueOutput Queue
Messages forMessages forBack-end ProcessesBack-end Processes
Execute Execute CommitmentsCommitments
Execute Execute CommitmentsCommitments
ControlControlDataData
4444
Update Update IntentionsIntentions
Update Update IntentionsIntentions
Pursue Pursue DesiresDesires
(Exec Plans)(Exec Plans)
Pursue Pursue DesiresDesires
(Exec Plans)(Exec Plans)
BeliefsBeliefsBeliefsBeliefs CommitmentsCommitmentsCommitmentsCommitments
Update Update BeliefsBeliefs
Update Update BeliefsBeliefs
ReactReactReactReact
Accept Accept MessagesMessages
Accept Accept MessagesMessages
OtherOtherDataData
Messages fromMessages fromInput QueueInput Queue
Messages forMessages forOutput QueueOutput Queue
Messages forMessages forBack-end ProcessesBack-end Processes
Execute Execute CommitmentsCommitments
Execute Execute CommitmentsCommitments
ControlControlDataData
IllocutionIllocution
BeliefBeliefUpdateUpdate
Desire / GoalDesire / GoalPursuitPursuit
Intention /Intention /CommitmentCommitment
UpdateUpdate
Agent-Oriented Architecture PatternAgent-Oriented Architecture PatternThe BDI processing loopThe BDI processing loop
4545
Update Action Update Action ScheduleSchedule
Update Action Update Action ScheduleSchedule
Match State Match State & Execute & Execute WorkflowWorkflow
Match State Match State & Execute & Execute WorkflowWorkflow
PermanentPermanent& Message& Message
StateState
PermanentPermanent& Message& Message
StateState
ProcessProcessStateState
ProcessProcessStateState
Correlate Correlate & Update & Update
StateState
Correlate Correlate & Update & Update
StateState Perform Perform Immediate Immediate
ActionsActions
Perform Perform Immediate Immediate
ActionsActions
P-N-VP-N-VA&AA&A
P-N-VP-N-VA&AA&A
OtherOtherDataData
Messages fromMessages fromInput QueueInput Queue
Messages forMessages forOutput QueueOutput Queue
Messages forMessages forBack-end ProcessesBack-end Processes
Perform Perform Current Current ActionsActions
Perform Perform Current Current ActionsActions
ControlControlDataData
A-O Architecture Pattern RealizationA-O Architecture Pattern RealizationThe different kinds of processingThe different kinds of processing
CommunicationCommunication
DataDataManagementManagement
ProcessProcessManagementManagement
ActionActionManagementManagement
4646
Update Action Update Action ScheduleSchedule
Update Action Update Action ScheduleSchedule
Match State Match State & Execute & Execute WorkflowWorkflow
Match State Match State & Execute & Execute WorkflowWorkflow
PermanentPermanent& Message& Message
StateState
PermanentPermanent& Message& Message
StateState
ProcessProcessStateState
ProcessProcessStateState
Correlate Correlate & Update & Update
StateState
Correlate Correlate & Update & Update
StateState Perform Perform Immediate Immediate
ActionsActions
Perform Perform Immediate Immediate
ActionsActions
P-N-VP-N-VA&AA&A
P-N-VP-N-VA&AA&A
OtherOtherDataData
Messages fromMessages fromInput QueueInput Queue
Messages forMessages forOutput QueueOutput Queue
Messages forMessages forBack-end ProcessesBack-end Processes
Perform Perform Current Current ActionsActions
Perform Perform Current Current ActionsActions
ControlControlDataData
A-O Architecture Pattern Realization A-O Architecture Pattern Realization
4747
Queuing Network Agent - ‘Agile Machine’ Queuing Network Agent - ‘Agile Machine’ Network of processing unit nodesNetwork of processing unit nodes
Network
GatewayGateway
Validate/net/node1Validate
/net/node1
Enrich & Route
/net/node2
Enrich & Route
/net/node2
Correlate X/net/node3Correlate X/net/node3
CheckIntegrity
/net/node5
CheckIntegrity
/net/node5
Correlate Y/net/node4Correlate Y/net/node4
MatchState
/net/node6
MatchState
/net/node6
ApplyL/C Rules
/net/node7
ApplyL/C Rules
/net/node7
SetCommitment
s/net/node8
SetCommitment
s/net/node8
Database
DoCommitment
s/net/node9
DoCommitment
s/net/node9
SendNotifications/net/node10
SendNotifications/net/node10
4848
Queuing Network Agent - ‘Agile Machine’ Queuing Network Agent - ‘Agile Machine’ Network of processing unit nodesNetwork of processing unit nodes
Network
GatewayGateway
Validate/net/node1Validate
/net/node1
Enrich & Route
/net/node2
Enrich & Route
/net/node2
Correlate X/net/node3Correlate X/net/node3
CheckIntegrity
/net/node5
CheckIntegrity
/net/node5
Correlate Y/net/node4Correlate Y/net/node4
MatchState
/net/node6
MatchState
/net/node6
ApplyL/C Rules
/net/node7
ApplyL/C Rules
/net/node7
SetCommitment
s/net/node8
SetCommitment
s/net/node8
Database
DoCommitment
s/net/node9
DoCommitment
s/net/node9
SendNotifications/net/node10
SendNotifications/net/node10
DataDataManagementManagement
ReactiveReactiveProcessingProcessing
ActionActionManagementManagement
ProcessProcessManagementManagement
CommunicationCommunication
5050
Agent Logic
Match(Correlation)
Engine
Bucket4713
DEMO – TMX Beliefs and State MatchingDEMO – TMX Beliefs and State Matching
Agent/net/agent
Agent/net/agent
X: Sell
Y: Buy
Y: Alloc
Time t1
Time t2
Time t3
Commitment
[X, Sell][Y, Buy]
[Y, Alloc]
Time t3+d
Intention[X, Sell][Y, Buy]
Time t2+d
Intention[X, Sell]
Time t1+d
Bucket4712
xBucket4713
c
Bucket4711
n m
Match on content
Buckets hold knowledge
Knowledge forms belief
Belief support intention
UpdateUpdateBELIEFSBELIEFSUpdateUpdateBELIEFSBELIEFS
UpdateUpdateINTENTIONSINTENTIONS
UpdateUpdateINTENTIONSINTENTIONS
UpdateUpdateCOMMITMENTSCOMMITMENTS
UpdateUpdateCOMMITMENTSCOMMITMENTS
5151
TopicsTopics
Performance-Challenged ApplicationsMessaging Network Architecture"Agile Machine" Agent ArchitectureConclusion
5252
ConclusionConclusionTune for percentages & (re)-architect for
orders of magnitude in performanceAsynchronous message-oriented computing
is a business imperative- Think Flexibility & Scalability
Queuing networks – they fit well in the autonomous computing model- Think “Agile Machines” 100% compatible with Service Orientation
Indigo is coming and will enable easy construction of these kinds of architectures- Think About It!
5353
Get The Book! And Read It…Get The Book! And Read It…
Build performance, scalability and security into every phase of application development
Use performance modeling as a key part of your process
Performance becomes part of your design
Evaluate trade-offs before you build the solution
You avoid performance surprises when you go into production
2. Identify Performance Objectives
Performance Modeling Process
1. Identify Key Use Cases
3. Identify Processing Steps
4. Allocate Execution Time
6. Evaluate
5. Identify Resource Utilization Req.
7. Validate
Iterate
5555
Resources - Resources - websiteswebsitesArchitecture Guidance Architecture Resource Center: http://www.microsoft.com/architecture Microsoft Patterns & Practices: http://msdn.microsoft.com/practices JOURNAL: http://msdn.microsoft.com/architecture/journalTools Visual Studio .NET 2003: http://msdn.microsoft.com/vstudioPlatform http://www.microsoft.com/windows http://www.microsoft.com/appserverExtra Info GotDotNet Workspace: http://workspaces.gotdotnet.com/fabriq Clemens’ Blog: http://staff.newtelligence.net/clemensv Arvindra’s Blog: http://www.thearchitectexchange.com/asehmi EMEA Architect Forum Tour 2004 Webcast on FABRIQ:
http://www.dotnetmaailma.com/dotnetmaailma/seminaarit/online/EmeaArchitectForum2004.htm
Pat Helland, Architect (Microsoft Corp.), Architects Symposium Keynote,http://www.microsoft.com/pdc, October 2003
5656
Resources - Resources - publicationspublications Yariv Aridor and Danny B. Lange, “Agent Design Patterns: Elements of
Agent Application Design”, ACM, 1998. Yoav Shoham, “Agent-Oriented Programming”, Artificial Intelligence,
60(1):51-92, 1993. Iyad Rahwan, Ryszard Kowalczyk, and Yun Yang, “Virtual Enterprise
Design - BDI Agents vs. Objects”, In Proceedings of the PRICAI 2000 Workshop on AI in E-Commerce – Advances in Artificial Intelligence, Lecture Notes in Artificial Intelligence, Vol 2112, pp 147-157, Springer-Verlag, 2000.
Gregor Hohpe and Bobby Woolf, “Enterprise Integration Patterns”, ISBN 0321200683, Addison-Wesley, 2004.
Pat Helland, “Metropolis”, Microsoft Architects Journal, JOURNAL2, April 2004.
Richard Drayton and Arvindra Sehmi, “Benchmarking a High Performance Transaction Engine Design”, Microsoft Architects Journal, JOURNAL4, October 2004.
Connie U. Smith & Lloyd G. Williams, “Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software”,Addison-Wesley, ISBN 0-201-72229-1, 2002.
J.P. Buzen & P.J. Denning, “The Operational Analysis of Queuing Network Models”, ACM Computing Surveys, 10(3):225-261, 1978.
J.D.C. Little, “A Proof of the Queuing Formula”, Operations Research, Vol. 9, 1961.
5757
Community ResourcesCommunity Resources Microsoft Community Resources
http://www.microsoft.com/communities/default.mspx Non-Microsoft Community Resources
http://www.microsoft.com/communities/related/default.mspx Newsgroups
Converse online with Microsoft Newsgroups, including Worldwidehttp://www.microsoft.com/communities/newsgroups/default.mspx
User GroupsMeet and learn with your peershttp://www.microsoft.com/communities/usergroups/default.mspx
Attend a free chathttp://www.microsoft.com/communities/chats/default.mspx
Attend a free web casthttp://www.microsoft.com/usa/webcasts/default.asp
Most Valuable Professional (MVP)http://mvp.support.microsoft.com/