Skip to content

hianova/ServerGo

Repository files navigation

🚀 ServerGo

ServerGo 是一套基於 io_oi v2DualCache-FF 架構的超高效能資料庫與清算節點。專為超低延遲的資料存取與可靠的非同步持久化設計,能作為 CreditGo 等邊緣結算網路的雲端大腦。

Note

雖然 ServerGo 的設計目標是透過 io_oi 協定成為去中心化網路的一部分,但目前的開發與基準測試重點在於 單節點效能 (Single-node performance)本地優先一致性 (Local-first consistency)

🏛️ 雲端四本柱架構 (Four Pillars Architecture)

為完美支援 Cloud-Native 與業務擴展,ServerGo 將底層邏輯徹底解耦為符合 AWS 等大廠標準的「四本柱」管理套件,將基礎設施與業務邏輯完美分離:

  1. 運算層 (Compute):獨立接管 Thread-per-core 的調度與 TCP Worker 綁定,支援高併發運算。
  2. 儲存層 (Storage):負責 cdDB 快照備份與靜態檔案 (HTML/JS) 的硬碟 I/O,與業務記憶體完全隔離。
  3. 網路層 (Networking):接管 HTTP Gateway、P2P 憑證、以及 SSH 管理後台,隨時支援新通訊協議。
  4. 資料庫層 (Database):抽象化 PureCacheTieredStore,對底層共識引擎 io_oi 實現完美的依賴反轉 (IoC)。

📖 專案目錄與文件索引 (Index)

為了幫助您快速掌握專案結構,我們將文件與目錄整理如下:

核心模組與目錄

  • src/:ServerGo 核心原始碼,包含緩衝區、資料持久化、網路閘道與快取架構。
  • benches/:高效能基準測試 (Criterion),包含處理能力與 I/O 壓測。
  • deploy/:Docker Compose 與容器化部署腳本。
  • tests/:各項單元測試與整合測試。
  • tools/:輔助腳本與開發者工具 (如壓力測試器、授權更新腳本等)。

多國語言文檔 (Translations)

詳細文件 (位於 docs/ 資料夾)

歷史架構升級紀錄、效能報告與進階教學皆妥善歸檔於此:


🛠️ 分層安裝與執行指南 (Installation & Quick Start)

為確保跨平台的安全性與效能最佳化,本專案全面棄用預先編譯的二進位包 (Pre-compiled binaries)。請按照以下層級進行源碼編譯:

Level 1: 環境準備 (安裝 Rust)

確保您的系統已經安裝了 Rust 開發環境:

# 安裝 Rust (若尚未安裝)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 重新載入環境變數
source $HOME/.cargo/env

Level 2: 將 ServerGo 作為基礎設施 (Crate) 引入

ServerGo 已經全面進化為「底層引擎 Crate」。我們不提供編譯好的 Docker Image,而是讓您將 ServerGo 嵌入到自己的專案中,享受編譯期最佳化與物理核心綁定:

在您的 Cargo.toml 加入:

[dependencies]
ServerGo = { git = "<your_servergo_repo_url>" }

Level 3: 撰寫啟動檔 (Builder Pattern)

在您的 main.rs 中,只需撰寫 10 行程式碼,即可啟動這個極限效能的分散式神經網關:

extern crate ServerGo as server_go;
use server_go::{ServerGo, UnionCodeGateway};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    tracing_subscriber::fmt::init();

    // 1. 動態注入您的業務指令字典檔
    let intent_gateway = UnionCodeGateway::builder()
        .with_dictionary_file("data/dictionary.txt")
        .enable_hot_reload(true)
        .build();

    // 2. 啟動伺服器,綁定物理核心以達到 RuinsOS 級別的 88ns 延遲
    ServerGo::builder()
        .port(3000)
        // .bind_to_core(1) // 生產環境專用
        .with_gateway(intent_gateway)
        .start()
        .await
}

然後執行 cargo run --release 即可啟動伺服器。

Level 4: 測試連線 (RESP 協定)

ServerGo 完美相容 Redis (RESP) 協定,您可以使用標準的 redis-cli 進行連線測試:

redis-cli -p 6379 SET mykey "Hello ServerGo"
redis-cli -p 6379 GET mykey

Level 5: 應用層無縫對接 (HTTP API)

前端或業務層開發者不需要學習 RESP 協定,ServerGo 內建 HTTP Gateway 進行代理:

# 透過 HTTP POST 直接執行 UnionCode Intent
curl -X POST http://localhost:8080/api/execute -d "ORDER_ITEM_AMERICANO_HOT"

✨ 核心特色 (Core Features)

  • DualCache-FF L1/L2: 雙層快取架構,透過 Wait-Free GlobalHotIndex (arc-swap) 實現微秒級的無鎖讀取。
  • Zero-Copy Architecture: 完全繞過 Heap Allocation 與 Mutex 鎖,在 Apple Silicon 上的讀取延遲低至 ~127 ns。
  • Tiered Columnar Storage: 透過 cdDB 的非同步 WAL 安全寫入磁碟,絕不阻塞熱點快取的讀取路徑。
  • RESP 相容: 無縫融入現有架構,支援標準 Redis 客戶端的 GET, SET, PING, 與 INFO
  • OS Sandboxing: 在 Linux 環境中自動利用 seccomp 進行系統呼叫沙盒隔離,提供縱深防禦。
  • 動態 HTTP 閘道: 零停機的 Axum 路由器,支援靜態檔案服務 (file://)、反向代理 (http://) 與 DevOps 熱更新掛載 (web:config)。

License

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors