《云数据管理:挑战与机遇》2.2 P2P系统

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介:
本节书摘来自华章出版社《云数据管理》一书中的第2章,第2节,作者迪卫艾肯特·阿格拉沃尔,更多章节内容可以访问云栖社区“华章计算机”公众号查看

P2P系统

作为传统的客户端–服务器模式的另外一种可替代方式,P2P(peer-to-peer)架构提供了一种可行的方案,P2P系统中的很多技术都已经在数据中心中得到了成功应用。P2P系统的主要目标是在数百万并发用户的情况下,确保数十亿对象的可用性,如音乐文件。为了实现上述目标,必须在物理网络之上构建一层虚拟的或逻辑的覆盖(overlay)网络。抽象地讲,覆盖构建了不同站点之间的相互通信方式以及数据存储方式。最简单的形式是一个对象可以看成是一个键–值对。覆盖提供了对象检索方法,并支持两种基本操作:给定一个键和值,可以把键–值元组插入(insert)到覆盖中,同时,给定一个键值,可以查询(lookup)并返回对应的值。覆盖一般可以表示成图的形式,以站点为节点,用边来连接不同的站点,可以分为结构化覆盖和非结构化覆盖。

非结构化覆盖没有在节点间的逻辑图上增加任何特定的结构。集中式方案是这种P2P设计的最简单实现,最早由Napster[Carlsson and Gustavsson, 2001]加以应用,Napster方案用一个中央服务器来存储所有的键值和用来标识这些键值所在网络节点的数据库。每次键–值元组的查找都需要访问中央服务器。Napster于1999年发布,最高同时150万用户在线,2001年7月由于法律问题关闭。

除此之外,Gnutella(http://en.wikipedia.org/wiki/Gnutella)使用了分布式设计,每个节点都有若干个邻居,并且在本地数据库中存储若干个键。当需要查找键k时,某个站点首先检查自己的本地数据库,判断k是否在本地。如果在本地,则直接返回相应的值,否则,该站点递归地询问邻居站点。通常情况下,需要使用一个限制阈值来限定消息的无限制传播。

另外一方面,结构化覆盖在不同的节点上强加了具有良好定义的数据结构。这种数据结构一般称作分布式哈希表(Distributed Hash Table, DHT),DHT可以将对象映射到不同的站点,并且,给定相应的键,DHT可以快速检索相应的数据对象。特别是,在结构化覆盖中,边是按照特定的规则选择的,数据被存储在预先确定的站点上。通常情况下,每一个站点负责维护一个表,该表存储了用于查找操作的下一跳(next-hop)。我们将用一种非常流行的称为Chord[Stoica et al., 2001]的P2P系统来对结构化覆盖进行举例说明。在Chord中,每一个节点都使用一致性哈希函数(如SHA-1)进行哈希,哈希到一个m位的标识符空间中(2m个ID),其中,m一般取160。所有的站点依据各自的ID号被组织成一个逻辑环。键也被哈希到相同的标识符空间中,键(及其相应的值)存储在后继节点中,即下一个具有较大ID的节点。

一致性哈希可以确保:对任何n个节点和k个键的集合,一个节点最多负责个(1+∈)k/n键。另外,当一个新的节点加入或离开时,O(k/n)个键需要移动。为了支持高效和可扩展的查询,系统中的每一个节点都需要维护一个查询表(finger table)。节点n的查询表的第i个元素是第一个后继节点或者等于n+2i。图2-8展示了针对不同的网络规模,一个给定节点的路由表中的指针。换句话说,第i个指针沿着环指向1/2(m–i)方向。当接收到一个针对id项的查询时,节点首先检查是否存储在本地。如果不在本地,则将该查询往前发送给其查询表中最大的节点。假设Chord环中的节点呈正态分布,每一步中搜索空间的节点数量减半。因此,查询跳数的期望值是O(logn),其中,n是Chord环中节点的数量。

 

相关文章
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
凭安征信引入阿里云PolarDB云数据库支撑企业征信核心业务系统
凭安征信是国家中小企业公共服务示范平台,主营信用管理服务包括信用管家、水滴信用及可信认证。通过采用阿里云PolarDB云原生数据库替代RDS数据库帮助客户全面实现业务系统性能提升1-2倍,通过PolarDB企业级能力的加持下,运维更加简便,操作更加简单,数据安全能力更强。
|
3月前
|
分布式计算 DataWorks 关系型数据库
在云数据仓库AnalyticDB MySQL版中,LIMIT的大小是由系统参数max_limit控制的
【1月更文挑战第7天】【1月更文挑战第31篇】在云数据仓库AnalyticDB MySQL版中,LIMIT的大小是由系统参数max_limit控制的
30 1
|
3月前
|
前端开发 Java 数据管理
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
|
3月前
|
数据管理 程序员 人工智能
后台数据管理系统 - 项目架构设计【黑马程序员】
后台数据管理系统 - 项目架构设计【黑马程序员】
137 0
后台数据管理系统 - 项目架构设计【黑马程序员】
|
存储 JSON 数据管理
元数据管理—动态表单设计器在crudapi系统中完整实现
在前面文章中,我们通过一系列案例介绍了表单设计的一些基本功能,表单设计起到非常重要作用,也是crudapi核心,所以本文会详细介绍表单设计中一些其它功能。
273 0
元数据管理—动态表单设计器在crudapi系统中完整实现
|
Cloud Native 架构师 关系型数据库
友邦人寿引入阿里云PolarDB云数据库 支撑保险业务系统加速上云
友邦人寿日前加速重要业务系统上云进程,包括保险出单、保单契约等在内的数十套业务系统,开始采用阿里云PolarDB云原生数据库,通过全面替代传统商业数据库,进一步提升业务系统性能,为最终用户提供最稳定、可靠的服务。
872 0
友邦人寿引入阿里云PolarDB云数据库  支撑保险业务系统加速上云