Partioning and Replication Factor.

22 views
Skip to first unread message

Paolo Forte

unread,
May 14, 2015, 1:06:22 PM5/14/15
to project-...@googlegroups.com
Hi,
I have a doubt on a configuration I am using for some experiments.
Basically, I issue write and read requests from a client machine using the built-in performance tool.
I have 2 nodes running on different machines with replication factor 2 (see attached config files). The partitioning is the following: 
Node 0 =  partitions 0,1
Node 1 =  partition 2,3
My goal is is to retrieve/insert as fast as possible the data. I thought to use a full replication setting in order to retrieve/insert each value from/to both the nodes and collect the fastest response. example: the client wants to read or write X. It sends 2 requests, one towards Node 0, the other towards Node 1. Eventually it will collect the fastest response, ignoring or resetting the remaining connection of the slowest response.

Am I wrong or with this configuration I won't achieve replication factor 2? I mean, it can happen that the datum X is only on one of the two nodes. So I guess that the configuration I need is the following, right?
Node 0 =  partitions 0,3
Node 1 =  partition 1,3

Moreover, what is the difference between having 4 partitions instead of just 2? ( e.g. Node 0 = partition 0, Node 1 = partition 1 ) 

Last check, is this the right way to be capable to issue requests towards both the nodes at the same time? I assumed the client is informed of the address of the 2nd node and automatically issue requests toward both of them
./voldemort-performance-tool.sh <...> --url tcp://192.168.0.9:6666 --store-name test


Thanks!


store configuration file
<store>
  <name>test</name>
  <persistence>bdb</persistence>
  <description>Test store</description>
  <routing-strategy>consistent-routing</routing-strategy>
  <routing>client</routing>
  <replication-factor>2</replication-factor>
  <required-reads>1</required-reads>
  <required-writes>1</required-writes>
  <key-serializer>
    <type>string</type>
  </key-serializer>
  <value-serializer>
    <type>string</type>
  </value-serializer>
  <hinted-handoff-strategy>consistent-handoff</hinted-handoff-strategy>
</store>

cluster.xml
<cluster>
        <name>myprodcluster</name>
        <server>
                <id>0</id>
                <host>192.168.0.9</host>
                <http-port>8081</http-port>
                <socket-port>6666</socket-port>
                <admin-port>7777</admin-port>
                <partitions>0, 1</partitions>
        </server>
<server>
      <id>1</id>
      <host>192.168.0.7</host>
      <http-port>8081</http-port>
    <socket-port>6666</socket-port>
      <admin-port>6667</admin-port>
      <partitions>2, 3</partitions>
    </server>
</cluster>

Reply all
Reply to author
Forward
0 new messages