第六章 P2P原理与实践

A . Z小娜 2019-12-01 03:46:57
1.P2P概述 1.1概念 P2P即Peer-to-Peer的缩写,含义为“点对点”或者“端对端”,而学术界常称它为“对等计算”。P2P是一种以非集中化方式使用分布式资源来完成一些关键任务的系统和应用。P2P技术打破了传统的C/S模式。在P2P网络中,所有结点的地位都是对等的,每个结点既充 当服务器,又充当客户端,这样缓解了中心服务器的压力,使得资源或任务处理更加分散化。 1.2 技术特点 非中心化,可扩展性,健壮性,高性价比,隐私保护,负载均衡 2.P2P网络的分类 (1)中心化拓扑结构 中心化拓扑结构指的是网络中资源和服务的索引都存储在中心服务器目录中,而资源和服务本身则存储在网络中的各结点中,若一个客户需要访问某资源,则需要先直接 或间接地访问中心服务器,中心服务器通过索引检索存有该资源的具体结点的信息,然后请求者与这些存有所需资源的结点连接,最后实现对资源的访问。 (2)全分布式非结构化拓扑结构 采用全分布式结构化拓扑结构的P2P网络是一种重叠网络,重叠网络是在现有的网络 体系架构上新加一层虚拟网络,并将虚拟网络中的每个结点与实际网络中的一些结 点相连,从而实现与实际网络中个结点的联通。 (3)全分布式结构化拓扑结构 全分布式结构拓扑采用分布式哈希表(DHT)来组织网络中的各结点,因此这种拓扑结构 的网络也称为DHT网络。在DHT网络中,由广域范围大量结点共同维护庞大的哈希表,散 列表被分割成不连续的块,每个结点被分配一个属于自己的哈希块,并成为这个哈希块的 管理者。网络中每个结点有一个唯一标识自己的ID,且通过哈希函数,为网络中资源分配 唯一的ID,然后将资源存储在资源ID与结点ID相等或相近的结点中。当需要查找资源时,可以采用类似资源散列的方法定位到存储资源的结点上。 (4)半分布式拓扑结构 半分布式拓扑结构吸取了中心化拓扑结构和全分布式非结构化拓扑结构的优点,选择性能较高的结点作为超级结点,在各个超级结点上存储了系统中其他部分结点的信息,检索算法仅在超级结点间转发,超级结点再将查询请求转发给适当的叶子结点。 P2P(Peer to Peer)对等网络 P2P技术属于覆盖层网络(Overlay Network)的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式。在C/S模式中,数据的分发采用专门的服务器,多个客户端都从此服务器获取数据。 优点是:数据的一致性容易控制,系统也容易管理。 缺点是:因为服务器的个数只有一个(即便有多个也非常有限),系统容易出现单一失效点;单一服务器面对众多的客户端,由于CPU能力、内存大小、网络带宽的限制,可同时服务的客户端非常有限,可扩展性差。 P2P技术正是为了解决这些问题而提出来的一种对等网络结构。在P2P网络中,每个节点既可以从其他节点得到服务,也可以向其他节点提供服务。这样,庞大的终端资源被利用起来,一举解决了C/S模式中的两个弊端。 P2P应用软件主要包括文件分发软件、语音服务软件、流媒体软件。目前P2P应用种类多、形式多样,没有统一的网络协议标准,其体系结构和组织形式也在不断发展。 P2P技术应用 (1)分布式科学计算 P2P技术可以使得众多终端的CPU资源联合起来,服务于一个共同的计算。这种计算一般是计算量巨大、数据极多、耗时很长的科学计算。在每次计算过程中,任务(包括逻辑与数据等)被划分成多个片,被分配到参与科学计算的P2P节点机器上。在不影响原有计算机使用的前提下,人们利用分散的CPU资源完成计算任务,并将结果返回给一个或多个服务器,将众多结果进行整合,以得到最终结果。 (2)文件共享 BitTorrent是一种无结构的网络协议。除了BitTorrent之外,还有不少著名的无结构化的P2P文件共享协议,典型的有Gnutella[8]和KaZaA[6]。 (3)流媒体直播 (4)流媒体点播 (5)IP层语音通信 Skype采取类似KaZaA的拓扑结构,在网络中选取一些超级节点。在通信双方直连效果不好时,一些合适的超级节点则担当起其中转节点的角色,为通信双方创建中转连接,并转发相应的语音通信包。
...全文
53 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
《Android开发精要》如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是最重要的方法之一!然而,Android系统太过于庞大,源代码实现复杂,学习的技术门槛和时间成本都很高。有没有一种方法既能帮助开发者深入理解Android应用开发,又能不被底层大量的实现细节所羁绊,迅速掌握编写高质量Android应用所需的知识?《Android开发精要》针对这个问题给出了完美的答案!它从Android繁杂的源代码中抽取出了Android开发的“精华”和“要点”,剥离了大量琐碎的底层实现细节,进行了高度概括和总结,不仅能帮助开发者迅速从宏观上理解整个Android系统的设计理念,而且能帮助开发者迅速从微观上掌握核心知识点的原理,从而编写出高质量的Android应用。 《Android开发精要》共13章,在逻辑上分为4个部分。第一部分(1-2章):第1章系统介绍了Android的系统架构、核心模块和设计思想,旨在让读者真正理解它的设计理念;第2章讲解了Android源代码的获取、编译、阅读和编辑的方法。第二部分(3-6章):第3章深入阐述了Android组件机制的设计理念和重要特征,并详细介绍了4大组件的方法和原理;第4章讲解了Intent对象和Android的意图机制,阐明了Android是如何将来自不同应用、不同进程的组件整合在一起的;第5章解析了Android中各个组件的生命周期,包括组件的进程模型和线程模型;第6章从开发的角度详细阐述了组件间数据传递的解决方案,以及它们的优缺点和适用场景。第三部分(7-8章):第7章深入讲解了Android的控件框架,结合实际项目对重要控件的实现和使用逐一进行了分析,还包含Android 4.0界面开发的实践“精华”;第8章分析了Android的资源体系,剖析了Android底层对资源的处理。第4部分(9-13章):第9章讲解了Android的数据存储结构,以及不同数据存储模式的使用要点;第10章分析了Android的各种网络连接方式,涵盖NFC和基于Wifi的P2P连接等内容;第11章讲解了Android的定位服务、地址解析服务、地图服务的框架实现;第12章仔细分析了Android各种多媒体功能的实现机制;第13章对Android中比较有特色的一些模块的实现细节进行了分析。
第1章 绪论 1 1.1 云计算的概念 1 1.2 云计算发展现状 3 1.3 云计算实现机制 5 1.4 网格计算与云计算 6 1.5 云计算的发展环境 9 1.5.1 云计算与3G 9 1.5.2 云计算与物联网 9 1.5.3 云计算与移动互联网 10 1.5.4 云计算与三网融合 11 1.6 云计算压倒性的成本优势 12 习题 15 参考文献 15 第2章 Google云计算原理与应用 17 2.1 Google文件系统GFS 17 2.1.1 系统架构 18 2.1.2 容错机制 20 2.1.3 系统管理技术 20 2.2 分布式数据处理MapReduce 21 2.2.1 产生背景 21 2.2.2 编程模型 22 2.2.3 实现机制 22 2.2.4 案例分析 24 2.3 分布式锁服务Chubby 25 2.3.1 Paxos算法 26 2.3.2 Chubby系统设计 27 2.3.3 Chubby中的Paxos 29 2.3.4 Chubby文件系统 31 2.3.5 通信协议 32 2.3.6 正确性与性能 34 2.4 分布式结构化数据表Bigtable 35 2.4.1 设计动机与目标 35 2.4.2 数据模型 36 2.4.3 系统架构 37 2.4.4 主服务器 38 2.4.5 子表服务器 39 2.4.6 性能优化 42 2.5 分布式存储系统Megastore 43 2.5.1 设计目标及方案选择 44 2.5.2 Megastore数据模型 44 2.5.3 Megastore中的事务及并发控制 46 2.5.4 Megastore基本架构 47 2.5.5 核心技术——复制 49 2.5.6 产品性能及控制措施 52 2.6 大规模分布式系统的监控基础架构Dapper 54 2.6.1 基本设计目标 54 2.6.2 Dapper监控系统简介 54 2.6.3 关键性技术 57 2.6.4 常用Dapper工具 58 2.6.5 Dapper使用经验 60 2.7 Google应用程序引擎 62 2.7.1 Google App Engine简介 62 2.7.2 应用程序环境 63 2.7.3 Google App Engine服务 65 2.7.4 Google App Engine编程实践 72 习题 86 参考文献 86 第3章 Amazon云计算AWS 88 3.1 Amazon平台基础存储架构:Dynamo 88 3.1.1 Dynamo在Amazon服务平台的地位 88 3.1.2 Dynamo架构的主要技术 89 3.2 弹性计算云EC2 97 3.2.1 EC2的主要特性 97 3.2.2 EC2基本架构及主要概念 97 3.2.3 EC2的关键技术 99 3.3.4 EC2安全及容错机制 101 3.3 简单存储服务S3 102 3.3.1 基本概念和操作 102 3.3.2 数据一致性模型 104 3.3.3 S3安全措施 105 3.4 简单队列服务SQS 107 3.4.1 SQS基本模型 107 3.4.2 两个重要概念 107 3.4.3 消息 108 3.4.4 身份认证 109 3.5 简单数据库服务Simple DB 109 3.5.1 重要概念 110 3.5.2 存在的问题及解决办法 112 3.5.3 Simple DB和其他AWS的结合使用 112 3.6 关系数据库服务RDS 113 3.6.1 SQL和NoSQL数据库的对比 113 3.6.2 RDS数据库原理 114 3.6.3 RDS的使用 115 3.7 内容推送服务CloudFront 115 3.7.1 内容推送网络CDN 115 3.7.2 云内容推送CloudFront 117 3.8 其他Amazon云计算服务 119 3.8.1 快速应用部署Elastic Beanstalk和服务模板CloudFormation 119 3.8.2 云中的DNS服务 Router 53 119 3.8.3 虚拟私有云VPC 120 3.8.4 简单通知服务SNS和简单邮件服务SES 120 3.8.5 弹性MapReduce服务 120 3.8.6 电子商务服务DevPay、FPS和Simple Pay 122 3.8.7 Amazon执行网络服务 126 3.8.8 土耳其机器人 127 3.8.9 Alexa Web服务 128 3.9 AWS应用实例 129 3.9.1 在线照片存储共享网站SmugMug 129 3.9.2 在线视频制作网站Animoto 130 3.10 小结 131 习题 131 参考文献 131 第4章 微软云计算Windows Azure 135 4.1 微软云计算平台 135 4.2 微软云操作系统Windows Azure 136 4.2.1 Windows Azure概述 136 4.2.2 Windows Azure计算服务 137 4.2.3 Windows Azure存储服务 138 4.2.4 Windows Azure Connect 152 4.2.5 Windows Azure CDN 153 4.2.6 Fabric控制器 153 4.2.7 Windows Azure应用场景 155 4.3 微软云关系数据库SQL Azure 157 4.3.1 SQL Azure概述 157 4.3.2 SQL Azure关键技术 158 4.3.3 SQL Azure应用场景 160 4.3.4 SQL Azure和SQL Server对比 162 4.4 Windows Azure AppFabric 163 4.4.1 AppFabric概述 163 4.4.2 AppFabric关键技术 164 4.5 Windows Azure Marketplace 167 4.6 微软云计算编程实践 168 4.6.1 利用Visual Studio2010开发简单的云应用程序 168 4.6.2 向Windows Azure平台发布应用程序 170 习题 173 参考文献 173 第5章 VMware云计算 174 5.1 VMware云产品简介 174 5.1.1 VMware云战略三层架构 174 5.1.2 VMware vSphere架构 175 5.1.3 云操作系统vSphere 176 5.1.4 底层架构服务vCloud Service Director 177 5.1.5 虚拟桌面产品VMware View 178 5.2 云管理平台 vCenter 179 5.2.1 虚拟机迁移工具 179 5.2.2 虚拟机数据备份恢复工具 181 5.2.3 虚拟机安全工具 181 5.2.4 可靠性组件FT和HA 182 5.3 云架构服务提供平台vCloud Service Director 182 5.3.1 创建虚拟数据中心和组织 183 5.3.2 网络的设计 184 5.3.3 目录管理 184 5.3.4 计费功能 184 5.4 VMware的网络和存储虚拟化 184 5.4.1 网络虚拟化 184 5.4.2 存储虚拟化 186 习题 188 参考文献 188 第6章 Hadoop:Google云计算的开源实现 189 6.1 Hadoop简介 189 6.2 Hadoop分布式文件系统HDFS 190 6.2.1 设计前提与目标 190 6.2.2 体系结构 191 6.2.3 保障可靠性的措施 192 6.2.4 提升性能的措施 194 6.2.5 访问接口 195 6.3 分布式数据处理MapReduce 196 6.3.1 逻辑模型 196 6.3.2 实现机制 196 6.4 分布式结构化数据表HBase 197 6.4.1 逻辑模型 198 6.4.2 物理模型 198 6.4.3 子表服务器 199 6.4.4 主服务器 199 6.4.5 元数据表 200 6.5 Hadoop安装 200 6.5.1 在Linux系统中安装Hadoop 200 6.5.2 在Windows系统中安装Hadoop 208 6.6 HDFS使用 215 6.6.1 HDFS 常用命令 215 6.6.2 HDFS 基准测试 219 6.7 HBase安装使用 219 6.7.1 HBase的安装配置 219 6.7.2 HBase的执行 220 6.7.3 Hbase编程实例 221 6.8 MapReduce编程 223 6.8.1 矩阵相乘算法设计 223 6.8.2 编程实现 224 习题 226 参考文献 226 第7章 Eucalyptus:Amazon云计算的开源实现 228 7.1 Eucalyptus简介 228 7.2 Eucalyptus技术实现 229 7.2.1 体系结构 229 7.2.2 主要构件 230 7.2.3 访问接口 230 7.2.4 服务等级协议 231 7.2.5 虚拟组网 232 7.3 Eucalyptus安装与使用 233 7.3.1 在Linux系统中安装Eucalyptus 233 7.3.2 Eucalyptus配置和管理 236 7.3.3 Eucalyptus常用命令的示例和说明 238 习题 240 参考文献 240 第8章 其他开源云计算系统 241 8.1 简介 241 8.1.1 Cassandra 241 8.1.2 Hive 242 8.1.3 VoltDB 242 8.1.4 Enomaly ECP 243 8.1.5 Nimbus 244 8.1.6 Sector and Sphere 245 8.1.7 abiquo 247 8.1.8 MongoDB 247 8.2 Cassandra 249 8.2.1 体系结构 249 8.2.2 数据模型 250 8.2.3 存储机制 251 8.2.4 读/写删过程 252 8.3 Hive 254 8.3.1 整体构架 254 8.3.2 数据模型 255 8.3.3 HQL语言 257 8.3.4 环境搭建 259 8.4 VoltDB 260 8.4.1 整体架构 260 8.4.2 自动数据分片技术 261 习题 264 参考文献 264 第9章 云计算仿真器CloudSim 265 9.1 CloudSim简介 265 9.2 CloudSim体系结构 265 9.2.1 CloudSim核心模拟引擎 266 9.2.2 CloudSim层 268 9.2.3 用户代码层 271 9.3 CloudSim技术实现 271 9.4 CloudSim的使用方法 274 9.4.1 环境配置 274 9.4.2 运行样例程序 274 9.5 CloudSim的扩展 277 9.5.1 调度策略的扩展 277 9.5.2 仿真核心代码 280 9.5.3 平台重编译 286 习题 287 参考文献 287 第10章 云计算研究热点 288 10.1 云计算体系结构研究 288 10.1.1 Youseff划分方法 288 10.1.2 Lenk划分方法 290 10.2 云计算关键技术研究 292 10.2.1 虚拟化技术 292 10.2.2 数据存储技术 293 10.2.3 资源管理技术 295 10.2.4 能耗管理技术 298 10.2.5 云监测技术 301 10.3 编程模型研究 303 10.3.1 All-Pairs编程模型 303 10.3.2 GridBatch编程模型 304 10.3.3 其他编程模型 305 10.4 支撑平台研究 306 10.4.1 Cumulus:数据中心科学云 306 10.4.2 CARMEN:e-Science云计算 307 10.4.3 RESERVOIR:云服务融合平台 308 10.4.4 TPlatform:Hadoop的变种 309 10.4.5 P2P环境的MapReduce 309 10.4.6 Yahoo云计算平台 311 10.4.7 微软的Dryad框架 311 10.4.8 Neptune框架 312 10.5 应用研究 313 10.5.1 语义分析应用 313 10.5.2 生物学应用 314 10.5.3 数据库应用 315 10.5.4 地理信息应用 316 10.5.5 商业应用 317 10.5.6 医学应用 318 10.5.7 社会智能应用 319 10.6 云安全研究 321 10.6.1 Anti-Spam Grid:反垃圾邮件网格 321 10.6.2 CloudAV:终端恶意软件检测 323 10.6.3 AMSDS:恶意软件签名自动检测 324 10.6.4 CloudSEC:协作安全服务体系结构 325 习题 327 参考文献 327 第11章 总结与展望 332 11.1 主流商业云计算解决方案比较 332 11.1.1 应用场景 332 11.1.2 使用流程 334 11.1.3 体系结构 335 11.1.4 实现技术 335 11.1.5 核心业务 336 11.2 主流开源云计算系统比较 338 11.2.1 开发目的 338 11.2.2 体系结构 339 11.2.3 实现技术 340 11.2.4 核心服务 340 11.3 国内代表性云计算平台比较 341 11.3.1 中国移动“大云” 341 11.3.2 阿里巴巴“阿里云” 343 11.3.3 “大云”与“阿里云”的比较 343 11.4 云计算的历史坐标与发展方向 344 11.4.1 互联网发展的阶段划分 344 11.4.2 云格(Gloud)——云计算的未来 347 习题 349 参考文献 349
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Android高级编程》的源代码 对应的书籍资料见: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社:清华大学出版社 ISBN:9787302228448 上架时间:2010-7-1 出版日期:2010 年6月 开本:16开 页码:398 版次:1-1 内容简介   android提供一个开放的开发环境,为针对移动设备编写创新应用程序带来了激动人心的新机遇。作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并通过简明扼要的示例引导您使用高级功能。    《android高级编程》首先简要介绍android软件栈,接着陈述为手机创建稳定可靠、赏心悦目的应用程序的基本原理。通过学习,您可以打下牢固的理论根基,了解使用当前android 1.0 sdk编写定制移动程序所需的知识,还能灵活快捷地运用未来的增强功能构建最前沿的解决方案。    主要内容    ◆android移动开发的最佳实践    ◆简要介绍活动、intent、清单和资源    ◆如何使用布局和定制view创建用户界面    ◆存储和共享应用程序数据的技术    ◆如何创建基于地图的应用程序,如何使用gps和地理编码位置等基于位置的服务    ◆如何创建和使用后台服务及notification    ◆使用加速计、指南针和摄像头硬件    ◆与电话和网络硬件相关的所有内容,如电话api、sms和网络管理等    ◆高级开发主题,包括安全、ipc以及一些高级图形和用户界面技术    读者对象    本书面向希望在android手机平台上创建应用程序的所有人员。不管是经验丰富的移动开发人员,还是初出茅庐的新手,都能从本书提供的宝贵信息中获益。 作译者   Reto Meier出生于澳大利西南的珀斯市,现居伦敦。 Reto是一位经验丰富的软件开发人员,拥有逾10年的GUI程序架构、设计和开发经验。他在涉足IT行业前曾从事过海洋石油和天然气开发以及金融工作。 Reto始终不渝地追求掌握新技术,从2007年Android发布之初Reto就迷恋上了此项技术。他利用业余时间研究包括WPF在内的多种开发平台以及Google的各种开发工具。 详情请访问Reto的个人网站RadioactiveYak,网址是http://blog.radioactiveyak.com。 目录 封面 -14 封底 -13 扉页 -12 版权 -11 作者简介 -10 前言 -9 目录 -4 第1章 Android简介 1 1.1 一些背景信息 2 1.1.1 不远的过去 2 1.1.2 未来的前景 2 1.2 对Android的误解 3 1.3 开放的移动开发平台 3 1.4 自带的Android应用程序 4 1.5 Android SDK功能 5 1.5.1 对包括摄像头、GPS和加速计在内的硬件的访问 5 1.5.2 自带的Google地图、地理编码和基于位置的服务 6 1.5.3 后台服务 6 1.5.4 SQLite 数据存储和检索数据库 6 1.5.5 共享数据和应用程序间通信 7 1.5.6 使用Google Talk的P2P服务 7 1.5.7 扩展的数据支持和2D/3D图形 7 1.5.8 优化的内存和进程管理 8 1.6 开放手机联盟简介 8 1.7 运行Android的环境 8 1.8 从事Android开发的原因 9 1.8.1 推动Android普及的因素 9 1.8.2 Android的独到之处 10 1.8.3 改变移动开发格局 10 1.9 开发框架简介 11 1.9.1 开发包中的资源 11 1.9.2 理解Android软件栈 12 1.9.3 Dalvik虚拟机 13 1.9.4 Android应用程序架构 14 1.9.5 Android库 14 1.9.6 高级Android库 15 1.10 小结 16 第2章 开始入手 17 2.1 Android开发 18 2.1.1

778

社区成员

发帖
与我相关
我的任务
社区描述
云计算 网络相关讨论
社区管理员
  • 网络
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