feat: Implement distributed database using Mycelium
- Refactor database streamer to support multiple workers. - Add master node to manage and distribute data updates. - Implement worker nodes to receive and apply updates. - Remove unnecessary slave node. - Improve error handling and logging. - Use base64 encoding for JSON compatibility in data transfer.
This commit is contained in:
@@ -1,16 +1,33 @@
|
||||
#!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run
|
||||
|
||||
import freeflowuniverse.herolib.data.ourdb
|
||||
import time
|
||||
|
||||
// Known worker public key
|
||||
worker_public_key := '46a9f9cee1ce98ef7478f3dea759589bbf6da9156533e63fed9f233640ac072c'
|
||||
|
||||
mut streamer := ourdb.new_streamer(incremental_mode: false)!
|
||||
streamer.add_worker(worker_public_key)! // Mycelium public key
|
||||
// Create master node
|
||||
mut streamer := ourdb.new_streamer(
|
||||
incremental_mode: false
|
||||
server_port: 9000 // Master uses default port
|
||||
is_worker: false
|
||||
)!
|
||||
|
||||
println('Starting master node...')
|
||||
|
||||
// Add worker to whitelist and initialize its database
|
||||
streamer.add_worker(worker_public_key)!
|
||||
|
||||
// Write some test data
|
||||
id := streamer.write(id: 1, value: 'Record 1')!
|
||||
println('Wrote record with ID: ${id}')
|
||||
|
||||
println('ID: ${id}')
|
||||
|
||||
// Verify data in master
|
||||
master_data := streamer.read(id: id)!
|
||||
master_data_str := master_data.bytestr()
|
||||
println('Master data: ${master_data_str}')
|
||||
|
||||
// Keep master running to handle worker connections
|
||||
for {
|
||||
time.sleep(1 * time.second)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user