Java分布式键-值缓存系统:Voldemort

jopen 10年前

Voldemort是一款基于Java开发的分布式键-值缓存系统,像JBoss Cache一样,Voldemort同样支持多台服务器之间的缓存同步,以增强系统的可靠性和读取性能。

Voldemort的特点

  • 缓存数据可以自动在各个服务器节点之间同步复制。
  • 每一个服务器的缓存数据被横向分割,因此是总缓存的一个子集。
  • 严格保持缓存的一致性。
  • 提供服务器宕机快速恢复方案。
  • 可配置的数据存储引擎。
  • 可配置的数据序列化方式。
  • 每一个数据项都有版本标识,用来保证数据的完整性和可用性。
  • 每一个缓存节点都是独立的,因此任何一个节点的故障都不会影响系统的正常运行。

Voldemort键-值原理图

Java分布式键-值缓存系统:Voldemort

Voldemort逻辑架构图

Java分布式键-值缓存系统:Voldemort

Voldemort物理架构图

Voldemort的配置方式

集群配置文件:

<cluster>      <!-- The name is just to help users identify this cluster from the gui -->      <name>mycluster</name>      <zone>        <zone-id>0</zone-id>        <proximity-list>1</proximity-list>      <zone>      <zone>        <zone-id>1</zone-id>        <proximity-list>0</proximity-list>      <zone>      <server>        <!-- The node id is a unique, sequential id beginning with 0 that identifies each server in the cluster-->        <id>0</id>        <host>vldmt1.prod.linkedin.com</host>        <http-port>8081</http-port>        <socket-port>6666</socket-port>        <admin-port>6667</admin-port>        <!-- A list of data partitions assigned to this server -->        <partitions>0,1,2,3</partitions>        <zone-id>0</zone-id>      </server>      <server>        <id>1</id>        <host>vldmt2.prod.linkedin.com</host>        <http-port>8081</http-port>        <socket-port>6666</socket-port>        <admin-port>6667</admin-port>        <partitions>4,5,6,7</partitions>        <zone-id>1</zone-id>      </server>    </cluster>

数据存储方式配置文件:

<stores>        <store>     <name>test</name>     <replication-factor>2</replication-factor>     <preferred-reads>2</preferred-reads>     <required-reads>1</required-reads>     <preferred-writes>2</preferred-writes>     <required-writes>1</required-writes>     <persistence>bdb</persistence>     <routing>client</routing>     <routing-strategy>consistent-routing</routing-strategy>     <key-serializer>         <type>string</type>         <schema-info>utf8</schema-info>     </key-serializer>     <value-serializer>         <type>json</type>         <schema-info version="1">[{"id":"int32", "name":"string"}]</schema-info>         <compression>      <type>gzip<type>         </compression>     </value-serializer>        </store>    </stores>

Voldemort的使用示例

value = store.get(key)  store.put(key, value)  store.delete(key)

总结

Voldemort是分布式缓存系统,因此可以应用在中大型的软件项目中,性能方面也都还不错。


本文链接:http://原网站已经失效/article/voldemort-java-key-value-catch.html
本文作者:码农网 – 小峰