Minimalist Raft-based Master Election Component
- Minimalist API:
Speedboat.start(config)— one line to start - Cluster-Oriented Configuration: Just configure
datacenter + nodes - Auto-Discovery: Automatically detects local IP and matches the node
- Auto Mode: Flat mode for single datacenter, cascading mode for cross-datacenter
- Dual Timeouts: Independent timeout settings for intra-datacenter and cross-datacenter
- Zero-Dependency Config: Default Properties support, optional JSON/YAML via custom provider
<dependency>
<groupId>cn.itcraft</groupId>
<artifactId>speedboat</artifactId>
<version>1.0.0</version>
</dependency>config.properties:
nodes.0.0=192.168.10.1:3000
nodes.0.1=192.168.10.2:3000
nodes.0.2=192.168.10.3:3000SpeedboatConfigProvider config = new PropertiesConfigProvider("config.properties");
Speedboat.start(config);
if (Speedboat.isMain()) {
System.out.println("I am the leader!");
}
// On shutdown
Speedboat.stop();nodes.0.0=192.168.10.1:3000
nodes.0.1=192.168.10.2:3000
nodes.0.2=192.168.10.3:3000datacenter=hangzhou001
# Hangzhou datacenter
nodes.0.0=192.168.10.1:3000
nodes.0.1=192.168.10.2:3000
nodes.0.2=192.168.10.3:3000
# Beijing datacenter
nodes.1.0=10.3.1.1:3000
nodes.1.1=10.3.1.2:3000
nodes.1.2=10.3.1.3:3000
# Intra-datacenter election timeout
election.intra.timeout.min=1000
election.intra.timeout.max=2000
# Cross-datacenter election timeout
election.cross.timeout.min=3000
election.cross.timeout.max=5000// Start
Speedboat.start(config);
// Status queries
Speedboat.isMain(); // Is this node the leader?
Speedboat.getLeaderId(); // Current leader node ID
Speedboat.getTerm(); // Current term
Speedboat.getNodeId(); // Local node ID
Speedboat.getDatacenterId(); // Datacenter ID
Speedboat.isRunning(); // Running status
// Stop
Speedboat.stop();| nodes.size() | Mode | Description |
|---|---|---|
== 1 |
Single DC Flat | All nodes participate equally in election |
> 1 |
Cross-DC Cascading | Intra-DC election + cross-DC cascading |
- User Manual — Detailed configuration and API reference (English)
- 使用手册 — 详细配置和 API 说明(中文)
- Changelog — Version history
- 中文文档 — 中文版 README
mvn clean packagemvn test