tree: 3b68c313e8293a62e50a2d08cedf0123ddc4f2d9
  1. algorithms/
  2. apps/
  3. asset/
  4. client/
  5. config/
  6. plugin_src/
  7. scripts/
  8. test/
  9. tools/
  10. .dockerignore
  11. .gitignore
  12. build.sh
  13. build_docker.sh
  14. docker-compose.yaml
  15. Dockerfile
  16. gitattributes
  17. go.mod
  18. go.sum
  19. main.go
  20. Makefile
  21. mem_supervisor.sh
  22. README.md
  23. README.zh-CN.md
  24. vermeer.sh
  25. vermeer_test.go
  26. vermeer_test.sh
vermeer/README.md

Vermeer Graph Compute Engine

Introduction

Vermeer is a high-performance distributed graph computing platform based on memory, supporting more than 15 graph algorithms, custom algorithm extensions, and custom data source access.

Run with Docker

Pull the image:

docker pull hugegraph/vermeer:latest

Create local configuration files, for example, ~/master.ini and ~/worker.ini.

Run with Docker. The --env flag specifies the file name.

master: docker run -v ~/:/go/bin/config hugegraph/vermeer --env=master
worker: docker run -v ~/:/go/bin/config hugegraph/vermeer --env=worker

We‘ve also provided a docker-compose file. Once you’ve created ~/master.ini and ~/worker.ini, and updated the master_peer in worker.ini to 172.20.0.10:6689, you can run it using the following command:

docker-compose up -d

Start

master: ./vermeer --env=master
worker: ./vermeer --env=worker01

The parameter env specifies the name of the configuration file in the useconfig folder.

./vermeer.sh start master
./vermeer.sh start worker

Configuration items are specified in vermeer.sh

supervisord

Can be used with supervisord to start and stop services, automatically start applications, rotate logs, and more; for the configuration file, refer to config/supervisor.conf;

Configuration file reference config/supervisor.conf

# run as daemon
./supervisord -c supervisor.conf -d

Build from Source

Requirements

  • Go 1.23 or later
  • curl and unzip utilities (for downloading dependencies)
  • Internet connection (for first-time setup)

Quick Start

Recommended: Use Makefile for building:

# First time setup (downloads binary dependencies)
make init

# Build vermeer
make

Alternative: Use the build script:

# For AMD64
./build.sh amd64

# For ARM64
./build.sh arm64

The build process will automatically:

  1. Download required binary tools (supervisord, protoc)
  2. Generate web UI assets
  3. Build the vermeer binary

Build Targets

make build              # Build for current platform
make build-linux-amd64  # Build for Linux AMD64
make build-linux-arm64  # Build for Linux ARM64
make clean              # Clean generated files
make help               # Show all available targets

Development Build

For development with hot-reload of web UI:

go build -tags=dev

Protobuf Development

If you need to regenerate protobuf files:

# Install protobuf Go plugins
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.0
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0

# Generate protobuf files
tools/protoc/osxm1/protoc *.proto --go-grpc_out=. --go_out=.