本文是实例说明一致性哈希server的数据维护用途。

理论说明參考:http://blog.csdn.net/chenjiayi_yun/article/details/41624603

例如以下图所看到的。本例中一致性哈希server群组是视频server群组,包含server类型:VChannelMediaServer、VChannelServer、VChannelLoadServer、VChannelSuperServer。

server类型和其用途:

VChannelMediaServer频道动态数据(成员数据)和接入server。保存频道成员信息。提供接入地址到client(类似于网关),发送到VChannelServer的请求是依据频道id的一致性哈希决定。

VChannelServer频道数据server,保存频道的详细信息,提供操作频道对象的接口,每一个频道对象以一致性哈希形式存在于该server中。

VChannelLoadServer是频道负载server,备份全部的频道列表以及频道相应的VChannelServer。维护VChannelMediaServer和VChannelServerserver内的server一致性哈希表,维护VChannelServer中的频道对象载入和移除。

(VChannelLoadServer是单server,VChannelServer和VChannelMediaServer是动态启动的多server。)

VChannelSuperServer直播间上级server,为全部直播间相关的server提供向上的连接其它server的接口。

数据维护包含:动态启动vchannelserverserver须要动态载入频道数据和移除旧的server的频道数据,动态关闭vchannelserverserver须要恢复该server的频道到其它server,新数据须要载入和备份。

(VChannelLoadServer依据频道列表记录每一个VChannelServer相应的一些频道)

(1)载入数据

一个VChannelServer启动时,须要VChannelLoadServer同步server哈希一致性列表,计算列表是本server的那些频道,则从数据库载入那些频道的数据到本进程。VChannelLoadServer依据哈希表。计算出属于新启动VChannelServer的一些频道,发送指令到其它VChannelServer使它们移除本进程中属于那些频道的数据。

(2)宕机恢复数据

一个vchannelserver宕机时,须要又一次载入频道数据到其它server。VChannelLoadServer会定时检查vchannelserver连接中的宕机server的连接。依据server哈希表为原来宕机server的每一个频道都分配新的server(会增加等待分配列表,在有合适server时再分配)

(3)新数据

创建频道时,在指定的一个VChannelServer会载入该频道的数据,并备份该频道id到VChannelLoadServer,更新其server哈希一致性列表,更新VChannelServer负载。

操作例如以下图:

一致性哈希server的数据维护的更多相关文章

  1. 《转》SQL Server 2008 数据维护实务

    SQL Server 2008 数据维护实务 http://blog.csdn.net/os005/article/details/7739553 http://www.cnblogs.com/xun ...

  2. 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据

    一致性哈希算法 摘自:http://blog.codinglabs.org/articles/consistent-hashing.html 算法简述 一致性哈希算法(Consistent Hashi ...

  3. 一致性哈希算法学习及JAVA代码实现分析

    1,对于待存储的海量数据,如何将它们分配到各个机器中去?---数据分片与路由 当数据量很大时,通过改善单机硬件资源的纵向扩充方式来存储数据变得越来越不适用,而通过增加机器数目来获得水平横向扩展的方式则 ...

  4. Go -- 一致性哈希算法

    一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用 ...

  5. Redis中的一致性哈希问题

    在说redis中的哈希(准确来说是一致性哈希)问题之前,先来看一个问题:为什么在分布式集群中一致性哈希会得到大量应用? 在一个分布式系统中,要将数据存储到具体某个节点,或者将来自客户端的请求分配到某个 ...

  6. 一致性哈希算法原理、避免数据热点方法及Java实现

     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单 ...

  7. memcached 一致性哈希算法

    本文转载自:http://blog.csdn.net/kongqz/article/details/6695417 一.概述 1.我们的memcache客户端使用了一致性hash算法ketama进行数 ...

  8. memcache 的内存管理介绍和 php实现memcache一致性哈希分布式算法

    1 网络IO模型 安装memcached需要先安装libevent Memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描 ...

  9. Memcached 笔记与总结(8)Memcached 的普通哈希分布算法和一致性哈希分布算法命中率对比

    准备工作: ① 配置文件 config.php ② 封装 Memcached 类 hash.class.php,包含普通哈希算法(取模)和一致性哈希算法 ③ 初始化 Memcached 节点信息 in ...

随机推荐

  1. web开发----jsp中通用模版的引用 include的用法

    1.静态引入的示例 通过对两种用法的了解之后  我们现在 使用静态引入 因为上述原因  我的模版页中 只有div  不会有 path等定义  也不会有html标签 如下: 我的header.jsp 全 ...

  2. 用Martini、websocket实现单机版聊天室

    ChatRoom A stand-alone ChatRoom in Martini Please Star https://github.com/renleimlj/ChatRoom Interfa ...

  3. 关于Pyhton多线程同步队列的应用

    ''' 同步队列 put方法和task_done方法, queue有一个未完成任务数量num,put依次num+1, task依次num-1.任务都完成时任务结束. 1.创建一个 Queue.Queu ...

  4. react Native环境 搭建

    react Native的优点:跨平台 低投入高回报 性能高 支持动态更新.一才两用(ios和Android) 开发成本第 代码复用率高.windows环境搭建react Native开发环境1.安装 ...

  5. 详谈Struts+Hibernate+Spring三大框架

    前言:对于JAVA WEB端的程序员来说,对JAVA三大框架:Struts+Hibernate+Spring的了解必不可缺,下面详细谈谈 Java三大框架主要用来做WEN应用. 三大框架:Struts ...

  6. Redis系列(六)--为什么这么快?

    Redis作为一个基于key-value的NoSQL数据库,最显著的特点存取速度非常快,官方说可以达到10W OPS,但是Redis为何这么快? 1.开发语言 Redis使用C语言进行编写的,而Uni ...

  7. 如何使用Dilworth定理

    相关例题:NOIP 1999导弹拦截 遇到这题不会去网上搜Dilworth定理,太难受了,看不懂证明 但是,我知道怎么使用了,管那么多,会用就完事了 学习自这篇文章 -1.为什么我不想学证明这个定理 ...

  8. Plan & Future

    以下是OI省选前的数据结构与算法整理,可能还不是很全面.但是已经是全网相对比较全面的了.所有标记为“基础”“进阶”“中级”“提高”的知识为近些年来NOIp考察的内容,需重点掌握. 所有“高级”部分为N ...

  9. Re0:DP学习之路 母牛的故事 HDU - 2018

    解法 一定要注意斐波那契数列的原始意义,斐波那契数列也叫作兔子数列是兔子繁衍的一种表示方法.同样适用于别的情况的动物繁衍问题 原始的是3个月一胎现在四个月那么方程就是 f(n)=n n<=4 f ...

  10. linux cmp-比较两个文件是否有差异

    推荐:更多Linux 文件查找和比较 命令关注:linux命令大全 cmp命令用来比较两个文件是否有差异.当相互比较的两个文件完全一样时,则该指令不会显示任何信息.若发现有差异,预设会标示出第一个不通 ...