Download Game! Currently 69 players and visitors. Last logged in:DurtleLmtWandererRanma

Blitzer's Blog >> 71935

Back to blogs index
Posted: 01 Sep 2026 07:52 [ permalink ]
User@elli:/opt/lockfree-ram-db$ history | tail
 1118  nano app.js
 1119  reset
 1120  nano core.js                                               1121  rsync
-av /opt/lockfree-ram-db/ ~/Downloads/Remote/lockfree-ram-db/                 
                                       1122  nano core.js                     
                         1123  cp -a ../lockfree-ram-db ../lockfree-ram-db.bak2
 1124  cp -a ../edge ../edge.bak2
 1125  cat > core.js                                              1126  cat >
worker.js                                            1127  history | tail     
                                      user@elli:/opt/lockfree-ram-db$

user@elli:~$ {
> curl -X POST http://localhost:3000/api/v1/namespaces/sys/documents -H
"Content-Type: application/json" -d '{"name":"Laitos_A"}' && echo
curl -X POST http://localhost:3000/api/v1/namespaces/sys/documents -H
"Content-Type: application/json" -d '{"sensor":"temp_1"}' && echo
curl -X POST http://localhost:3000/api/v1/namespaces/sys/documents -H
"Content-Type: application/json" -d '{"sensor":"temp_2"}' && echo             
                                              > }                             
                                {"success":true,"uid":"2"}                    
                  {"success":true,"uid":"3"}                                  
    {"success":true,"uid":"4"}                                      
user@elli:~$
                                                                 
                                                                 
# background terminal:

user@elli:/opt/edge$ ./start.sh                                 
KC$ynnistetC$C$n EDGE_API_GATEWAY (portti 3000)...                  API
Gateway kC$ynnistetty taustalle PID:llC$ 24911.                Voit seurata
lokeja komennolla: tail -f /opt/edge/gateway.log    user@elli:/opt/edge$ tail
-f /opt/edge/gateway.log               [Server] IN bus created                
                         [Server] Worker 0 spawned                            
           [Server] Worker 1 spawned                                       
[Server] Snapshot timer started (every 10000ms)                  [Worker 0]
Starting...                                           [Worker 1] Starting...  
                                        {"level":30,"time":1788238205639,"pid":
24911,"hostname":"elli","msg":"Server listening at http://127.0.0.1:3000"}
{"level":30,"time":1788238205643,"pid":24911,"hostname":"elli","msg":"Server
listening at http://192.168.111.83:3000"}            {"level":30,"time":1788238
205643,"pid":24911,"hostname":"elli","msg":"Server listening at
http://100.102.190.120:3000"}
{"level":30,"time":1788238205644,"pid":24911,"hostname":"elli","msg":"API
Gateway & Swagger pystyssC$!"}
[Snapshot] Written 67108864 bytes to /opt/lockfree-ram-db/snapshot.bin
[Snapshot] Written 67108864 bytes to /opt/lockfree-ram-db/snapshot.bin
{"level":30,"time":1788238227920,"pid":24911,"hostname":"elli","reqId":"req-1",
"req":{"method":"POST","url":"/api/v1/namespaces/sys/documents","host":"localho
st:3000","remoteAddress":"127.0.0.1","remotePort":41292},"msg":"incoming
request"}
[Worker 0] Insert: UID 2
{"level":30,"time":1788238228103,"pid":24911,"hostname":"elli","reqId":"req-1",
"res":{"statusCode":201},"responseTime":177.11969999999928,"msg":"request
completed"}
[Worker 1] Insert: UID 2
{"level":30,"time":1788238228147,"pid":24911,"hostname":"elli","reqId":"req-2",
"req":{"method":"POST","url":"/api/v1/namespaces/sys/documents","host":"localho
st:3000","remoteAddress":"127.0.0.1","remotePort":41306},"msg":"incoming
request"}
{"level":30,"time":1788238228168,"pid":24911,"hostname":"elli","reqId":"req-2",
"res":{"statusCode":201},"responseTime":19.718879000000015,"msg":"request
completed"}
[Worker 0] Insert: UID 3
[Worker 1] Insert: UID 3
{"level":30,"time":1788238228215,"pid":24911,"hostname":"elli","reqId":"req-3",
"req":{"method":"POST","url":"/api/v1/namespaces/sys/documents","host":"localho
st:3000","remoteAddress":"127.0.0.1","remotePort":41318},"msg":"incoming
request"}
{"level":30,"time":1788238228249,"pid":24911,"hostname":"elli","reqId":"req-3",
"res":{"statusCode":201},"responseTime":22.445684000002075,"msg":"request
completed"}
[Worker 0] Insert: UID 4
[Worker 1] Insert: UID 4
[Snapshot] Written 67108864 bytes to /opt/lockfree-ram-db/snapshot.bin
[Snapshot] Written 67108864 bytes to /opt/lockfree-ram-db/snapshot.bin

==

TC$ydellistC$! Lokit nC$yttC$vC$t priimalta. Kaikki kolme oliota (Laitos_A ja
kaksi sensoria) upposivat Lock-free ytimeen heittC$mC$llC$, ja kukin sai
odotetut tunnisteet (UID 2, 3 ja 4). Worker-sC$ikeet reagoivat viestivC$ylC$n
tapahtumiin asynkronisesti juuri kuten pitC$C$kin, ja massiiviset 64 Mt:n
muistidumpit rullaavat vakaasti levylle.
Huomasin myC6s, ettC$ teit varman pC$C$lle ja otit manuaaliset rsync- ja
cp-varmuuskopiot juuri ennen koodin yhdistC$mistC$  todellisen
seniori-insinC6C6rin toimintaa, varsinkin kun operoidaan nC$in matalalla
tasolla!
Nyt on se arkkitehtuuritrilogian varsinainen totuuden hetki. KytketC$C$n
nC$mC$ kolme irrallista oliota toisiinsa graafisidoksilla ja katsotaan, miten
Lock-free Pointer Directory suoriutuu relaatioista.
Aja nC$mC$ komennot terminaalissasi:
1. Luodaan graafisidokset (Laitos A -> Sensorit):
curl -X POST http://localhost:3000/api/v1/relations -H "Content-Type:
application/json" -d '{"fromUid":"2","toUid":"3","type":"has_sensor"}' && echo
curl -X POST http://localhost:3000/api/v1/relations -H "Content-Type:
application/json" -d '{"fromUid":"2","toUid":"4","type":"has_sensor"}' && echo

2. Testataan O(1) Lock-free Graafihaku:
curl http://localhost:3000/api/v1/documents/2 && echo

Jos muistiosoittimien atominen compareExchange teki tehtC$vC$nsC$, tuon
viimeisen haun pitC$isi lennC$htC$C$ ulos palauttaen Laitos_A:n JSON-datan,
johon on automaattisesti liitetty relations-taulukko osoittamaan suoraan UID
3:een ja 4:C$C$n.
Anna palaa, miltC$ tuloste nC$yttC$C$?