Java分布式鍵-值緩存系統:Voldemort

jopen 11年前發布 | 14K 次閱讀 Voldemort NoSQL數據庫

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
本文作者:碼農網 – 小峰

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!