`
bofang
  • 浏览: 126845 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Voldemort的RoutedStore

 
阅读更多

 

 

RoutedStore是Voldemort客户端的一个重要组件,他的职责是将数据操作路由到不同的节点上。RoutedStore内部维护了与节点通信的客户端列表,这些客户端是Store的实现类,可以是SocketStore或HttpStore。对于每一个节点,RoutedStore会建立请求,发送数据,等待响应,验证响应结果是否正确,执行一些记录的动作,除此之外,RoutedStore还有一些恢复的逻辑。

 

在使用RoutedStore之前,Voldemort使用的是ThreadPoolStore,但是ThreadPoolStore有两个重要的缺陷:

 

1. 逻辑非常复杂。

2. 如果某个节点的响应比较慢,会耗尽线程池里的线程。

 

RoutedStore采用状态机和管道的机制将各种业务操作进行分离,降低了实现的复杂度。同时,RoutedStore采用NIO模式,也避免了线程耗尽的问题。

 

Action

 

Action定义了在管道中的粒子逻辑。当Pipeline接收到一个Event时,某个Action的execute方法会被调用。逻辑的粒度没有一个很明确的标准,当然,可以用直觉的逻辑来定义Action的边界。下图是实现Action的类列表:

 

 

通过Pipeline.addEventAction(Event, Action)方法,可以将某个Action映射到某个事件上。当Pipeline接收到该事件,与该事件对应的Action会被执行。

 

Pipeline

 

Pipeline是Action执行的通道,Pipeline内部维护了一个Event队列,Pipeline会顺序读取该队列的Event,执行该Event对应的Action。addEventAction(Event, Action)接口提供注册Event以及对应的Action的功能。如果需要增加一个需要处理的Event,可以调用addEvent(Event)。

 

每一个Pipeline都只归属一种操作类型,操作类型有:GET, GET_ALL, GET_VERSIONS, PUT, DELETE。在Pipeline的构造方法中必须要指定某种操作类型。

 

Event

 

Event是一个枚举类型,有下面几种:

 

STARTED

CONFIGURED

COMPLETED

INSUFFICIENT_SUCCESSES

INSUFFICIENT_ZONES

RESPONSES_RECEIVED

ERROR

MASTER_DETERMINDED

ABORTED

HADOFF_FINISHED

 

 

 

分享到:
评论

相关推荐

    voldemort,亚马逊发电机的开源克隆。.zip

    voldemort,亚马逊发电机的开源克隆。.zip概述

    voldemort 只使用内存作缓存的配置

    只使用内存作缓存,不使用持久化。 启动时开启 jmx 6650 端口。

    Voldemort:分布式键值存储系统-开源

    Voldemort 是一个分布式数据库,它是亚马逊 Dynamo 的开源克隆。 它自动在多个服务器上复制数据,并自动对它们进行分区,因此每个服务器只包含总数据的一个子集。 它提供了许多其他功能,例如可插拔序列化支持、数据...

    Impractical Python Projects (2018.11出版,EPUB格式)

    Derive the anagram, “I am Lord Voldemort” using linguistical sieves Plan your parents’ secure retirement with Monte Carlo simulation Save the sorceress Zatanna from a stabby death using palingrams ...

    Voldemort Replacer-crx插件

    这个扩展用三个随机值之一代替网站中的Voldemort。 用“您不知道的人”,“他不愿透露姓名的人”或“黑暗之王”的随机选择替换伏地魔或伏地魔勋爵(包括所有格选项)。 支持语言:English (United States)

    Nosql_Voldormort:No Sql-RubiS框架的Voldemort实现

    No Sql-RubiS框架的Voldemort实现

    Voldemort271.github.io:..

    Voldemort271.github.io 您好,这将是我的主页。 我将链接我制作的所有程序。

    LePen2Voldemort-crx插件

    种族主义者,这些人的可恶和丑陋都是一样的。神秘人的名字将不会再显示与此扩展名。 支持语言:Français

    ComboGen:Android设备(Termux)的组合列表生成器(@ Voldemort1912)

    重要提示,请仔细阅读。 由于@ Nube46的捐赠,ComboGen已更新到v4.0。 它不再免费使用,并且根据他的要求具有身份验证系统。 任何愿意购买订阅的人都可以支付5美元。 与我联系, 以进行购买。 ...

    lucene of lietu

    基于lucene的实时搜索引擎zoie 实时搜索成为了目前搜索引擎发展的重要方向。越来越多的开发者开始关注...* Voldemort – Distributed key-value storage http://project-voldemort.com/ Also see: * No Related Post

    ist的matlab代码-SpotifyChecker:@Voldemort1912的Android设备(Termux)的MassSpotif

    ist的matlab代码 由于Spotify登录系统的新变化,该程序目前还没有用。 因此,它已被存档。 SpotifyChecker Mass Spotify Accounts Checker v0.1(于19/02/2019 01.20 IST上传) Mass Spotify ...Spotif

    NoSQL性能测试包YCSB

    Yahoo 专门用于主流的 nosql 性能测试,java 编写,内集成 hbase,mongodb,cassandra,voldemort,redis。使用时注意需要将相应的数据库驱动复制到对应的数据库 lib 下面。

    NoSQL数据库笔谈

    1. 序 2. 思想篇 CAP 最终一致性 变体 BASE 其他 I/O的五分钟法则 不要删除数据 RAM是硬盘,硬盘是...Voldemort Dynomite Kai 未分类 Skynet Drizzle 比较 可扩展性 数据和查询模型 持久化设计 5. 应用篇 eBay 架构经验

    NoSQL和Redis简介及Redis在Windows下的安装和使用教程

    现有Nosql DB 产品: Redis/MongoDB/Memcached/Hbase/Cassandra/ Tokyo Cabinet/Voldemort/Dynomite/Riak/ CouchDB/Hypertable/Flare/Tin/Lightcloud/ KiokuDB/Scalaris/Kai/ThruDB, 等等~~~ 为什么需要NoSQL非关系...

    shuttle:平台即服务的撤消重做恢复系统 - INESC-ID Research

    Shuttle:平台即服务 (PaaS) 和云计算中... 支持快照的修改后的 voldemort 实现: PaaS 的演示应用程序: 一个分布式(主从)HTTP 基准测试工具,它从文件中读取 HTTP 请求并具有简化的 API: 随时提出有关它的问题

    吞噬大数据存储领域新机制——NoSQL模式解析

    在NoSQL世界中有以下关键的成员,包括GoogleBigTable、HBase、HypertableAmazonDynamo、Voldemort、Cassendra、RiakRedisCouchDB、MongoDB。在过去几年,一种新兴的大型数据存储机制正吞噬大数据存储市场。这种存储...

Global site tag (gtag.js) - Google Analytics