【转载】Java分布式键-值缓存系统Voldemort
Voldemort是一款基于Java开发的分布式键-值缓存系统,像JBoss Cache一样,Voldemort同样支持多台服务器之间的缓存同步,以增强系统的可靠性和读取性能。
Voldemort的特点
- 缓存数据可以自动在各个服务器节点之间同步复制。
- 每一个服务器的缓存数据被横向分割,因此是总缓存的一个子集。
- 严格保持缓存的一致性。
- 提供服务器宕机快速恢复方案。
- 可配置的数据存储引擎。
- 可配置的数据序列化方式。
- 每一个数据项都有版本标识,用来保证数据的完整性和可用性。
- 每一个缓存节点都是独立的,因此任何一个节点的故障都不会影响系统的正常运行。
Voldemort键-值原理图

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://www.codeceo.com/article/voldemort-java-key-value-catch.html
本文作者: 小峰