@unrdf/examples-peer-discovery
v1.0.0
Published
UNRDF Federation - Peer Discovery Example
Readme
Peer Discovery Example
This example demonstrates peer discovery and health management in UNRDF Federation.
Features
- Peer Registration: Register multiple federation peers with metadata
- Health Checks: Ping peers to verify availability
- Status Management: Track peer health (healthy, degraded, unreachable)
- Peer Discovery: List and filter peers by status
- Dynamic Updates: Update peer information and status
Usage
# Install dependencies
pnpm install
# Run the example
pnpm start
# Run tests
pnpm testExample Code
import { createPeerManager } from '@unrdf/federation';
// Create peer manager
const peerManager = createPeerManager();
// Register peers
peerManager.registerPeer('peer-1', 'http://localhost:8001/sparql', {
region: 'us-west',
dataset: 'movies',
});
// List all peers
const peers = peerManager.listPeers();
// Check peer health
const isHealthy = await peerManager.ping('peer-1');
// Filter by status
const healthyPeers = peerManager.listPeers({ status: 'healthy' });
// Update peer status
peerManager.updateStatus('peer-1', 'degraded');API
Register Peer
const peer = peerManager.registerPeer(id, endpoint, metadata);List Peers
const allPeers = peerManager.listPeers();
const healthyPeers = peerManager.listPeers({ status: 'healthy' });Check Health
const isHealthy = await peerManager.ping(id, timeout);Update Status
peerManager.updateStatus(id, 'healthy' | 'degraded' | 'unreachable');Get Peer Info
const peer = peerManager.getPeer(id);Remove Peer
peerManager.unregisterPeer(id);Status Types
- healthy: Peer is responding to health checks
- degraded: Peer responded but with errors
- unreachable: Peer did not respond to health check
Metadata
Peers can store arbitrary metadata for routing decisions:
{
region: 'us-west',
dataset: 'movies',
version: '2.0',
capabilities: ['sparql', 'graphql']
}Learn More
Testing
Run the test suite:
pnpm testRun tests in watch mode:
pnpm test:watchGenerate coverage report:
pnpm test:coverageTest coverage: 80%+ (minimum requirement)
