Skip to content
/ mongoz Public

An alternative implementation of MongoDB sharding server aimed at high availability

License

Notifications You must be signed in to change notification settings

yandex/mongoz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mongoz is a replacement for MongoDB sharding server (mongos) aimed at higher availability in less-than-absolutely-reliable network environments at expense of somewhat relaxed consistency guarantees.

Some distinguishing features of mongoz include:

  • Hard timeouts: each operation has to finish in predefined time. In case of network failures, clients get their errors early (i.e. they don't have to wait for i/o timeout from operating system) and thus are much less likely to face a DoS.

  • Early request retransmission: if there's more than one replica capable of handling a request, mongoz can be configured to retransmit a request to another replica before a timeout occurs and return whichever reply comes first. That way, even a network failure in the middle of a performing request does not neccessarily lead to any errors reported to clients.

  • Config caching: mongoz does not query its config servers upon a specific event (like incoming connection or authentication attempt). Instead, it keeps its local copy of the whole cluster config and synchronizes it periodically with config servers. As a result, unavailable config servers (even all of them) still don't render the whole cluster unusable.

Mongoz strictly obeys MongoDB wire protocol and thus can be used as a drop-in replacement for mongos. Moreover, it can freely coexist with mongos within a same MongoDB cluster if neccessary.

More detailed description of mongoz features can be found in its man page.

About

An alternative implementation of MongoDB sharding server aimed at high availability

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages