You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by ji...@apache.org on 2017/03/30 20:41:44 UTC

incubator-ratis git commit: RATIS-51. Add ratis-replicated-map module. Contributed by Enis Soztutar.

Repository: incubator-ratis
Updated Branches:
  refs/heads/master 48fbe431a -> 4010e7c47


RATIS-51. Add ratis-replicated-map module. Contributed by Enis Soztutar.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ratis/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ratis/commit/4010e7c4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ratis/tree/4010e7c4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ratis/diff/4010e7c4

Branch: refs/heads/master
Commit: 4010e7c47cc98bdbc95edd12c19bd34a3f877815
Parents: 48fbe43
Author: Jing Zhao <ji...@apache.org>
Authored: Thu Mar 30 13:41:37 2017 -0700
Committer: Jing Zhao <ji...@apache.org>
Committed: Thu Mar 30 13:41:37 2017 -0700

----------------------------------------------------------------------
 pom.xml                                         |  14 +++
 ratis-assembly/pom.xml                          |  10 ++
 ratis-replicated-map/README.md                  |  22 ++++
 ratis-replicated-map/pom.xml                    | 114 +++++++++++++++++++
 .../src/test/resources/log4j.properties         |  18 +++
 5 files changed, 178 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/4010e7c4/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ea4f72b..a482632 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,6 +53,7 @@
     <module>ratis-hadoop-shaded</module>
     <module>ratis-netty</module>
     <module>ratis-proto-shaded</module>
+    <module>ratis-replicated-map</module>
     <module>ratis-server</module>
   </modules>
 
@@ -271,6 +272,19 @@
       </dependency>
 
       <dependency>
+        <artifactId>ratis-replicated-map</artifactId>
+        <groupId>org.apache.ratis</groupId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <artifactId>ratis-replicated-map</artifactId>
+        <groupId>org.apache.ratis</groupId>
+        <version>${project.version}</version>
+        <type>test-jar</type>
+        <scope>test</scope>
+      </dependency>
+
+      <dependency>
         <artifactId>ratis-server</artifactId>
         <groupId>org.apache.ratis</groupId>
         <version>${project.version}</version>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/4010e7c4/ratis-assembly/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-assembly/pom.xml b/ratis-assembly/pom.xml
index 638b091..bde5bc1 100644
--- a/ratis-assembly/pom.xml
+++ b/ratis-assembly/pom.xml
@@ -195,6 +195,16 @@
     </dependency>
 
     <dependency>
+      <artifactId>ratis-replicated-map</artifactId>
+      <groupId>org.apache.ratis</groupId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-replicated-map</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <type>test-jar</type>
+    </dependency>
+
+    <dependency>
       <artifactId>ratis-server</artifactId>
       <groupId>org.apache.ratis</groupId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/4010e7c4/ratis-replicated-map/README.md
----------------------------------------------------------------------
diff --git a/ratis-replicated-map/README.md b/ratis-replicated-map/README.md
new file mode 100644
index 0000000..7c333de
--- /dev/null
+++ b/ratis-replicated-map/README.md
@@ -0,0 +1,22 @@
+Overview
+========
+Ratis replicated map is an implementation of a sorted map (think TreeMap) as
+a replicated state machine. This is not under examples because it is intended
+to be used in production where a simple in-memory map is sufficient to hold the
+data. The data is fully cached in memory, but it is still durable since raft
+log is used as a replicated log, and data is snapshotted periodically.
+
+
+The replicated map (RMap) is not only the state machine implementation, but
+all of the remaining code, including the client and querying capabilities which
+is built on top of the other modules. In that sense, it is dog-fooding the ratis
+library to implement an end-to-end solution for a replicated in-memory data store.
+
+Replicated maps are conceptually similar to ZooKeeper/Etcd/LogCabin where the data
+is hosted in a known cluster configuration and is not sharded. All the servers
+in the cluster participate in a single RAFT ring.
+
+The data model is that users can create independent RMap instances in the cluster
+and read / write or scan the data as key value pairs in those replicated maps. A
+replicated map named the meta map contains information about all of the other maps
+in the cluster.

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/4010e7c4/ratis-replicated-map/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-replicated-map/pom.xml b/ratis-replicated-map/pom.xml
new file mode 100644
index 0000000..cd22490
--- /dev/null
+++ b/ratis-replicated-map/pom.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>ratis</artifactId>
+    <groupId>org.apache.ratis</groupId>
+    <version>0.1-SNAPSHOT</version>
+    <relativePath>..</relativePath>
+  </parent>
+
+  <artifactId>ratis-replicated-map</artifactId>
+  <name>Ratis Replicated Map</name>
+  <version>0.1-SNAPSHOT</version>
+
+  <dependencies>
+    <dependency>
+      <artifactId>ratis-proto-shaded</artifactId>
+      <groupId>org.apache.ratis</groupId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-common</artifactId>
+      <groupId>org.apache.ratis</groupId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-common</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <scope>test</scope>
+      <type>test-jar</type>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-client</artifactId>
+      <groupId>org.apache.ratis</groupId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-client</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <scope>test</scope>
+      <type>test-jar</type>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-server</artifactId>
+      <groupId>org.apache.ratis</groupId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-server</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <scope>test</scope>
+      <type>test-jar</type>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-hadoop</artifactId>
+      <groupId>org.apache.ratis</groupId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-hadoop</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <scope>test</scope>
+      <type>test-jar</type>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-grpc</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-grpc</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <scope>test</scope>
+      <type>test-jar</type>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-netty</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-netty</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <scope>test</scope>
+      <type>test-jar</type>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/4010e7c4/ratis-replicated-map/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/ratis-replicated-map/src/test/resources/log4j.properties b/ratis-replicated-map/src/test/resources/log4j.properties
new file mode 100644
index 0000000..ced0687
--- /dev/null
+++ b/ratis-replicated-map/src/test/resources/log4j.properties
@@ -0,0 +1,18 @@
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+# log4j configuration used during build and unit tests
+
+log4j.rootLogger=info,stdout
+log4j.threshold=ALL
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n