Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jgit-dev] Ketch: multi-master replicated Git

I would add ... after the JGit BitMap work ... and now the JGit multi-master agreement manager ... JGit is definitely the innovation gear and leading the way of Git into the Enterprise :-)
Thanks Shawn again for contributing it.

Luca.

On 13 Jan 2016, at 16:40, Saša Živkov <zivkov@xxxxxxxxx> wrote:



On Wed, Jan 13, 2016 at 3:54 PM, Shawn Pearce <spearce@xxxxxxxxxxx> wrote:
Google is starting to contribute a new multi-master implementation,
calling it Git Ketch. Changes are on the Eclipse Gerrit[1].

Great news!
Thanks for contributing this work to JGit.
Looks like replicated, multi-master, open source Gerrit will be soon a reality :-)

Do you also have a POC change in Gerrit which adds the "--ketch=LEADER"
to its daemon program? Would something like that be useful at this early phase?


What is Git Ketch?
------------------
Git Ketch is a multi-master Git repository management system. Writes
(such as git push) can be started on any server, at any time. Writes
are successful only if a majority of participant servers agree.

Acked writes are durable against server failure, due to a majority of
the participants storing all required objects.


Do I need DFS?
--------------
No. We realized not everyone wants to run JGit DFS. Git Ketch is a
higher-level, storage-agnostic service that can use both classical
local file repositories, and DFS type repositories.


Do I need JGit?
---------------
Sort of.

The Ketch Leader process running the consensus algorithm is currently
implemented in Java, relying on JGit. However...

Any Git repository served by Git >= 2.4.0 can act as a voting
participant (the required feature is `git push --atomic`). The
consensus algorithm runs on the Git wire protocol.


Where's the rest?
-----------------
Google's prior multi-master implementation is 4 years old and heavily
intertwined with internal source code. We are rewriting the
multi-master logic and open sourcing as we go. We think this will make
it easier for the JGit project to review and digest.

Unfortunately, major portions are being rewritten from scratch, as
there are segments deeply connected to our internal implementation of
JGit DFS on Google Bigtable, or to our internal authentication and RPC
protocols. None of that makes sense in the open source JGit project.

So, the rest is Coming Soon(TM). We are working on it.
You can help by providing feedback. :)


Why is it called Git Ketch?
---------------------------
Git Ketch is modeled on the Raft Consensus Algorithm[2]. A ketch[3]
sailing vessel is faster and more nimble than a raft[4]. It can also
carry more source codes.

Git Ketch front-loads replication costs, which we think vaguely
resembles a ketch sailing vessel's distinguishing feature of the main
mast on the front of the ship.


Footnotes
---------
[1] https://git.eclipse.org/r/64206
[2] https://raft.github.io/
[3] https://www.google.com/search?q=ketch&tbm=isch
[4] https://www.google.com/search?q=raft&tbm=isch
_______________________________________________
jgit-dev mailing list
jgit-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jgit-dev

_______________________________________________
jgit-dev mailing list
jgit-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jgit-dev


Back to the top