incubator-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Incubator Wiki] Trivial Update of "CuratorProposal" by JordanZimmerman
Date Tue, 26 Feb 2013 01:36:28 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Incubator Wiki" for change notification.

The "CuratorProposal" page has been changed by JordanZimmerman:
http://wiki.apache.org/incubator/CuratorProposal?action=diff&rev1=1&rev2=2

Comment:
Fix bad wiki names

  
  == Abstract ==
  
- Curator is a set of Java libraries that make using Apache ZooKeeper much easier. While ZooKeeper
comes bundled with a Java client, using the client is non-trivial and error prone.
+ Curator is a set of Java libraries that make using Apache !ZooKeeper much easier. While
!ZooKeeper comes bundled with a Java client, using the client is non-trivial and error prone.
  
  == Proposal ==
  
- Curator is a set of Java libraries that make using Apache ZooKeeper much easier. While ZooKeeper
comes bundled with a Java client, using the client is non-trivial and error prone. It consists
of three components that build on each other. Curator Client is a replacement for the bundled
ZooKeeper class that takes care of some low-level housekeeping and provides some useful utilities.
Curator Framework is a high-level API that greatly simplifies using ZooKeeper. It adds many
features that build on ZooKeeper and handles the complexity of managing connections to the
ZooKeeper cluster and retrying operations. Curator Recipes consists of implementations of
some of the common ZooKeeper “recipes”. Additionally, Curator Test is included which includes
utilities to help with unit testing ZooKeeper-based applications.
+ Curator is a set of Java libraries that make using Apache !ZooKeeper much easier. While
!ZooKeeper comes bundled with a Java client, using the client is non-trivial and error prone.
It consists of three components that build on each other. Curator Client is a replacement
for the bundled !ZooKeeper class that takes care of some low-level housekeeping and provides
some useful utilities. Curator Framework is a high-level API that greatly simplifies using
!ZooKeeper. It adds many features that build on !ZooKeeper and handles the complexity of managing
connections to the !ZooKeeper cluster and retrying operations. Curator Recipes consists of
implementations of some of the common !ZooKeeper "recipes". Additionally, Curator Test is
included which includes utilities to help with unit testing !ZooKeeper-based applications.
  
  == Background ==
  
- Curator was initially developed by Netflix to make writing ZooKeeper-based applications
easier and more reliable. Curator was open-sourced by Netflix on !GitHub as an Apache 2.0
licensed project in July 2011. During this time Curator has been formally released many times
and has gained widespread adoption.
+ Curator was initially developed by Netflix to make writing !ZooKeeper-based applications
easier and more reliable. Curator was open-sourced by Netflix on !GitHub as an Apache 2.0
licensed project in July 2011. During this time Curator has been formally released many times
and has gained widespread adoption.
  
  == Rationale ==
  
- New users of ZooKeeper are surprised to learn that a significant amount of connection management
must be done manually. For example, when the ZooKeeper client connects to the ensemble it
must negotiate a new session, etc. This takes some time. If you use a ZooKeeper client API
before the connection process has completed, ZooKeeper will throw an exception. These types
of exceptions are referred to as “recoverable” errors. 
+ New users of !ZooKeeper are surprised to learn that a significant amount of connection management
must be done manually. For example, when the !ZooKeeper client connects to the ensemble it
must negotiate a new session, etc. This takes some time. If you use a !ZooKeeper client API
before the connection process has completed, !ZooKeeper will throw an exception. These types
of exceptions are referred to as "recoverable" errors. 
- Curator automatically handles connection management, greatly simplifying client code. Instead
of directly using the ZooKeeper APIs you use Curator APIs that internally check for connection
completion and wrap each ZooKeeper API in a retry loop. Curator uses a retry mechanism to
handle recoverable errors and automatically retry operations. The method of retry is customizable.
Curator comes bundled with several implementations (ExponentialBackoffRetry, etc.) or custom
implementations can be written.
+ Curator automatically handles connection management, greatly simplifying client code. Instead
of directly using the !ZooKeeper APIs you use Curator APIs that internally check for connection
completion and wrap each !ZooKeeper API in a retry loop. Curator uses a retry mechanism to
handle recoverable errors and automatically retry operations. The method of retry is customizable.
Curator comes bundled with several implementations (!ExponentialBackoffRetry, etc.) or custom
implementations can be written.
  
