!
" " #$ %&#
&$ '(
!" #!
$%
! "#$ %
&
! ! #
'()
* ++,
() ()
! - $
.
+/
') 0 & ' % ( 1
2 3 0#
$%
''
4525
-" . -". .6 4( 0#
0# 1
0#
3 -". 32
2 3
'20#)
3 3
# -". 0#
-". 0# ) 0# ' # 1
0 3 - 2 0 0
-". 0# - ! 4( 7*8 0
0 ' 8-4
-". 0 0 9 0 8-4 ' 1
+ -". # 31
:*8 0
.6 -".2 ) 1
0 0# 0
;0 0#
* ' +
;#
5 <= "
, ' -
5 >0# . ?
5 5 -
5 5 -".: : 8
5 5 5 -".: 80 8
5 5 -".$8
5 5 @ .8 5
5 -". + A0 5
. ' */
- + ! @
5 + -".: 808
5 ' &. ?
5 5 8. 5
/ % # #! ,*
@ B8' A0 -". 0 5
@ 5 -". <3 5
@ 5 " 5?
@ 5 5 * 5C
@ 5 <3B
@ + 5
@ B!> 5
@ 5 > -) @
@ <3-' C
@ @ - + D
@ @ 4 - @
' <3()-".' @
' @
5 <3 @@
5 - - @@
- -". 0' @
@ -". + A0 @
1 /2
' A0 -". 0 @C
-". 0 ! 4 @C
5 -". 0 .4
5 -". <3 @
5 * @
5 5 <3B
+
B!> ?
5 > C
@ 4 -
- "0 1/
? +. ! - @
? '
? 5 ' '
? &:' +. ! -
? 5 ;# <=- ?
? 5 <Æ <3 ' C
? 5 5 ' <Æ <3 ' C
? 5 &:' ;# <=- D
? 5 @ B 8<= D
? + < :-". ' ?
? ' ?
? 5 ' ' ?
? : - " ?5
2 ' '' 3 -.
& --
4 3 5 3 ' -6
5 :1.+ -". C
5 5 -". >0# -
5 + A0 -". 0
. ?
5 !) " C
@ . + -". 0 55
@ 5 +#. 5?
@ +4#! < 5C
@ @ +0 ." * <3 5D
@ + 0;# ..
@ .+B!>
@ ? +- 8# @
@ C -+ >
@ D 0 5 0-) ?
@ .+-() C
@ +<3-' C
@ 5 .+- + @
@ +% @
@ @ +8 < @5
- A0 -".' @
5 + A0 -".' @?
. + -". 0 ! ! 4
5 . + -". 0 ! .4
+4#! <
@ + 0;# ..
+0-8# ?
.B!> .4 C
? .B!> ! 4 C
C -+ > ! D
% 5
+8 <
? . ! - ' ?
? 5 ;# <=- &:' ?
? 4;0 8<= ?
? @ <Æ> : * '0 <Æ"- ?
-". -".E F 0# 1
0# 2
' -". 2 3
'EF2 1-".#8'4:7
"!. 1
# 0 3 2
' .1"!.
' 2 -". 0# .6G 4( E5FEC F 8-4 '
0# 32
3 <3
1 )032 1
3
'2 3
* 3 .6 -". 0# 1
3 0 2 #
;3 #2
2 ) 0 3 -
3
32 3 )
)
-". 0# ' ) -". 0# 8-4
-". ' 0 -".
8-4 - -". 0#
8-4'-". -".'- ! 4(
7*8 00 '
> -". 0#
EF ' E F2 - -". "!. + 0
31 0
# # 2 2
+0# 4(G.6 * 3
-". -". 0#
) 3 '
3 3
-". 0# ) 0# '2 ' 1
3 -". + 0
-". '
-".
8-4 ' )
-". . 5 -". 0#
-". 0 8-4 .
2 -". 0# +
-". # 8-4 . @ '
) -". ' .
+ -". # ' .
() . ? .0#
. C '- )- -".0
- ) 0 -".0#
-".0# 5 1
0# 5 5 0 0 -". 5
0 -". 8-4
>0# !A* EF2 .<"- EF2.<*G+.<*ED F 1
0# ) 2
= 2 2
>0# E? F E5 F 3
- 0# 2
0#2 -". 0# 4(
= 0 22
8
3-". --". #
0# - 0
0# )
3 -". 3
>5 010-".1
0# 0#
! -".
403
0
-". 3/ - 3 -". 3 1
--". 3 -".
Parallel/
Distributed Application
getHPFVector Push
Sync
Join
AutoExecution
Leave Register
FTSService
GracefulRetract
Node Administrator
connect
Create
Release
> 5 / :1.+-".
-4/ -
20 B!>
B!> - B!>
- B!>0B!>
0#
() / - ) 1
* -/ ; B!> 2
2
3 #
B!>
*/ * -". 3 - -". 3
3
B!>
/ - ) 3
!/ ; -".13
2 1# -
)3,
-1/ -3 #
- 32
3 0
3 ) 0
; / - 0 -". 3
-". 3 ' 3 2
#
() "/ -3#0
! -". 3 -". 3
H 0 # ! "
-".3
"/ - 3 1 0#
3 2 )
3 0 0
> 23,
#0 3
2
-". 3 !) 0
>/ --".3
-". 3 2 2 3
0 >
-".3 -> 1
0 > : 2
> -".
. * <3/ " 3 ) 0
' 3 #02) ) 3
> 3
#0 - ) ) )
0 3
+/ - -". 3 = # - 1
=3 0# 0
+0#
+ 3 / * 3 -".
% 8 ( )
% 3
> 5 5 -". 0# -". =
0 0
-".
+
4 3
-". 0# 0 -".0#
. )-".0
0 . ! 0
)
-".# 4(
+ 2
)7 8 ' 0 0 -". 32 *1
2 )
0 -".3 ; -". 3 1
23 )0
-". 3 ) -". 3 ) ) 1
-". 3 ) -". 3
9
8 +
)20 4( 0#
-". 0
UserProgram
IMyObj
Factory
Container ARCObject
NodeAdmin Program UserLevel
.NET Remoting Infrastructure
Call Services Call Services Call Services
Asynchronous Notify
ARCObject Proxy Layer
ARC Kernel Layer C ommunication
Kernel Services ARC
Proxy Layer ARC Services
NodeAdmin Services Services
ARC Object
Join Service Registration
Service
Migration Service
HPF Service
ObjectArrival Intimation Service Developer Services Translated UserInterface
Acquire Proxy
RealObj
ARC User Upper Layer ARC User Lower Layer Layer
Service Auto Execution Fault Tolerance &
Leave Service Activation &
Trigger Service
> 5 5/ -".>0# -
#2 3
! 8 4 3
-". 0# -". 0# 4
3 - -".
4( 0 0 1
.00# 4(
)
!
> 5 0 0 -". 0 8-4 - 8-4
3 -". -".
0# % -". 0#
4 -". 0# -". 0 9 -".
4( .!
. @ -".0
:logical ring
:a node not in the ARC logical ring
:LAN Network
:a node in the ARC logical ring ARC
Sotware Components
ARC Sotware Components
ARC Sotware Components
ARC Sotware Components
ARC Sotware Components
<<TCP .NET Remoting>>
<<TCP .NET Remoting>>
<<TCP .NET Remoting>>
<<TCP .NET Remoting>>
<<TCP .NET Remoting>>
ARC Network
>5 / + A0 -". 0
- -".2
-".0#
5 -".
" #
- -". 2
-
- 3 0# )
3 0# 1
' 2
) -". 3 :-". 2 1
) ")
-". 3 ( 0# 1
-". E F -
-". 3 0#1H0 -". 0 -". 3
-". ) '
) 2-".3 20
# 3
) #
9
0 -".3 0
0 -". 3 )
) ' 02 -". 3
-". 3
!
"
)7
' !
-". # -". 3
)
#$
%$ &'
(
) **
+, -..) * /0
1 #22
+ 3 , 4
"
"
"
+, -..3 , 422
"
"
"
+ 2 9
*)3
' ) 2 # 0 $ !2
0 %&'( 0 0 * $2 '!
'! %$
0 ) #
-".3
-2 !
" -".3
3
3
5+ 3(6$
73(68 +
73(6$ + 9
73(6$ + ! +:
73(6$ + ;
< =5>?3(6$ <
@+ * 3(68
9 +*3(68 5
9 +$&3(68
73(68+ 59
5 9 +*3(68>
A+ !
#$+ 9 #$+6 +#B
C+
+ 5
?+ B
+, -.. 0 22
D+ B
+
E+ *
+, -.. 22
"
"
"
4 B!> B!>
0-".3
-) # 3
' 0
$ % %"
> 5 0 0 -". 3
0
2
) Æ -1
'
-". 3, 2 0 2
-". 3,
«interface»
IContainer
Container Factory
+New(): IMyObj
«interface»
IPushCommand
+push(machine:HPFValue): int
«interface»
IMyObject
+myOperation(param:type): type
UserProgram
PContainer
«implementation»
2
«instantiate»
«interface»
IRefCount
+IncRefCount(): void +DecRefCount(): void +RefCount(): int
«use»
«use»
«interface»
ISync
+Sync(): void
+GracefulRetract(): void +connect()
«interface»
IMigratable
To Interfaces IMYObject, IPushRequest
> / .
-".
0
! " # "
'200 2
2 0
''*<3/ 1
-".3 1
' 2
2
Proxy
PReal
Activator (.NET Remoting)
+GetObject(): Object
«interface»
ITrigger
+Trigger(): void +OnReturn(): void +OnRetract(): void
«interface»
IRealUtil
+isRetractonSet(): bool
+RegisterForRemoteAccess(): void
«interface»
IMyObject
+myOperation(param:type): type
Nonoriginator Context
Real
«instantiate»
«implementation»
«interface»
IRefCount
+IncRefCount(): void +DecRefCount(): void +RefCount(): int
«use»
«use»
«use»
«interface»
IMigratable
«interface»
IPushRequest
+push(machine:HPFValue): int
Container at Originator
«use»
FrontEndReal
«use»
To MarshalByRefObject, IMyObjectMigratable,
IFronEndRealUtil, PFrontEndReal
> 5/ !) "
''/ > -".32
$20
2 * !
'! 3
' '"./ ' # # )
-".3 '
! '
. "/
0> 5 '*<3' <
5 0 '*<3 '".
"
2 # 3 0
-
!
../ : #
. -".
3 0 '
-".3
30, 2 ) 0 3
'
! 0
' ) 0 0 # #
- 2
# 2
#-".3
+ 0 >
.!)/ 0> 52 )
,! ', 4(
- '( - )
) 0
-". 3 0
. >("/ - 0 -". 3 0
- # -". 3
) '
# -". 3 2 " 3
*"<32 0 # B2 0
-". 32
# 3 ! ;
! ! $2
,!2= 32
3 -0> 52 ,!
,! 0
. >/ - -". 3 1
-". 3 - %+
>
+
1
.2 " >("
+ 2! ,!
.!./ -0> 2=%" *
-".3
%+
"2 ! %"
'
2 >
* -". 3 *#
3 *
H -". 3 0 # -". 3, )
-". 3 H
<
-".3 -
2 #
-". 3
. !"/ -0 > 52 = %!.
%!/ .! # 0)1
-". 32 1
2 2
! !
* 0 3 1
B02 1#
) * #
H0
'02-".3
2
3 -".
32
. !>("/ -0 > 52 %!0
. "
!
' 2 -". 2
-". 0# 4( 2
2 32
! 3-". --".
#
0# - 0
0#
) 3
-". 3 -". =
2 -". 3 2 +
4 @ 0 -".
0 @ 5) -". 32 @
@ @
& ' %" ( !
>@ 0 :*8 EF -". ' 0 !+2
0 G -". 0# ( -". 0# 1
0 > )
@ = -".
+ 0
ARC Node
CodeMotion Server .dll
Name Server .dll Object
Server .dll
Join Class.cs
FTS Service .dll
ARC System .dll
HPF Server .dll
StartUp Program
Config File
User Program
> @ / . + -". 0
:!2 > -". ' 1
-". 3 '
!+" 003
) ' 3#
# @ 5
-".<3 + 4 -
. . .
-". B!> %
<3 > !
.* 4
@ / . .=
<3'+ <3'+
"<3'+ 2-". ' -".<3 '-". 3
*
"*
B *
;*<3'+ 2
;!<3'+ 2
'>
-8 <3<>4
"*"*
-()8<3'+ 3
"-".<3- <3'+ 3
!;#
'!
**
!4<3'+
' =
**
'()
*4)B *
9
@ 5/ -". .
)7
!+" -". 3 /
3 ' 3
!+" # (
# -".3 - !+" 2
/ 0 '( " 3
@
!
-".3 ' 1
3 :
-". 3 -". 3
0" 0)
3*
'-".<3
' 3<3'+ 32
@ / <3 .
@ @
'-".<3
" 2<33
:"
':!
""2<33
@ @/ 4 .
(
03)-".0
3
@
'!
3%*
3
%* %%*
%*%%*
!
@ / % .
!+" -". 3
-". 3 +& " 1 0 !+"
@
'-".
<3'+ 2 .
..<3'+
8#A<3'+ 2#
'-".<3
8. <3'+ 2 .
@ / .* .
' &
-".# " 1
20
'
# =
1" /
I '
-". /
0!+'(
@ ?
5&
/ $""
#0#
B!> / 0$""
B!> B!> 3 2 0
# 12#12 $
@ C
"<3 320
'%
<44 %
4 ;8<4
4 ;%<4
4 '2<4
'8
88*
<48
8'
'-".<3
>-()<3'+ 3
'!
#
B>>*
@ ?/ > .
: &
20#-". '
-".32 0 -".3 "2
$"" " !+"
-". 3 +& 0
"2 1" '( "
& ) "
-". 3 -". 32 3
0# -".32
-".3 0#2
) 0 -". 3 -".
03
30 -".
3 0 ) 0
:' B!>A ':B!>A =
:' B!>A ':B!>A
:' B!>A ':*<B!>AEF
"<3
'-".
<3 &B!>A
-". 'B!>A '-". &B!>A =
'-". 2 '>
<3&B!>A
'!
B!> ' B!>A 8#
'8
48#
@ C/ B!> .
% &'
- # 0 ) ' -".2 #
$ -". 3 > @ 50
# / -". 3 .
+ . +
+& " 0!+" !+"
-".3
New
UserProgram Factory ARCSystem
Create
CodeMotionServer
ARCObject Register
LocalCopy Container
>@ 5/ +# .
-". -". 0
# 0
3 - # -". 3 0
&'
0# >@ 0:*8
0#
push
make entries
getCode
send ARCSystem
Remote Server
CodeMotion ObjectServer
ARCSystem CodeMotion Server
Remote
catchfile ARCObject
UserProgram
push
load object notify
Asynchronous
object store
entries make
make entries Newmessage send
Executor Thread Trigger
Handler ARCObject Trigger create
Remote
node1 node2
> @ / +4#! <
1# 0 0
$ ) :#
20
0 -". 3
!+" #3
' '
*3# )$0
!+" 32
3'( " -".31
2-".3 ( '( "
3
;
=
sync
send
entries make
object store Asynchronous
notify
sync return ARCObject
ARCSystem ObjectServer
ARCSystem
UserProgram Remote
get object push
push sequence
sendmessage
Execute Trigger
node1 node2
> @ @/ +0 ." *<3
' 0 > @ @2 "
3 0#3# '
3 0 ' 2
)$* +%
< -". 0# 3
: ! -". 3 #
30 -". )
33 -".
3 - 3
#
'
! -". 3#3
: '! ! 0
!+" -". 3 # :
! " #
2 0 ' #
$ : $ 0
2 ) $ - )
$ # '! -". 3
#
'
+ -".3 - 2
) 03
> @ 0 0#
/ -". 3 -". 3
)! ! $
< -". 3
32 0 ; -". 32
4("0# ) ) -". 3
2+
/ ) ' 0
-". 3
) / -". 3
0
' -".
3 )$ )
UserProgram ARCSystem .NET Remoting ARCSystem ARCObject
push sequence Push
sendmessage
NewMessage Handler create
Remote ARCObject Trigger
Thread Executor
Trigger
func
GetObject getIp
connect
Remote Proxy
create RemoteAccess RegisterFor
func proxy
local create connected
setProxy
func func
node1 node2
Remote
> @ / + 0;# ..
'<5
-".3 0#
; 2 3
0
3
< -".3 2
$ >0 -".
3 )
< -". 3
5 . 3
<3
>0 )) -".3
-". 3 $
-". 3
3 -". 3 0
) - 0 -". 3
-". 3 3
2 -".
30 3 )
-". -".1
B !0 > B!> 2 > > 2
<3-'2-+-".3
+, &'
< !
)9 #
9 -".
1#3 <# 0
+ 1
) #
B!> 9
5& &
B!> :*8 >
@ 0 " " 3 2
# B!>
' / %/ 2 0
" # .3#
#
# 12 #12 $ :
0 # B!> " %
.3# "
2 B!> $"" %$"" 1
" $"" '
# $"" # 1
$"" " %$"" 0
>@ #
&
! 0 ) #
! G -".
1'!
+ 0
+ 1
-". #
«interface»
N5::IUser
«interface»
N6::IPeer
ARCSystem HPFValue
«interface»
N1::IUser
UserProgram
HPFServer HPFVector
«interface»
N3::IUser
«interface»
N7::IFTSServer
«interface»
N4::IARCSystem
«interface»
N2::IARCSystem
LocalData
«use»
«use»
«use»
«use»
«use»
«use»
N8::IHPFServer
FTSServer
«use»
*
Remote HPFServer
«use»
N1:UserInterface_HPFValue N2:ARCSystemInterface_HPFValue N3:UserInterface_HPFVector N4:ARCSystemInterface_HPFVector N5:UserInterface_HPFServer N6:PeerInterface_HPFServer N7:FTSServerInterface_HPFServer N8:HPFServerInterface_FTSService
>@ / .+B!>
-# # 1
-# B!> E F B!>=
0
. " # 0
# B!> /0
0$"" B!>
' B!>
) 1 80 B!>
>
½
B!> 0 8 %
·½
) B!> 2&2&2
%
·½ J&
I&%
½
%
& 0
) B!>
:
%/ "
: # " # (
) #
> @ ?0 #
: #
8 " #
#
UserProgram getHPFVector
HPFServer
acquire Lock
*
getNodeset
HPFServer Remote FTSServer
node1 node2
> @ ?/ +-8#
: %/
0>@ #00# #
:
#0 + B!> #
= ' 2 #
=#
20 -". 3
, " - &'
> -
G# -". 0
,2 -".3
' $ -". 3 0 )
) 0
>0E F >@ C
:*80$"" '
0#
( 0
originator else
start
Handle Failure waits for a
message
Register MyARC for FTSService
BackNode Unblock
nodeset update
Register MyARC Object
Pass Failure Message to Front Node
Check Leave Status
Leave Message
Set Leave Status
False True
isFrontNodeSet
true
Block false
wait for t sec no failure
failure detected
and form new ring update node set
Pass Failure Message to Front Node Monitor Front Node
>@ C/ -+ >
; 2 #
' 2 # 0
K
2
# 0 '
0 0
; 2 # 0
'
& # '
2
##200
0 & (
&
2 0
0 #0 0 -
'
-". 00 -".3
: -". 3 0 $"" > @ D 0
2 0 -". 3 #
0 ,2 #J5
- 2 0
0 # #
$"" 3 0 #
!+" $"" # # 3
+ 2$""
0
" 3
5 () )
0 )
' 0 > @ D2 -". 3 4
,2 <4 '>@ D2 3
!+" 2 $""
0 !+" " 3
-
32$"" : 2
0 !+" 2$"" ) $
' "0 '
,2 -". :
# $ -". 30 )
' $ ) 0
32 $"" # ,2
> $"" 3)
> @ 0 ,2 -". 3
,2 ' +
AutoExecON
ARCSystem
UserProgram ARCObject FTSServer HPFServer ObjectServer
register FTSService register Execution Auto
push
getObjects check
Registry getHPFValue
resend
changes make
in object entries
Failure Notification
getObjects
check Registry check for
auto exec
execute Locally
make changes in object entries
execute
object store
notify Asynchronous
get object
Remote CodeMotion
Server
push
Server CodeMotion Remote
ARCSystem
make entries
getCode
catchFile Failure send
Notification
getCode
catchFile
Failure Failure
Remote ARCSystem2
Remote CodeMotion
Server
Executor Auto
NewThread ARCObject create
Trigger send
send
>@ D/ 0 5 0 -)
ARCSystem
Registry FTSServer
«interface»
N2::IUserProgram
UserProgram
«interface»
N4::IFTSServer
«use»
«use»
«interface»
N3::IARCObject
PContainer
«use»
«interface»
N1::IContainer
«use»
N1:ARCobjectGeneratedInterfaces N2:UserInterface_FTSService N3:ARCObjectInterface_FTSService N4:FTSSericeInterface_ARCSystem
> @ / .+ -()
> 2 $"" %!+'(
)$* ' ! &'
<3 ) -". 3
- 2 -". 3 ) 0
" -
" 03
> @ 0 3 .0
" 3 3
" /
3
UserProgram
ARCObject
«interface»
N1::IUserProgram
«interface»
N3::INameServer
NameServer
«interface»
N2::IARCObject
«use»
«use»
«use»
N1:UserProgramInterface_NameServer N2:ARCObjectInterface_NameServer N3:NameServerInterface_UserProgram
>@ / + <3-'
/ %/ 0"
-". 3 / =
%" > @ " 0 /
- / -". 3
) /
3 2 0 5 -". 3
=
)7
-". 3 %!+'( = " 0
" - 2 "
/2 0
3
' " . ' &'
- + 0# 1
- 0 -". 0# -". 32 0
' 2 -".3 =
# 820 32
-".3=# 0
20 @ D ")
=-+2<33
=2<33
<3=
=--
@ D/ =.
> @ 5 0 - + . "0
) %") !+" -". 3
/ !+'( ")
< -". 3
-". 3 0 $"" -
$""2 1 $""
-". 32 0
Serializer
ARCSystem N1::ISerializer
UserProgram ARCObject N1:SerializerInterface_ARCSystem
>@ 5/ .+- +
&& *+ + "
-". 3 '
-". 0 3 ) 0
9 0#
(
>@ 0 :*8 1"
E F >0 1"+
- 0 1!.
5 0 1!. 0 3
K
' #0 3
@ : K $""
1
(1
$""
#
>@ @ 0 :*8
E F >0 0# 0 0
. $""
5 ' " #
Join Request Broadcast
Waiting to get reply Reply Received
[not from the leader]
Reply Received
[From the leader] / Know id
Active
[time out]
/ first node
Join Broadcast Waiting
[Join Message Reached]
/ update nodeset
[Join Request Reached]&&
[Leader]
/ generate new id and send nodeset [ ! Leader]
start
[Join Request Reached]&&
/ send null
Failure
to get a message
nodefails
>@ / +%
" $""
@ * H
- #
Leave Process
HPFService FTSService FTSService
returnId donot give
locks
nodeset return
modify nodeset
leave Broadcast
*
Remote
node1 node2
>@ @/ +8 <
. 52 @ 8-4 -".
0# )-".'
3)-".'
5
@ 0 -". '
, ( + )" -.+ " ( /
' , '
' '
#0#) # - 1
0# 0#
0 +
#
#
/ !
*908-4 '
8-4
'
2 9 0# -
-". '
0 )
0
3 ) -". ' 0 >2 0 1
) -". 8-4 2
0 0
40 )-".0
) 8 () 0 3
'
5 )' 8
'
& 8 *#-".'
7*8 0 # -".
'0 3)-".
0
) 8 "-".8-42
0#
5 '8 " ) -".8-4
8 ' 0 1
0# '
,
9 2 1
-".08-4 >)
8-4 3 20 Æ
' B -". 0#
2 2
32 2 B!> > .00
# 7*80B!
; ) -". 0# 1
2 0 # -".
0 -". 0# 8-4 ' '
-". 0 ) -". 0 8-4
. 8-4 -". 0
3 )-". '
> 5 5 -". 0 8-4 > )
-". 0 '
> 0-".0 "
0 -". '
0 4( 7*8 0 2
0 ) -". ; = 9
# 0 0
-". 8-4
-". # -". 0 8-4 1
'-". # -". 0>
2 0 0
8-4 ' 0
-". # .
-". 01
-". # 9 8-4 '
. 0 7*8 0
; 0
-". 0 ) 4(
0 -". -".
-". 0 8-4 ' -".
,& !
> 50 0-".0' -".'
0 -
9 -
' --".0# ''
'' 0 0
' - 2 0 0
! 9-".0 1
9 -". ' B! 7*8 01
7*8 0 ) 0
-". 0 . -".
0
UserProgram
IMyObj Factory
Container ARCObject
NodeAdmin Program UserLevel
Call Services Call Services Call Services
Asynchronous Notify
ARCObject Proxy Layer
ARC Kernel Layer
Kernel Services ARC
Proxy Layer ARC Services
Developer Services Translated UserInterface
Acquire Proxy
RealObj
ARC User Upper Layer ARC User Lower Layer
ARC Object Services
Join Service
Leave Service NodeAdmin Services
Intimation Service ObjectArrival Registration
Service Trigger Service Activation &
Migration
Service Service
Auto Execution Fault Tolerance &
HPF Service
Acquire Proxy
ARC Kernel Proxy
Remote Communication Communication Layer Local Layer
HPFService Wrapper
FTSService Wrapper
Leave Service Wrapper Migration
Service Wrapper
Join Service Wrapper
.NET Remoting Infrastructure
Web Service Layer
.NET XML WebService Infrastructure
> / - A0 -".'
:The Internet :participant
node
:participant node :participant
node
:logical ring
:Central server IIS
ARC Software components at participant node
IIS
ARC Software components at participant node
IIS
ARC Software components at participant node
IIS
ARC Software components at central node
<<HTTP XML Webservices>>
<<HTTP XML Webservices>>
<<HTTP XML Webservices>>
<<HTTP XML Webservices>>
> 5/ + A0-". '
+ -". '
-". 0 0 ; 0
. @ -".
5 -".3 2
@
0 ( !
-". '00 #
!
5 .
! 3 -". 0# -". 0#
. ' -".
3 2 > B!> -". 0 0
0 0 -".0 0
-". 0# 5 0 -".
0 0
0 & 1"
-". 0 0 -". 0 8-4
= 9 -". 0 8-4 -". 0
' (
8-4 ')
0 '
-".0
. . .
-". <3 !-". ;
B!> . * !B!> ;
> 4 !> ;
% !
=
/ . 08-4 ' -". 0
> 0 -". 0
) 2 "
0 > ' ) 0 > @ '
0 !),!,
2 ),.,
&3
!+" '
0 !+" ''
> !+" 5
3 '
0 * ; ".8 >
;
"*; *
"-"*-"*.
5/ -". ;
&5&3
"
0 " ' '
> " "
# #0
ARC Participant Node
CodeMotion Server .dll
Name Server .dll Object
Server .dll
Join Class.cs FTS
Service .dll
ARC System .dll
HPF Server .dll
User Program PFTS
Service Wrapper .asmx
PARC System Wrapper .asmx HPF Server Wrapper .asmx
> / . + -". 0 ! ! 4
;
B!>A8#
/ B!> ;
& 3
$"" 1
0 $"" ' '
> $"" @
$"" -".
0$"" .0
$"" -".
0 & 1"
. -". ' ' 3
2 > B!> > 5 0 -".
0
8.#
>44'
.>44'
@/ > ;
ARC Central Node
Join Server CFTS
Server
CHPF Server
Startup Program
Config File CFTSWrapper
.asmx
CHPFServer Wrapper.asmx
CJoinServer Wrapper.asmx
> 5/ . + -". 0 ! .4
=
' ; 0 2 0
' ' ' '' "
' -".
0 +
0
A .
. 4A '
.> ; .>
.B!> ; .B!>
.% ; .%
!
/ A . .4 '
+$""2+ " +1" '
+1" %1 #
-". 0 0 3 +$"
%+$"" +$"" -".
+ " %+ " #
'.%
4044' 0K
4'4<4'K
'.> ;
B>4'
'.B!>
-884K
/ .> .
5&
+ " ' # #
C
'.B!> ;
:' B!>A ':B!>A =
:' B!>A ':B!>A
"<3
?/ .> .
(
%1" ' 0 +$""2
00 -".
'% ;
%" "% 2 4
C/ .> .
"
' 0
'
#=
3
$""
0 +$"" ' '
>+$"" D
;
B>4'
D/ .> ;
5&3
"
0 + " ' '
> + "
# 12#12 $
;
B!>A B!>A =
B!>A B!>A
"<3
/ .B!> ;
(3
1"
0 +1" ' '
> +1"
1! 0 3
2 0 03
%" " 2 4
/ .% ;
0 ) "
@ 5 -". 3 -". 8-4 5
=-".30
0# ' ,
0 8-4 -". '
0 0
8 .
0
" !
.
"
* 1
5/ -".3 0
0 (% &'
*0-".32)
$2 = 3
. -". 3 "
= ' - ! 4(0
-".3 ' ",
0 8-4 -".
@ 5 5
&'
> 0 ' ;
-". 3 2 !+" 0 0
; 3 !+"
ARCObject
UserProgram ARCSystem
push
push
make entries BufferReader
Thread
Server ObjectServer
Server Wrapper Migration Remote Wrapper
Migration CodeMotion
CodeMotion Remote ARCSystem Remote
Buffer
make entries
Asynchronous notify
send
send
object store
send setCode
get object
send getCode
write signal
read
Thread Executor NewMessage
Trigger Handler create
Trigger ARCObject Remote
node1 node2
> / +4#! <
' '
!+" -".320
0 "# 0 3
0 )$* +%
-". 3 ! 2 1
' ! 8-4 -". '1
-". + + @ 5
' - ! 4( 0 '1
' 1 - ! 4( 0
-". 3
' - ! 4( 0 : 001
0 -". 3 ;
0-".3 0 -". 3
- 0 ''
> @ 0 ;
2 )0:"8-".3,
-".3-".3
)
getIp
connected func
UserProgram ARCSystem ARCSystem
connect
setProxy ARCObject
proxy setURL
create
func Push
push sequence
sendmessage Executor Thread Trigger Handler NewMessage
create
Trigger Wrapper
func func func
ARCObject
create Proxy Remote
Remote ARCObject
RemoteAccess RegisterFor local
Remote
node1 node2
> @/ + 0;# . .
0 " "
-". B!> 2 > 2 -()2 <3
-'2- + @
-". 8-4 =-".
00#
' ,0
8-4-".' 0
0
0
<3-' B!>
- + >
-()
- +
/ -".3 0
0 +, &'
B!> B!>
# -". 3 1
B!> 1
B!> # '
-".
&
> 0 # : #
B!> B!> 8 B!>
2 0 #
B!> :
-".
Program
HPFServer
User Central
HPFWrapper HPFWrapper HPFServer Participant
Remote
Remote Central
HPFServer getHPFVector
getHPFVector
getHPFVector
* acquireLock acquireLock
node1 node2 node3
> / +0 -8#
5& &
> 0 B!> . B!>
, B!>0 # + "+
> #0
CentralHPFWrapper
ParticipantHPFServer
N1::IHPFServer
CentralHPFServer ParticipantHPFWrapper
CFTSServer
«use»
«use»
«use»
«use»
«use»
N1:CHPFServerInterface_FTSService
> / . B!> .4
«interface»
N5::IUser
«interface»
N6::ICetralNode
ARCSystem HPFValue
«interface»
N1::IUser
UserProgram
HPFServer HPFVector
«interface»
N3::IUser
«interface»
N7::IFTSServer
«interface»
N4::IARCSystem
«interface»
N2::IARCSystem
LocalData
«use»
«use»
«use»
«use»
«use»
CentralHPFWrapper
N8::IHPFServer
FTSServer
*
«use»
«use»
«use»
CHPFServer
«use»
«use»
N1:UserInterface_HPFValue N2:ARCSystemInterface_HPFValue N3:UserInterface_HPFVector N4:ARCSystemInterface_HPFVector N5:UserInterface_HPFServer N6:CentralNodeInterface_HPFServer N7:FTSServerInterface_HPFServer N8:HPFServerInterface_FTSService
> ?/ . B!> ! 4
> ? 0 B!> -". 0#
B!> 0 + 1
# .
%+ " " #1
0 ,
@ 5-".8-4 ''2
-".-". !
>0
' -".
> 0
( #
- #0 ' #0
set FrontNode
Monitor front node start
waits for a message
Register MyARC for FTSService
Register MyARC Object
Check Leave Status
Leave Message
Set Leave Status
False True
FrontNode Change
yes Unblock no
failure detected no failure
Inform CentralNode
false
wait for t sec true
Block isFrontNodeSet
Liveness Check blocked?
Type of message
Local Incoming Message Handler Liveness Check
> C/ -+> !
> C :*8 $""
' -
.
, . 0
2 0 2 0
.
: 2 $""
-". 3 $""
!+" #0 -". 3 0
> D 0 2 0 -".
3 # 0 ,2 #J5
0> @ D8-4
' ' 2 0 0 #
0 0
0& *+ + "
'-".'3-".0#
@ @ -".8-4 ''1
-".2
8-4 -". 3 2
0 0 1
3 30
> 03 # 1
03 -
+ $""
(
> 0 :*8 3 40 3
#0 . 0
03 '
3 >0 # 0 0
3
- 0 1!
5 . 0 > 0
.> #
@ .> 0
0 3
.% 0
AutoExecON
UserProgram ARCObject FTSServer
register FTSService register Execution Auto
push
ObjectServer ARCSystem
HPFServer Wrapper
FTSServer
ARCSystem Remote ARCSystem Remote Wrapper CodeMotion Server
push
make entries
getCode
send
send
notify Asynchronous
get object store object
execute Auto Executor entries
in object make changes Locally
execute auto exec
check for Registry check
getObjects Notification
Failure
entries in object make changes resend
getHPFValue Registry
check
getObjects Notification
Failure
getCode
send send
Failure
Failure
create NewThread
ARCObject Trigger
send
> D/ 0 5 0 -)
New Node
Front Node Back Node
NewNode Central Node BackNode
insert Newnode Join
Register Register
Join
FrontNode Set FrontNode Set
FrontNode FTSServer Central
FTSServer Participant FTSWrapper Participant JoinServer
Central JoinWrapper Central Program Join
> / %
#
> 0 :*8 >0
# 0 0
. $""
5 ' " #
@ .+1" # 3
+$""
+$"" +
,
+$""
Leave Process
HPFService FTSService
returnId donot give
locks
CJoinServer Wrapper
CJoinServer CFTSServer PFTSServer Wrapper
PFTSServer
frontnode change frontnode
change leave
leave
removeId handle
leave start leavethread
All PFTSServer Wrapper
leave notify
* create
node1 node2 node3
> / +8 <
B -". @ 5 52 @ 5 2
@ 2 @ 52 @ 2 @ @2 @ @ )
? ) 0
)
-".3 ? 5 #) 20) 1
-".3
? 0 2 0
- 2 -". 1
0
-". 3
' !
: -". 3
. )
1 + #
+ )
--".3) 0
-". 3 )
"
)) ) <
) (
2 0 0 "
+ !+'( )
-".0#) A
0
>0 -".3
!
"
#
#
% 2 5 : 1
-".3 %
0-". 3
2 ! !
' %+ %$ ! - ) -". 3
$ 01
$ )" "
20+ !+'0
( . ! 00
"$"%&%
'( ) *
++ ,& -
"."
++ /& *0
"1! & " )
0&- 2)
- ) 0&-
) "1! & "
&3
"1! & "%
4$++0$5,/6+! 4
&"4 "4%-
#
7&8'(
7&9'(
7&8-'(
++ :& -
"."
++ ;& *0
2)
&"4 "4
# ++ 0
++
#
!
++
#
++
#
"
++
#
"
++
#
"
++
#
# ++
2 #! . $ "
>? 0&:'+
+ !+'( 0" ' 2 0 + !+'0
( )0" "
$
> ? 2 L M )) ;
. G*)LM#2-".
3 )) -".3
22 56-567-574-58
-". 3 ) 0 "
$ "
"+ " ' )
> ? / . ! - '
!) 3
.# ! # )) 0
-". 3 -
# +&
#&
1
= 0# ' 2
=0#
#') -".3#
=2
# #
3 Æ -".3
# =2
00 0
3 ' 0 A
0
2 )Æ )$* ! &3
>0 -".3# )
"
"
#
#
-". 3 0 Æ
-". 3 0
)
% -".3
2 ! )Æ )$* !
' %'Æ %$ ! $
) -". 3 ) '
)"20Æ $
0 Æ ) 3
#
"$"%&%
&&& &&&
++ ,& -
++ /& *0
"1! & " )
0&- 2)
- ) 0&-
) "1! & "
&3
"1! & "%
4$++0$5,/6+! 4
&"4 "4%-
#
++ 6& * (
*020&
0&/<<<
#
++ :& -
"."
++ ;& *0
2)
&"4 "4
#
&&& 0 &&&
#
2 #! 4 )%5
>? 50&:'#) <=
Æ >0 .#1
-". 3
.#
-0 ? 5 52 Æ-".3Æ
) 0 " ! Æ
" <Æ ) Æ -".
3 # ; 3 # 2
0 .# 0 Æ
2 +"% )%5% &
8=2#Æ ) 2
-". 3
" 0 -". 3 > ? 0 002
0 " -".
3 - Æ 2 # '9 00 0 Æ
0 > ? @ <Æ) #
-".3
1 + $ " (
- + ' 0
) ' 2 -". 3
0 # 1
= 3 0#
0 > =3# ;
0#2-". 3
A 0
2 ! &3
>0 -". 3
>? @/ <Æ> : *' 0<Æ"-
"
++ "
#
#
2 ! !
-". 32 = #
- = 3 0#
0 3 >0 $ 0
0 -".3 2 -". 3 #
=>?
"$"% "&%
)
2
)
>! &>&
> 4 "&(4%0
#
#
++ 0 0
#
++ 0
#
&&& 0 &&&
#
2
: = 3 =
# 0# 0 >0 0
- + @ @
,
7
++> " 0(
"& ) "&
>! &>&>404
++9( *0 0
++> " 0(
>! &>&>404%
++> 0 "
>! &>&> 404
#
#
& 30 31-". 0#
* 4( 2
2 -". 0# 0
4( :*8 ) -". 0#
-". 0#
( 0# 0 0 1
0# ' 20 0 0#
0 8 8-4
-". 0 ) -". ' )
9 08-4 ' ' 0 0 1
-".0#
8-4 '
-".00 4(5.6
8-4 ' -". 0 ;0 5 0#
C = 30# -".2 2
8-4 '2 0
0# 0
0
0#
+'
' 22 0
#
8 8-4 ' -
2#1
- 0
-".
+G8
+G8
-".3 & 3 '+ 8
"
- +
() +
8# *- -
B!> +
! " # +
-".3 * 8
$ - -".3 8
)
3
! 41# 8
- " - 8
-".3
; 8
" * 8
-". 3
> +
-1() &) 8
-".3 () 8
-". 3
0" )
: " +
0" -".3
( 8
-".3
+G8
+G8
% +3 +
8 + +
- += 8
-".3
#
+ += -". 8
3 #
C / 3
:
-". 0 = :=
+ #; " #
) 1-2 0 . 1
) 4( 5
% ; <
3 )
-".
- 20 - )
&# ;!+; ;<
;!+ ;<
+;!+ 0
D5
5 2 0
+/ 0
4 # 3 0
?
;<
'! 3-".
0# <2 -
'!
! 0'!
5 0
4# 9
@ 40 -".00#1
6
" !+ <
> 3 -". 0# ) 3 )
<
.2 # -". 0#2 # 3 ) 0
&0
! "
<
; -".0#0 2- !-#
-".3! -".3
! -
<
#020 '
* A #0 #
3 A
*# -". 3 00
" 5<
% ; <
< 0 3 0 -". 3 3
,2<
00 B' 3 ;
0 3 0 ' 3
+ <
@
@
#
#
" 4<
+ % <
' 2
0
> > 5
,2<
. 0 3
4 B&'
.
'. '* 3
0 0 0
B'
5 !.'
!"'
@ '
:' B!>A
<
B' 4) 0'.
'* >0 &' '
#
+ <
% -%+
@
@3
$
@&@%& #
#
0"A
@
@3
7$
0"A & 0"A %@&@#
#
3 B&'
" 8<
<
' 0
,2<
0 3 4 B4
-. 2" 2 >(" 2 > 3
- 0
-".<3' -".
5 -".<3' <3
-". ' -".<3
@ .*
.*
> ' -".<3
? B&'
C B'
D *+
4)B '
<3''
5 <3''
!.4
@ !*
!.'
? "<3'!)
C ":'
D "'
5 '
5 '
55 :' B!>A
- ) 0B2
. >(" 2
'
3 '
>
-". 3 ' )
B'
5 B&'
!.4
@ B4
' "<3 2 B
3 4 3,
-". 3 '
-".30 -".3 0 1
'10
0-".3 .
#
*<
& -". 3 0
0 2 0 -". 3
,2<
. 0 3
- :' B!>
.
3 )
. 0)
B!>
5 !'B!>
-". ' B!>A
@ -". ' B!>A
-". ' B!>
8' B!>
()
<
! B!> 2
32 > 1
4 0 ,
)
+ "<
&0
@3
@!
1@.
&" &" &0
&" &" &0&
0
,
7
0 0 ) * 0B,<C
0&"00
1@.& 0 )
1@.& &3
1@.&%
4$++0$5,/6+@.4
1@.D & 0,)
@3& ) .&!*
& 0 0,6
&
&9'4 -4
&"'
#
#
#
EF %# +2 ; %2 " *#2 A 2- &2 -
!A* : DD@
E5F - % += * !2 5
EF 8 - # "!.-".# *1
, 2'' 2 %5
E@F =2 & ' " + -;2 2DDD
EF % "2'%2 & $/; & 3 ! 0
& -;2DDD
EF <3 * & .<3" # - 1
<--2 55
E?F + 8 * < * - 0 %/ - -!'
12DDC
ECF + ! % & -,$ * !2 % 5
EDF + " % +'& *!2 DD?
EF - 8 2 N 2 "# $ % <31 + -".
$ ' +252 5O552 5
EF + %# "2"#$% - ". 2-
!!;# %,,,$ "
,2 ?OD2 %G> DDD
E5F ; " + (9 A <"
<--2 5