jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Axel Hanikel (JIRA)" <j...@apache.org>
Subject [jira] [Created] (OAK-7932) A distributed segment store for the cloud
Date Mon, 03 Dec 2018 12:33:00 GMT
Axel Hanikel created OAK-7932:

             Summary: A distributed segment store for the cloud
                 Key: OAK-7932
                 URL: https://issues.apache.org/jira/browse/OAK-7932
             Project: Jackrabbit Oak
          Issue Type: Wish
          Components: segment-tar
            Reporter: Axel Hanikel
            Assignee: Axel Hanikel

# Outline

This issue documents some proof-of-concept work for adapting the segment tar nodestore to
distributed environment. The main idea is to adopt an actor-like model, meaning:

-   Communication between actors (services) is done exclusively via messages.
-   An actor (which could also be a thread) processes one message at a time, avoiding sharing
    state with other actors as far as possible.
-   Segments are kept in RAM and are written to external storage lazily only for disaster
-   As RAM is a very limited resource, different actors own their share of the total segment
-   An actor can also cache a few segments which it does not own but which it uses often
(such as
    the one containing the root node)
-   The granularity of operating on whole segments may be too coarse, so perhaps reducing
the segment size would improve performance.
-   We could even use the segment solely as an addressing component and operate at the record
    That would avoid copying data around when collecting garbage: garbage records would
just be
    evicted from RAM.

# Implementation

The first idea was to use ZeroMQ for communication because it seems to be a high-quality and
easy to use implementation. A major drawback is that the library is written in C and the Java
library which does the JNI stuff seems hard to set up and did not work for me. There is a
Java implementation of the ZeroMQ protocol, aptly called jeromq, which seems to work well
so far, but I don't know about its performance yet.

There is an attempt to use jeromq in the segment store in a very very very early stage at
<https://github.com/ahanikel/jackrabbit-oak/tree/zeromq> . It is based on the memory
segment store and currently just replaces direct function calls for reading and writing segments
with messages being sent and received.

This message was sent by Atlassian JIRA

View raw message