Upload
esug
View
235
Download
0
Embed Size (px)
Citation preview
Martin is getting the projectorto workwith hislaptop.
Replicated Service Objects
A Strategy for Distributed Applications
Martin McClure
Background:GemStone/S
30 Years!
GemStone/S•Server-side Smalltalk•Object Database
Server-sideSmalltalk•Headless•Multi-User•Scalable
ObjectDatabase•One persistent “image”•Shared transactionally• Merged at commit• Conflicts are detected
GemBuilder for Smalltalk (GBS)•Interfaces VW or VA Smalltalk to GemStone
GemBuilder for Smalltalk (GBS)•Interfaces VW or VA Smalltalk to GemStone
GBS Main Features•Forwarders
• Remote messaging•Replicates
• Synchronized copy• (new) Remote
messaging
Forwarder
ServerClient
Forwarder
ServerClient
Forwarder
ServerClient
Forwarder
ServerClient
Replicate
ServerClient
Replicate
ServerClient
Replicate
ServerClient
Replicate
ServerClient
Replicate
ServerClient
Replicate
ServerClient
Replicate
ServerClient
Replicate
ServerClient
Replicate
ServerClient
Replicate
ServerClient
TransparentDistribution
TransparentDistribution
Good Idea
TransparentDistribution
Good IdeaBAD
DistributionConcerns•Correctness•Reliability•Performance
DistributionConcerns•Correctness•Reliability•Performance
DistributionConcerns•Correctness•Reliability•Performance
DistributionConcerns•Correctness•Reliability•Performance
An Embarrassing
Story
n2
One Month
Tools used Forwarders
Lessons•Test scaling•Test with latency•Need better design pattern
ReplicatedServiceObjects
Example:InspectorService
ServerClient
ServerClient
Inspector Service
theObjectproperties
ServerClient
Inspector Service
theObjectproperties
'self' -> '0@0' 'class' -> 'Point'
'x' -> '0' 'y' -> '0'
Dictionary
ServerClient
Inspector Service
theObjectproperties
'self' -> '0@0' 'class' -> 'Point'
'x' -> '0' 'y' -> '0'
Dictionary
Inspector Service
properties'self' -> '0@0'
'class' -> 'Point' 'x' -> '0' 'y' -> '0'
Dictionary
ServerClient
Inspector Service
theObjectproperties
'self' -> '0@0' 'class' -> 'Point'
'x' -> '0' 'y' -> '0'
Dictionary
Inspector Service
properties'self' -> '0@0'
'class' -> 'Point' 'x' -> '0' 'y' -> '0'
Dictionary
ServerClient
Inspector Service
theObjectproperties
'self' -> '0@0' 'class' -> 'Point'
'x' -> '0' 'y' -> '0'
Dictionary
Inspector Service
properties'self' -> '0@0'
'class' -> 'Point' 'x' -> '0' 'y' -> '0'
Dictionary
ServerClient
Inspector Service
theObjectproperties
'self' -> '0@0' 'class' -> 'Point'
'x' -> '0' 'y' -> '0'
Dictionary
Inspector Service
properties'self' -> '0@0'
'class' -> 'Point' 'x' -> '0' 'y' -> '0'
Dictionary
ServerClient
Inspector Service
theObjectproperties
'self' -> '0@0' 'class' -> 'Point'
'x' -> '0' 'y' -> '0'
Dictionary
Inspector Service
properties'self' -> '0@0'
'class' -> 'Point' 'x' -> ' 42 '
'y' -> '0'
Dictionary
ServerClient
Inspector Service
theObjectproperties
'self' -> '0@0' 'class' -> 'Point'
'x' -> '0' 'y' -> '0'
Dictionary
Inspector Service
properties'self' -> '0@0'
'class' -> 'Point' 'x' -> ' 42 '
'y' -> '0'
Dictionary
ServerClient
Inspector Service
theObjectproperties
Dictionary
Inspector Service
properties'self' -> '0@0'
'class' -> 'Point' 'x' -> ' 42 '
'y' -> '0'
Dictionary
'self' -> '0@0' 'class' -> 'Point'
'x' -> ' 42 ' 'y' -> '0'
ServerClient
Inspector Service
theObjectproperties
Dictionary
Inspector Service
properties'self' -> '0@0'
'class' -> 'Point' 'x' -> ' 42 '
'y' -> '0'
Dictionary
'self' -> '0@0' 'class' -> 'Point'
'x' -> ' 42 ' 'y' -> '0'
ServerClient
Inspector Service
theObjectproperties
Dictionary
Inspector Service
properties'self' -> '0@0'
'class' -> 'Point' 'x' -> ' 42 '
'y' -> '0'
Dictionary
'self' -> '0@0' 'class' -> 'Point'
'x' -> ' 42 ' 'y' -> '0'
Principles•Replicate everything you'll need frequently
Principles•Represent information as basic objects when necessary.
Principles•Do everything you can predict in a single round trip.
Replicated Service Objects
A Strategy for Distributed Applications
Martin McClure