| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package main
- import (
- "log"
- "os"
- "igit.com/xbase/raft"
- "igit.com/xbase/raft/example/basic/common"
- )
- func main() {
- // Configuration
- nodeID := "node1"
- addr := "127.0.0.1:9500" // Raft Port
- httpAddr := ":8500" // HTTP API Port
- dataDir := "../data/node1"
- // Cluster configuration
- clusterNodes := map[string]string{
- "node1": "127.0.0.1:9500",
- "node2": "127.0.0.1:9501",
- }
- config := raft.DefaultConfig()
- config.NodeID = nodeID
- config.ListenAddr = addr
- config.DataDir = dataDir
- config.ClusterNodes = clusterNodes
-
- // Enable HTTP API for WebHooks
- config.HTTPAddr = httpAddr
-
- // Console Logger
- config.Logger = raft.NewConsoleLogger(nodeID, 3) // Error level only (Quiet mode)
- // Ensure data directory exists
- if err := os.MkdirAll(dataDir, 0755); err != nil {
- log.Fatalf("Failed to create data directory: %v", err)
- }
- // Create KV Server
- server, err := raft.NewKVServer(config)
- if err != nil {
- log.Fatalf("Failed to create server: %v", err)
- }
- // Register demo commands
- common.RegisterDemoCommands(server.CLI)
- // Start server
- if err := server.Start(); err != nil {
- log.Fatalf("Failed to start server: %v", err)
- }
-
- log.Printf("Raft Node %s started at %s", nodeID, addr)
- log.Printf("HTTP API started at %s", httpAddr)
- defer server.Stop()
- // Keep main thread running
- select {}
- }
|