Christie
Jungle
†1
Jungle Jungle
Log Alice1) Jungle
Jungle Alice
Jungle Alice Alice API
Alice Jungle
Jungle Christie Christie
Data Gear Java
Jungle Christie Christie Data Gear
Shinji KONO
†11.
Internet ad-hoc HTTP MySQL Postgress HTTP HTTPS HTTP WebDAV CORBA KVS Cassandra HDFS OS An-drew File SystemAlice Jungle
†1
Information Engineering, University of the Ryukyus.
2.
Alice
( ) 2) • • • AliceCode Segment Data Segment
Code Segment
Data Segment Data
Segment key Data Segment
Manager
Remote Data
Segment Manager key
take/put Linda Tuple space
Linda Tuple space
TopologyManager KeepAlive Heart-beat
3.
Jungle
Web Web URI URI RDB Web Jungle Jungle RDB XML Json Jungle Atomic URI log Alice Jungle NodePath NodePath -1 NodePath <-1,0,2,3 > ( 1) root -1 0 1 ... n 0 1 2 3 0 1 2 3 編集対象NodePath<-1,1,2,3>
tree_name 1 NodePath Index Jungle Index Index IndexRed Black Tree Java
Jungle O(n) O(1) PushPop API O(1) PushPop Log Differential
Jungle Tree Differential Jungle
Tree
Sub Tree Commit
Sub Tree Append
Jungle Red Black Tree
O(log n)
Jungle RDB
Reb Black Jungle Tree Node
Path
4. Jungle
Jungle Alice
(Split Horizon) Merge Merge Merge Merge SNS Alice Jungle
Alice Toplogy Manager
Server node 0 Server node 1 Server node 2 Server
node 3 node 4Server Merge ① ① ② ③ ③ ④ ④ 2 ( 2 ( 1 ) servernode 1, servernode 2 servernode 0 ( 2 ) Merge
( 3 ) Merge servernode 1,servernode
2
( 4 ) servernode1 Merge
servern-ode 3 servernservern-ode 4
5. Jungle
Alice
Jungle Alice
Jungle Alice Alice
Jungle Jungle Alice Alice DataSegment DataSegment CodeSegment DataSegment Jungle DB ByteBuffer Jungle Either
Alice DataSegment Singleton
Alice NAT Alice
6. CodeSegment
CS CodeSegment ( 1 , 2)Code Segment Data Segment
API Alice Start CS ( 1 ) C main CS Start CS DS Input DS CS main new execute
public class StartCodeSegment extends CodeSegment { @Override
public void run() { new TestCodeSegment(); int count = 0; ods.put("local", "cnt", count); } } Code 1 StartCodeSegment
public class TestCodeSegment extends CodeSegment { private Receiver input1 = ids.create(CommandType.
public TestCodeSegment() { input1.setKey("local", "cnt"); }
@Override
public void run() {
int count = input1.asInteger(); System.out.println("data␣=␣" + count); count++; if (count == 10){ System.exit(0); } new TestCodeSegment(); ods.put("local", "cnt", count); } } Code 2 CodeSegment 1 5 CS( 2 ) 8
Out-put DS API Local DSM DS put
Output DS API CS ods
ods put update
flip TestCodeSegment
”cnt” key 8
put TestCodeSegment
CS Input DS CS
CommandType(PEEK TAKE)
DSM key Input DS API
CS ids
Output DS ods put/update/flip
Input DS
ids peek/take create/setKey
CommandType
2 0 9
2 Input DS API
create Input DS
(Re-ceiver) PEEK TAKE
• Receiver create(CommandType type)
4 6 TestCodeSegment ( 1 ) CS Receiver input ids.create(CommandType.TAKE) input ( 2 ) 5 TestCodeSegment TAKE 5 2 create Receiver setKey Local DSM DS
• void setKey(String managerKey, String key)
setKey peek/take
DSM key peek take
run ( 1 ) 10 DS Integer count ( 2 ) 12 count ( 3 ) 16 CS run CS CS CS Input DS
( 4 ) 17 count Local DSM put
In-put DS CS ( 5 ) 13 count 10 1. asInteger() asClass asClass take/peek DS Object API • <T> T asClass(Class<T> clazz) CS DS asClass InputDS
Receiver create Reveiver
setKey key
key setKey
DS CS
( 3)
public class StartCodeSegment extends CodeSegment { @Override
public void run() {
TestCodeSegment cs = new TestCodeSegment(); cs.input.setKey("data");
ods.put("local", "data", 1); }
}
Code 3 setKey
public class TestCodeSegment extends CodeSegment { private Receiver input = ids.create(CommandType.
TAKE); @Override public void run(){
System.out.println("data␣=␣" + input.asInteger ()); } } Code 4 Seprated setKey CS key setKey key CS CS setKey CS key put key Alice CS setKey setKey CS key key put
inputDS Receiver Object
CS inputDS key DS put flip DS put key CS key key DS Receiver key input DS
7.
Christie
Christie Christie • create/setKey API • •• • • Chirstie CodeSegment/DataSegment CodeGear/DataGear Gears OS Alice API DataGear Java Annoation API
Alice Singleton
Refac-toring Christie
Jungle Alice Jungle
Jungle Alice
Jungle
Alice
Jungle Alice Tuple
Jungle Alice Data Segment Data Segment Data Seg-ment Jungle
Jungle Data Segment
Alice Jungle Jungle ID Alice 2 Jungle URI Jungle Jungle Christie Gears OS
8.
InputAPI Alice Take Peek
Christie Input DG
Java
Meta Computation @
Alice Input Receiver
key Christie Input
key
Take Peek ( 5)
@Take
public String name;
Code 5 Take InputDG CG CodeGear.class Java reflectionAPI key Christie key Take/Peek Alice CS key Alice key key key Take/Peek TakeFrom/PeekFrom ( 6) @TakeFrom("remote") public String name;
Code 6 TakeFrom
Meta Computation Alice
DGM compressed
( 7)
@TakeFrom("compressedremote") public String name;
Code 7 Remote
OutputAPI put/flip
Alice Christie put/flip
CodeGear.class
CodeGear.class CG put
( 8)
put("remote", "count", 1);
Code 8 put
Christie Alice ODS
ODS DGM put Alice DGM compressed Christie Receiver CG Alice asClass 9 InputDG
public class GetData extends CodeGear{ @Take
public String name; @Override
protected void run(CodeGearManager cgm) { System.out.println("this␣name␣is␣:␣" + name); } } Code 9 InputDG InputDG reflection-API LocalDSM put DG 10
public class StartTest extends StartCodeGear{ public StartTest(CodeGearManager cgm) {
super(cgm); }
public static void main(String args[]){ StartTest start = new StartTest(createCGM
(10000)); }
@Override
protected void run(CodeGearManager cgm) { cgm.setup(new TestCodeGear()); put("count", 1);
} }
Code 10 StartCodeGear
public class TestCodeGear extends CodeGear { @Take
public count;
public void run(CodeGearManager cgm){ System.out.println(hoge.getData()); if (count != 10){ cgm.setup(new TestCodeGear()); put("count", count + 1); } } } Code 11 CodeGear
Alice Christie InputDG
StartCG StartCG
Start-CodeGear.class Alice StartCS CodeSegment.class StartCS Christie StartCG createCGM CGM 10 8 createCGM CGM LocalDGM Daemon CG setup 10 13 11 10 new CG CGM setup Alice new CG Christie CG new new setup CG
CGM run CGM StartCG setup new run
9. Unix
Christie Unix Christie Unix Unix Christie Christie Unix i B-Tree Christie Unix i Christie Unix read/write Christie read-/write get/put Christie10.
Jungle Alice Christie Christie Alice Jungle ChristieChristie Data Gear
Data Gear
Christie Data Gear
Gears OS Christie DataGear 1) Al-ice PC 57 (2016). 2) and Fed-erated Linda 22 (2005).