- The ZooKeeper documentation describes many possible uses for ZooKeeper calling each a “recipe”.
While the distribution comes bundled with a few implementations of these recipes, most ZooKeeper
users will need to manually implement one or more of the recipes. Implementing a ZooKeeper
recipe is not trivial. Besides the connection handling issues, there are numerous edge cases
that are not well documented that must be considered. For example, many recipes require that
an ephemeral-sequential node be created. New users of ZooKeeper will not know that there is
an edge case in ephemeral-sequential node creation that requires you to put a special “marker”
in the node’s name so that you can search for the created node if an I/O failure occurs.
This is but one of many edge cases that are not well documented but are handled by Curator.
+ The !ZooKeeper documentation describes many possible uses for !ZooKeeper calling each a
"recipe". While the distribution comes bundled with a few implementations of these recipes,
most !ZooKeeper users will need to manually implement one or more of the recipes. Implementing
a !ZooKeeper recipe is not trivial. Besides the connection handling issues, there are numerous
edge cases that are not well documented that must be considered. For example, many recipes
require that an ephemeral-sequential node be created. New users of !ZooKeeper will not know
that there is an edge case in ephemeral-sequential node creation that requires you to put
a special "marker" in the node’s name so that you can search for the created node if an
I/O failure occurs. This is but one of many edge cases that are not well documented but are
handled by Curator.
  
  = Current Status =
  
@@ -39, +39 @@

   * Jordan Zimmerman
   * Jay Zarfoss
  
- Jordan has contributed towards Apache ZooKeeper and both Jordan and Jay are familiar with
Apache principles and philosophy for community driven software development.
+ Jordan has contributed towards Apache !ZooKeeper and both Jordan and Jay are familiar with
Apache principles and philosophy for community driven software development.
  
  == Alignment ==
  
- Curator is a natural complement for Apache ZooKeeper. Java users of ZooKeeper will naturally
want to use Curator. When Curator graduates from Incubator it may be useful to distribute
Curator artifacts as part of ZooKeeper releases as the preferred/recommended client side library.
Further, at graduation a determination can be made as to whether Curator should become a Top
Level Project or be merged into ZooKeeper itself.
+ Curator is a natural complement for Apache !ZooKeeper. Java users of !ZooKeeper will naturally
want to use Curator. When Curator graduates from Incubator it may be useful to distribute
Curator artifacts as part of !ZooKeeper releases as the preferred/recommended client side
library. Further, at graduation a determination can be made as to whether Curator should become
a Top Level Project or be merged into !ZooKeeper itself.
  
  = Known Risks =
  
@@ -65, +65 @@

  
  == Relationships with Other Apache Products ==
  
- Curator depends upon other Apache Projects: Apache ZooKeeper, Apache Log4J, and multiple
Apache Commons components. Its build depends upon Apache Maven. Notably, there is interest
from other Apache Projects such as HBase in adopting Curator as the client library for ZooKeeper.
Apache James Mailbox has already incorporated Curator.
+ Curator depends upon other Apache Projects: Apache !ZooKeeper, Apache Log4J, and multiple
Apache Commons components. Its build depends upon Apache Maven. Notably, there is interest
from other Apache Projects such as HBase in adopting Curator as the client library for !ZooKeeper.
Apache James Mailbox has already incorporated Curator.
  
  == An Excessive Fascination with the Apache Brand ==
  
- We would like Curator to become an Apache project to further foster a healthy community
of contributors and consumers around the project.  Since Curator directly interacts with Apache
ZooKeeper and solves an important problem of many ZooKeeper users, residing in the Apache
Software Foundation will increase interaction with the larger community.
+ We would like Curator to become an Apache project to further foster a healthy community
of contributors and consumers around the project.  Since Curator directly interacts with Apache
!ZooKeeper and solves an important problem of many !ZooKeeper users, residing in the Apache
Software Foundation will increase interaction with the larger community.
  
  = Documentation =
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@incubator.apache.org
For additional commands, e-mail: cvs-help@incubator.apache.org


Mime
View raw message