Skip to content

Distributed Scaling, Locks, Pub/Sub & CDC

FLASH DB provides high-concurrency cloud utilities for distributed architectures.


1. Distributed Locks (FlashDistributedLock)

javascript
import { FlashDistributedLock } from 'flash-zk';

const dlock = new FlashDistributedLock();
const lock = dlock.acquire('monthly_billing_job', 'worker_node_1', 10000); // 10s TTL

if (lock.acquired) {
  // Perform exclusive task
  dlock.release('monthly_billing_job', lock.leaseToken);
}

2. Change Data Capture & Outbox (FlashCDC)

Reliably stream database mutations to Apache Kafka, RabbitMQ, or Webhooks:

javascript
import { FlashCDC } from 'flash-zk';

const cdc = new FlashCDC();

// Subscribe to real-time events
cdc.subscribe((event) => {
  console.log(`[CDC] ${event.op} on ${event.collection} - Doc ${event.docId}`);
});

// Record mutation in transaction
cdc.recordChange('orders', 'INSERT', 'ord_123', { amount: 200 });

3. Streaming Pub/Sub (FlashPubSub)

javascript
import { FlashPubSub } from 'flash-zk';

const pubsub = new FlashPubSub();
pubsub.subscribe('notifications', 'user_client', (msg, ack) => {
  console.log(msg.message);
  ack();
});

pubsub.publish('notifications', { text: 'Your invoice is ready' });

4. Multi-Database Federation (FlashFederation)

javascript
import { FlashFederation, FlashDatabase } from 'flash-zk';

const fed = new FlashFederation();
fed.registerMember('us_cluster', new FlashDatabase('db_us', { storagePath: './data_us' }));
fed.registerMember('eu_cluster', new FlashDatabase('db_eu', { storagePath: './data_eu' }));

// Query across all federated clusters in parallel
const allItems = await fed.federatedFind('products', { inStock: true });

Released under the Apache 2.0 License.