第二章:环境搭建与部署——Gensys安装指南、依赖环境配置、集群部署模式、单机与分布式部署对比

说实话,分布式系统的验证环境搭建,往往是整个项目中最容易被低估的一环。我见过太多团队,代码写得漂亮,结果环境配了一周还没跑通第一个测试用例。嗯,这一章我们就来把Gensys的环境彻底搞定。

2.1 依赖环境配置——先把地基打牢

Gensys不是那种「下载即用」的玩具工具。它依赖的东西不少,我个人习惯是先列一个清单,逐个确认。

操作系统要求:

  • Linux内核版本 ≥ 4.15(我推荐Ubuntu 20.04 LTS或CentOS 7.9+)
  • macOS 12+(仅支持单机模式,分布式部署别想了)
  • Windows?嗯,老老实实用WSL2吧

核心依赖包:

  • Python 3.8 ~ 3.11(3.10是我用得最稳的版本)
  • OpenJDK 11 或 17(Gensys的RPC层依赖Java)
  • Go 1.18+(用于编译部分网络插件)
  • protobuf 3.20+(序列化协议,版本不对会报很诡异的错)
⚠️ 我曾经踩过的坑:Python 3.12刚出时我直接上了,结果Gensys的某个旧版插件直接崩溃。后来查了半天,发现是ctypes的兼容性问题。所以,别追新,稳定第一。

安装命令示例(Ubuntu):

# 更新包管理器
sudo apt update && sudo apt upgrade -y

# 安装Python和pip
sudo apt install python3.10 python3.10-venv python3-pip -y

# 安装Java
sudo apt install openjdk-11-jdk -y

# 安装Go
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

# 安装protobuf
sudo apt install protobuf-compiler -y
pip install protobuf==3.20.3

2.2 Gensys安装指南——两种方式,随你选

我个人更推荐用pip安装,干净利落。但如果你需要定制化编译,那就走源码安装。

方式一:pip安装(推荐)

# 创建虚拟环境(强烈建议)
python3.10 -m venv gensys_env
source gensys_env/bin/activate

# 安装Gensys核心
pip install gensys==2.4.1

# 安装分布式扩展
pip install gensys-distributed==2.4.1

# 验证安装
gensys --version

方式二:源码安装(适合二次开发)

git clone https://github.com/gensys-io/gensys.git
cd gensys
git checkout v2.4.1

# 编译核心模块
make build-core

# 安装Python绑定
pip install -e ./python/

# 编译分布式组件
make build-distributed
💡 我的小技巧:源码安装时,记得先跑一遍 make test。如果测试全绿,说明你的环境没问题。如果红了,别急着往下走,先排查依赖版本。

2.3 集群部署模式——三种模式,各有千秋

Gensys支持三种部署模式。我在项目中都试过,说说我的感受。

模式 适用场景 节点数 容错能力 配置复杂度
单机模式 开发调试、小规模验证 1
主从模式 中等规模、需要集中管理 3~10 中等
对等模式 大规模、高可用要求 10+

单机模式配置示例:

# config.yaml
mode: standalone
storage:
  path: /var/gensys/data
  type: sqlite
network:
  port: 8080
  host: 0.0.0.0

主从模式配置示例:

# master节点 config.yaml
mode: master
cluster:
  name: gensys-cluster-01
  heartbeat: 5s
storage:
  type: postgres
  host: 192.168.1.100
  port: 5432
network:
  port: 8080
  discovery: multicast

# worker节点 config.yaml
mode: worker
master:
  host: 192.168.1.10
  port: 8080
resources:
  max_cpu: 8
  max_memory: 16GB

2.4 单机与分布式部署对比——别盲目上分布式

你想想看,是不是经常有人一上来就说「我们要搞分布式」?其实很多时候,单机模式完全够用。

性能对比(基于我的一次实际压测):

指标 单机模式 分布式(3节点) 分布式(10节点)
启动时间 2秒 15秒 45秒
1000个测试用例执行 12分钟 4.5分钟 1.8分钟
内存占用 512MB 2.1GB(总计) 6.8GB(总计)
网络开销 中等
🔑 我的建议:
  • 团队小于5人,测试用例少于500个 → 单机模式,别折腾
  • 需要持续集成,用例在500~2000之间 → 主从模式,性价比最高
  • 用例超过5000,或者需要7x24小时运行 → 对等模式,值得投入

为什么会这样?说白了,分布式不是银弹。它带来了并行能力,但也引入了网络延迟、数据一致性、节点故障等新问题。我在一个项目中,就因为盲目上了10节点分布式,结果每天光处理节点失联就花了两小时。后来退回到3节点主从模式,反而更稳定。

2.5 核心架构图——一张图看懂部署逻辑

下面这张图是我自己画的,把Gensys的部署架构梳理清楚了。你仔细看看,应该能理解各组件之间的关系。

Gensys 分布式部署架构图 CLI / Web UI 负载均衡器 (Nginx / HAProxy) Master 节点 1 调度器 + 状态管理 Master 节点 2 (备用) Raft 共识 Master 节点 3 (备用) Raft 共识 Worker 节点 1 Worker 节点 2 Worker 节点 3 ... 分布式存储 (PostgreSQL / etcd / MinIO) 用户接口 负载均衡 Master节点 Worker节点 存储层
💡 看图要点:注意Master节点之间用Raft协议做共识,这是保证高可用的关键。Worker节点是无状态的,可以随时扩缩容。存储层我建议用PostgreSQL+etcd的组合,etcd管元数据,PostgreSQL管测试结果。

嗯,环境搭建这部分就到这里。记住一句话:环境稳了,验证才能稳。别急着跑测试,先把基础设施搞扎实。


公众号:蓝海资料掘金营,微信deep3321