Skip to content

[Summary] integrate new modules PD and Store components into hugegraph (Breaking Change) #2265

@VGalaxies

Description

@VGalaxies

Feature Description (功能描述)

Relative Issues #435 #828 #1218 #1398 #1517 #1581 #1609 #1760 #1925 #1968 #1979

Background

Currently, the architecture of the community version of HugeGraph is still in version 1.0. In the internal version 2.0 of HugeGraph, we have the following design goals:

  • Support trillion-scale data storage and tens of thousands of graph storages.
  • Support multi-active, high availability, dynamic scalability, and automated operation and maintenance.
  • Maximize read and write performance.

Based on these goals, we have designed a distributed architecture that supports graph data partitioning and multiple replicas, and separates storage from computation for flexible scaling.

In version 2.0, in addition to the hugegraph-server, we also introduce two additional components: hugegraph-pd and hugegraph-store

image

The responsibilities of these two components are as follows:

  • hugegraph-pd: pd stands for placement driver, which can be simply understood as a meta server responsible for service discovery, partition information storage, and node scheduling.
  • hugegraph-store: as a new built-in storage backend, it uses RocksDB as the distributed backend storage foundation.

We will gradually merge the internal version 2.0 of HugeGraph into the community version. Therefore, the first step is to integrate the hugegraph-pd and hugegraph-store modules into this repository.

Tasks

Introduce PD and Store on the pd-store branch.

Currently, all tasks should be carried out on the pd-store branch:

Project structure adjustments on the master branch.

After #2301, it should be possible to perform simple CRUD operations on HugeGraph on the pd-store branch. In the next phase, the pd-store branch will need to be merged into the master branch with an appropriate granularity.

We will reorganize commit messages and merge changes ahead of the pd-store branch into the master branch:

  • pd-grpc, pd-common, pd-client (~8k loc)
  • pd-core (~9k loc)
  • pd-service (~11k loc)
  • pd-dist, pd-test (~1k loc)

  • store-grpc, store-common, store-client (~13k loc)
  • store-rocksdb (~4k loc)
  • store-core (~14k loc)
  • store-node (~11k loc)
  • store-dist, store-test, store-cli (~3k loc)

  • server-hstore (~3k loc)
  • server-core (~12k loc)
flowchart TD
  A(hg-pd-grpc)
  B(hg-pd-common)
  C(hg-pd-client)
  D(hugegraph-core)
  E(hugegraph-hstore)
  F(hg-store-grpc)
  G(hg-store-common)
  H(hg-store-client)
  J(hg-pd-core)
  K(hg-pd-service)
  L(hg-pd-dist)
  M(hg-store-cli)
  N(hg-store-rocksdb)
  O(hg-store-core)
  P(hg-store-node)
  Q(hg-store-dist)
  B-->A
  C-->B
  D-.->C
  E-->D
  H-->F
  H-->G
  H-->C
  D-->G
  E-->H
  O-->D
  J-->B
  K-->J
  L-->K
  M-->H
  N-->G
  O-.->H
  O-->N
  P-->O
  Q-->P
Loading

Project Structure

# new project structure
                   - core/api/test/...
          - server - hbase/rocksdb/mysql/...
          -        - ...
hugegraph - pd - pd submodules
          -
          - store - store submodules

Metadata

Metadata

Labels

featureNew featurehstoreHstore backendpdPD modulestoreStore module

Type

No type

Projects

Status

✅ Done

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions