Skip to content

Commit

Permalink
Changes after review
Browse files Browse the repository at this point in the history
  • Loading branch information
andreyvelich committed Apr 25, 2022
1 parent 37c6660 commit d938d52
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 17 deletions.
45 changes: 28 additions & 17 deletions docs/source/developers/architecture.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ This information is useful for developers who want to understand how Jupyter
Server components are connected and how the principal workflows look like.

To make changes for these diagrams, use `the Draw.io <https://app.diagrams.net/>`_
open source tool.
open source tool to edit the png file.


Jupyter Server Architecture
---------------------------

The Jupyter Server system can be seen in figure bellow:
The Jupyter Server system can be seen in figure below:

.. image:: ../images/jupyter-server-architecture.drawio.png
:alt: Jupyter Server Architecture
Expand All @@ -31,32 +31,43 @@ Jupyter Server contains the following components:
SererApp settings. Follow :ref:`the Config File Guide <other-full-config>` to
learn about configuration settings and how to build custom config.

- **Custom Extensions** allow to create the custom Server's REST API endpoint.
- **Custom Extensions** allow you to create the custom Server's REST API endpoints.
Follow :ref:`the Extension Guide <extensions>` to know more about extending
ServerApp with extra request handlers.

- **Kernel Gateway** is the web server that provides access to Jupyter Kernels.
There are different ways to create this gateway. If your ServerApp needs to
communicate with remote Kernels, you can use
`the Enterprise Gateway <https://github.com/jupyter-server/enterprise_gateway>`_,
otherwise you can use `the Kernel Gateway <https://github.com/jupyter-server/kernel_gateway>`_.
- **Gateway Server** is a web server that, when configured, provides access to
Jupyter Kernels running on other hosts. There are different ways to create a
gateway server. If your ServerApp needs to communicate with remote Kernels
residing within resource-managed clusters, you can use
`Enterprise Gateway <https://github.com/jupyter-server/enterprise_gateway>`_,
otherwise, you can use
`Kernel Gateway <https://github.com/jupyter-server/kernel_gateway>`_, where
Kernels run locally to the gateway server.

- **Contents Manager and File Contents Manager** are responsible for serving
Notebook on the file system. Session Manager uses Contents Manager to receive
Kernel path. Follow :ref:`the Contents API guide <contents_api>` to learn
about Contents Manager.

- **Session Manager** processes users Sessions. When user starts a new Kernel,
- **Session Manager** processes users' Sessions. When a user starts a new Kernel,
Session Manager starts a process to provision Kernel for the user and generates
a new Session ID. Each opened Notebook has a separate Session, but different
Notebook Kernels can use the same Session. That is useful if user wants to
Notebook Kernels can use the same Session. That is useful if the user wants to
share data across various opened Notebooks. Session Manager uses SQLite3
DataBase to store the Sessions.
DataBase to store the Session information. The database is stored in memory by
default, but can be configured to save to disk.

- **Mapping Kernel Manager** is responsible to operate multiple Kernels in the
ServerApp. It starts a new Kernel for a user's Session and generates a
new Kernel ID.
- **Mapping Kernel Manager** is responsible for managing the lifecycles of the
Kernels running within the ServerApp. It starts a new Kernel for a user's Session
and facilitates interrupt, restart, and shutdown operations against the Kernel.

- **Kernel Spec Manager** parses file with JSON specification for a Kernel.
To know more about Kernel Spec, follow
`the Jupyter Client guide <https://jupyter-client.readthedocs.io/en/stable/kernels.html#kernel-specs>`_.
- **Jupyter Client** library is used by Jupyter Server to work with the Notebook
Kernels.

- **Kernel Manager** manages a single Kernel for the Notebook. To know more about
Kernel Manager, follow
`the Jupyter Client APIs documentation <https://jupyter-client.readthedocs.io/en/latest/api/manager.html#jupyter_client.KernelManager>`_.

- **Kernel Spec Manager** parses files with JSON specification for a Kernels,
and provides a list of available Kernel configurations. To learn about
Kernel Spec, check `the Jupyter Client guide <https://jupyter-client.readthedocs.io/en/stable/kernels.html#kernel-specs>`_.
Binary file modified docs/source/images/jupyter-server-architecture.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit d938d52

Please sign in to comment.