一致性哈希服务器的数据维护

本文是实例说明一致性哈希服务器的数据维护用途。理论说明参考:http://blog.csdn.net/chenjiayi_yun/article/details/41624603

如下图所示,本例中一致性哈希服务器群组是视频服务器群组,包括三类服务器:VChannelMediaServer、VChannelServer、VChannelLoadServer、VChannelSuperServer。

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

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

VChannelLoadServer是频道负载服务器,保存所有的频道列表,维护VChannelMediaServer和VChannelServer服务器内的服务器一致性哈希表,维持VChannelServer中的频道对象加载和移除。

VChannelLoadServer是单服务器,VChannelServer和VChannelMediaServer是动态启动的多服务器。

VChannelSuperServer直播间上级服务器,为所有直播间相关的服务器提供向上的连接其他服务器的接口。

数据维护包括:动态启动vchannelserver服务器需要动态加载和移除服务器数据,动态关闭vchannelserver服务器需要恢复该服务器的频道到其他服务器,新数据需要加载和备份。

(1)加载数据

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

(2)宕机恢复数据

一个vchannelserver宕机时,需要重新加载频道数据到其他服务器;VChannelLoadServer会定时检查vchannelserver连接中的宕机服务器的连接,根据服务器哈希表为原来宕机服务器的每个频道都分配新的服务器(会加入等待分配列表,在有合适服务器时再分配)

(3)新数据

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-13 16:29:32

一致性哈希服务器的数据维护的相关文章

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

一致性哈希算法 摘自:http://blog.codinglabs.org/articles/consistent-hashing.html 算法简述 一致性哈希算法(Consistent Hashing)最早在论文<Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web>中被提出.简单来说,一致性哈希将整个哈希值空间组织成一

缓存与一致性哈希

1.系统演化 Step 1.应用程序.数据库.文件等所有资源都在一台服务器上 图1: 网站最开始没有太多人访问,只需要一台服务器绰绰有余,如图1,这时应用程序.数据库.文件等所有的资源都在一台服务器上.通常是Linux+Apache+MySQL+PHP架构. Step 2.应用服务和数据服务分离 图2: 随着网站业务的发展,一台服务器逐渐不能满足需求:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足.这是就需要将应用和数据分离.应用和数据分离后整个网站使用三台服务器:应用服务器

一致性哈希算法原理

一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用. 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性has

一致性哈希算法及其在分布式系统中的应用(转)

原文:http://blog.codinglabs.org/articles/consistent-hashing.html 本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用.首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题:接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题. 分布式缓存问题 假设我们有一个网站,最近发现随着流量增加,服务器压力越来越

一致性哈希

http://blog.csdn.net/sparkliang/article/details/5279393 比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache : hash(object)%N 一切都运行正常,再考虑如下的两种情况: 1 一个 cache 服务器 m down 掉了(在实际应用中必须要考虑

一致性哈希算法及其在分布式系统中的应用 作者 张洋

转 http://blog.codinglabs.org/articles/consistent-hashing.html 摘要 本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用.首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题:接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题. 分布式缓存问题 假设我们有一个网站,最近发现随着流量增加,服务器压力越

一致性哈希速记

普通哈希: var x = hash(dataKey) % N 一致性哈希: 将数据的key的hashcode与存放数据的节点(如缓存节点)的IP(或服务器名)的hashcode都分布到同一个环形数值空间,比如0~2^32-1.然后,把数据的hashcode沿着顺时针方向找第一个存放数据的节点的hashcode,找到的那个就是要存放的节点. var dataValue = hash(dataKey) % N var nodeValue = hash(nodeIP) % N 将dataValue沿

一致性哈希算法及其在分布式系统中的应用

摘要 本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用.首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题:接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题. 分布式缓存问题 假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库的方式不太给力了,于是我们想引入Memcached作为缓存机制.现在我们一共有三台机器可以作为Me

转: 一致性哈希算法及其在分布式系统中的应用

转自: http://blog.codinglabs.org/articles/consistent-hashing.html 一致性哈希算法及其在分布式系统中的应用 作者 张洋 | 发布于 2011-10-18 分布式 一致性哈希 摘要 本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用.首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题:接下来会对这个算法进行相对详细的描述,并讨论一