How Gitlab puts gRPC in the Real World

Figure 1: The architecture of the Gitaly framework

Figure 1: The architecture of the Gitaly framework

Table 1: The components that make up the Gitaly framework

Component Description
gitlab-rails The ruby client for accessing GitLab and in turn, Gitaly
Workhorse Gitlab-workhorse is a smart reverse proxy for GitLab. It handles "large" HTTP requests executed via git clone for slow requests that serve raw Git data such as file downloads, file uploads, git push/pull, and Git archive downloads.
GitLab Shell GitLab Shell handles git SSH sessions for GitLab and modifies the list of authorized keys. GitLab Shell is not a Unix shell nor a replacement for Bash or Zsh. GitLab Shell is used for tasks such as for git clone, git push etc… executed via SSH.
Command-Line Client The command line tool for interacting with GitLab
Gitaly gRPC Ruby Client Stubs A gRPC client special to programmers accessing GitLab using Ruby code
Gitaly gRPC Client Stubs A gRPC client special to the HTTPS instance, ssh interaction and the command line tool
Gitaly gRPC Server Interface The gRPC server that gRPC clients interact with to access the Gitaly service
Gitaly Service The main service that coordinates and executes access to Git repositories under GitLab
Gitaly git integration (git spawn) Gitaly service implementation in Go
gitaly-ruby-service Used for supporting gRPC calls that interact with more than one repository, such as merging a branch
Git spawn and libgit2/rugged The mechanism for supporting access to the .git directory via an internal C interface
Local filesystem on NFS The file system on which .git repositories are stored
+

Esta página está disponible en español

Ver en español