P2P原理
简单介绍
前面文章在分布式计算泛型中介绍过P2P泛型。他是一种是一种无中心server的对等网络泛型。
P2P即Peer-to-Peer的缩写。翻译为点对点或者端对端。就是我们常说的对等计算。
P2P是一种以非集中化方式使用分布式资源来完毕一些关键任务的系统和应用。
“非集中化”指的是P2P系统中没有传统的server的概念,将原先的client视为server和client的综合体。
P2P打破了传统的C/S模式,在P2P网络中全部节点的地位都是相等的,每一个节点既充当server,又充当client,这样缓解了中心server的压力。是的资源和任务处理更加分散。
P2P的技术特点
P2P的技术优势在于他能够提高网络的工作效率。充分利用网络宽带,发挥每一个网络节点的潜力,并具有较高的可扩展性和良好的容错性。P2P的技术特点例如以下:
1.非中心化
P2P网络中资源和server是分散在全部节点上的。信息的传输和服务的实现直接在节点间就能够完毕,不须要中心server。
2.可扩展性
在传统的C/S模式下,client数量的增多server接受的压力会越来越大,文件的下载速度就会变慢。相比之下P2P模式。client的增多网络中的节点就增多。网络中的资源就增多,下载速度反而会变快。理论上P2P网络的可扩展性是无限的。
3.健壮性
因为P2P网络中资源和网络是分散的,个别的网络节点遭到攻击或者破坏对于整个网络影响不大,因此具有非常强的抗攻击性和容错性。
4.高性价比
传统的C/S模式下server价格昂贵。维护资本也相对较高,採用P2P技术能够使网络中闲置的资源得以利用。
各个节点的分工合作完毕了server的功能,降低了企业购买server和网络设备的费用。
5.隐私保护
资源分散在各个节点上,无需集中,这样用户隐私信息泄露的可能性也大大减小。
大大提高了匿名通信的灵活性和可靠性,能够更好地保护隐私。
6.负载均衡
传统C/S系统中因为受到server性能的闲置,连接数量也会受限,超过连接限制数量后就有可能发生宕机的危急。
在P2P系统中把server的任务分发到各节点,降低了对于单台机器的压力,有利于负载均衡。
P2P网络的分类
通常我们通过拓扑结构来对一个网络进行分类,拓扑结构表明了网络中各计算单元之间的物理或逻辑关系。
1.中心化拓扑结构
中心化拓扑结构指的是网络中资源和服务的索引都存储在中心server文件夹中。而资源和服务本身则存储在网络中的各个节点中,一个客户须要訪问某资源,则须要先訪问中心server,获得该资源的索引,然后依据索引找到详细的资源。
2.全分布式非结构化拓扑结构
採用全分布式非结构化拓扑结构的P2P网络是一种重叠网络。重叠网络是在现有网络体系架构上新添加一层虚拟网络,并将虚拟网络中的每一个节点与实际网络中的一些节点相连接。从而实现与世纪网络中节点的联通。
3.全分布式结构化拓扑结构
全分布式结构化拓扑结构採用分布式哈希表来组织网络中的各节点。
在这样的拓扑结构中有广域范围大量节点共同维护庞大的哈希表,散列表被切割成不连续的块,每一个节点被分配一个属于自己的哈希块,并成为这个哈希块的管理者。网络中每一个节点有一个唯一标识自己的ID,且通过哈希函数,为网络中资源分配唯一的ID,然后将资源存储在资源ID与节点相等或相近的节点中。当须要查找资源时,能够採用相似资源散列的方法定位到存储资源的节点上。
4.半分步式扩朴结构
半分步式拓扑结构吸取了中心化拓扑结构和全分布式非拓扑结构的长处,选择性能较高的节点作为超级节点,在各个超级节点上存储了系统中其它部分节点的信息,检索算法仅在超级节点间转发,超级节点再将查询请求转发给适当的叶子节点。
P2P技术是眼下大数据、云计算领域中经常使用技术,P2P技术正在改变这IT时间的面貌。能够说是互联网技术的重新革命。
最新文章
- 【Oracle】去除表中重复的数据
- 传统认知PK网络认知 刚子扯谈烤串认知
- double 类型转化为Integer类型 ---DecimalFormat
- .NET反射(Reflection)机制
- BZOJ 1552/1506 [Cerc2007]robotic sort
- activity中实现Spinner绑定
- Adb工具常用操作(一)
- .NET cookie 使用方法
- POJ 3100 &;amp; ZOJ 2818 &;amp; HDU 2740 Root of the Problem(数学)
- 轮播图片 高效图片轮播,两个imageView实现
- python-操作文件和目录
- MySQL8常见客户端和启动相关参数
- JS的分号可以省掉吗?
- Spring security实现国际化问题
- PHP 扩展开发之Zephir
- HANA Database SR Basis Setting
- Ubuntu中清理Network下Connect to Server的入口
- window.location.href 与 window.loaction.replace区别
- linux 获取随机数的办法
- c# 设计模式 之:抽象工厂
热门文章
- python开发_python代码风格(coding style)
- SCOJ 4427: Miss Zhao's Graph dp
- Unity Pivot/Center与Local/Global总结
- CC1101是一种低成本真正单片的UHF收发器
- eclipse的项目和配置文件 .project .cproject .classpath .metadata
- 分布式服务的事务如何处理?比如dubbo,服务与服务之间的事务怎么处理比较好,现在有没有开源的解决方案?
- java多线程知识点汇总(四)多线程知识点脉络图
- ReflectionToStringBuilder使用
- Last-Modified和If-Modified-Since
- Confman - 针对「Node 应用」的配置文件加载模块