main.go 982 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package main
  2. import (
  3. "log"
  4. "os"
  5. "igit.com/xbase/raft"
  6. )
  7. func main() {
  8. // 1. 配置初始化
  9. config := raft.DefaultConfig()
  10. config.NodeID = "node1"
  11. config.ListenAddr = "127.0.0.1:9001"
  12. config.HTTPAddr = ":8001" // Enable HTTP API
  13. config.DataDir = "data/node1"
  14. config.Logger = &raft.DefaultLogger{Prefix: "node1"}
  15. // 初始集群配置
  16. config.ClusterNodes = map[string]string{
  17. "node1": "127.0.0.1:9001",
  18. }
  19. // 2. 创建 KV Server
  20. // Ensure data directory exists
  21. os.MkdirAll(config.DataDir, 0755)
  22. server, err := raft.NewKVServer(config)
  23. if err != nil {
  24. log.Fatalf("Failed to create server: %v", err)
  25. }
  26. // 3. 启动服务
  27. if err := server.Start(); err != nil {
  28. log.Fatalf("Failed to start server: %v", err)
  29. }
  30. defer server.Stop()
  31. // Register Demo Commands
  32. RegisterDemoAuthCommands(server.CLI)
  33. log.Println("Node1 started on 127.0.0.1:9001 (HTTP :8001)")
  34. log.Println("CLI is ready. Type 'help' to see commands.")
  35. // Block forever
  36. select {}
  37. }