Skip to content

Instantly share code, notes, and snippets.

@jrudolph
Created April 7, 2022 09:32
Show Gist options
  • Save jrudolph/d49eb52bfb33e6b1acc10a2c92a5b148 to your computer and use it in GitHub Desktop.
Save jrudolph/d49eb52bfb33e6b1acc10a2c92a5b148 to your computer and use it in GitHub Desktop.
Yugabyte Architecture / Implementation Details

As of version 2.12.1.0

https://docs.yugabyte.com/preview/architecture/ has some information but too little about the actual implementation details.

The whole project is written in C++.

Components

  • master(s): provide metadata services and are involved in all kinds of metadata changes, manage the set of tservers, disitrbute tablets to tservers. There's a cluster of masters and RAFT is used to determine a leader. It seems that, in general, only the master leader is actively serving requests.
  • tserver: "Tablet Server", provide access to data. Each tablet is served by multiple tservers which use RAFT to determine leader and follower status (for each tablet separately).

Implementation

  • Data storage: using DocDB which is a fork of rocksdb. DocDB is used inside of the tserver process to store actual data. It is also used inside of the masters to store metadata.
  • Network traffic: uses RPC calls based on protobuf, the framing protocol sequentially runs single RPC cycles on a connection and is based on a Hadoop protocol (see https://github.com/yugabyte/yugabyte-db/blob/master/src/yb/rpc/README)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment