分布式移动社区研究报告.docx
《分布式移动社区研究报告.docx》由会员分享,可在线阅读,更多相关《分布式移动社区研究报告.docx(40页珍藏版)》请在冰豆网上搜索。
分布式移动社区研究报告
1范围
该文档是项目的研究报告,针对分布式移动社区各项技术进行研究。
2概述
当今先进的P2P技术使得用户可以把个人网络设备和他人的网络设备广泛的连接起来。
分布式架构的移动社区让用户可以轻松安全的登录并且分享他人的设备、服务和内容,而不需要用户有专门技术或集中式服务支持。
它允许用户的分布式服务和内容被实时地登录和分享。
2.1分布式架构移动社区与集中式架构移动社区比较
集中式移动社区网络由一个大型的中央系统,其终端是客户机,数据全部存储在中央系统,由数据库管理系统进行管理,所有的处理都由该大型系统完成,终端只是用来输入和输出。
终端自己不作任何处理,所有任务都在主机上进行处理。
而集中式移动社区不利的一面是来自所有终端的计算都由主机完成,这类网络处理速度可能有些慢。
另外,如果用户有各种不同的需要,在集中式计算机网络上满足这些需要可能是十分困难的,因为每个用户的应用程序和资源都必须单独设置,而让这些应用程序和资源都在同一台集中式计算机上操作,使得系统效率不高。
还有,因为所有用户都必须连接到一台中央计算机,集中连接可能成为集中式移动社区网络的一个大问题。
由于个人计算机的移动设备性能得到极大的提高及其使用的普及,使处理能力分布到网络上的所有计算机成为可能。
分布式计算是和集中式计算相对立的概念,分布式计算的数据可以分布在很大区域。
分布式移动社区中,数据的存储和处理都是在本地工作站上进行的。
通过网络主要是得到更快、更便捷的数据访问。
因为每台计算机都能够存储和处理数据,所以不要求服务器功能十分强大,其价格也就不必过于昂贵。
这种类型的网络可以适应用户的各种需要,同时允许他们共享网络的数据、资源和服务。
2.2分布式架构移动社区应用场景分析
分布式架构移动社区允许各个节点在一定范围内建立协作组,共享数据和服务,利用彼此的资源完成计算任务。
各个主机可同时扮演服务器和客户的角色。
该体系的信息和服务不再需要聚合到某个集中点,各端负责全局服务的一个子集,用户不需要专门的服务器。
随着网络的普及,这个世界正在网络化。
例如,在今天,一个企业要想取得成功就必须建立网络。
商业网络正在不断扩大,而且已经能够与供应商和客户实现直接交互。
与无线网络的交互也几乎成为家常便饭。
企业和消费者都要求能与网络进行更广泛的交流。
出差在外的人无不希望在到达饭店后就能把自己的计算机插入网络接口,不但能与自己单位的工作环境进行交互工作,而且还能与饭店的本地服务,如打印机或传真机等进行交互工作。
父母可能希望只需使用移动电话或笔记本电脑就能与家里的摄像机相连,通过它来察看家里的情况。
人们无不希望随时随地能够连接和立即使用本地的定制服务。
在不远的将来,我们将看到网络渗透到很多其它环境。
例如,将会出现把电视机和立体声设备等音频/视频设备与家庭办公室的电脑和外设连接起来的网络,并控制安全监视器和温控恒温器等网络设备。
电缆和ASDL等高带宽媒介将为家庭提供全新的服务。
服务供应商不断为驾驶员提供越来越多的服务,网络也必将随之进入汽车领域。
除导航系统外,游览景点和当地餐馆名单等本地服务也将出现在驾驶员的屏幕上。
只要汽车与远程诊断设备相连,它就能自动完成对汽车的维护,并在汽车出现问题时通知驾驶员。
3分布式架构移动社区实例研究
3.1MyNet
下面具体介绍一种分布式服务架构的移动社区平台。
MyNet是诺基亚研究院与MIT合作研发的一个分布式移动社区平台。
该平台使用P2P技术,用户可以通过它将个人的网络设备与其他人的网络设备广泛的连接起来。
允许用户可以简单安全的访问和共享其它人的设备、服务和内容,而不需要专门技术或集中式服务器的支持。
MyNet允许用户布置的分布式服务和内容被实时直接的访问,所以它有很高的实时相应性。
MyNet是基于MIT之前开发的UIA(UnmanagedInternetArchitecture)平台来实现的,UIA平台是一个基本通讯平台,提供强大的永久设备识别能力,让用户能安全的将个人名字与设备连接起来。
遵循UIA的分布式组成员协议(distributedgroupmembershipprotocol),对每一个设备设一个唯一的公/私钥,公钥被处理成终端节点的ID(EID),EID作为设备永久的地址。
UIA满足了MyNet覆盖网络的两个需求:
广泛的连接性和分布式设备群管理。
下图是Mynet的体系结构:
图31Mynet体系结构图
系统通过Out-of-BandIntroductions模块来增加新设备和内容到PDC中。
而在单一或不同机器间交换消息则是依靠MyARPC模块。
MyARPC层是异步遥控进程指令层。
不同的协议可在MyARPC中使用,如XML-RPC,SOAP等。
意识到许多设备不可能永远在线,MyNet也引入了一个队列信息存储器来保证信息的传递。
每个主机都有一个数据结构体,叫PDC-store,这是设计用来保证在不同PDC之间分享数据的控制命令。
现在PDC-store用来存储ResourceDiscoveryRecords(RDR)。
MyNet的发现机制也很有特色。
大部分的发现框架都没有与安全机制结合,MyNet使用了passlet机制令用户可以在社会接触中设置具体资源是否可见,用以控制不同的人访问他的PDC的方式。
RDR是通过TheSecureResourceDiscovery(SRD)模块生成的,而发现过程主要由以下四个步骤构成:
(1)Resourceregistration:
当设备被连入,resourcediscovery模块会生成一个RDR,而server-sidelauncher也自动开始服务器服务。
(2)用户设置发现许可:
用户通过MyNetBook来生成ResourceDiscoveryPassLet(RDPasslet)。
(3)Resourcediscovery/browsing:
通过PDC-storereplication机制,一个PDC里所有的设备收到PDC所有者的RDR。
为了访问另外的一个PDC,SecureResourceDiscoveryclient(SRD-client)发出一个MyARPC请求,而目标PDC的SRD-server则会接收到这个请求。
这个SRD-server就会请求MyNetSec模块发送RDRrecords,来返回RD-Passlet的RDR授权。
(4)Servicelaunching:
当用户通过MyNetBook选择了一个服务RDR后,客户端的服务launcher就会被激活。
MyNet的一个主要特性就是一个综合考虑的安全框架,用Passlet机制提供了一个易用、多级别的许可机制,使得它可以将复杂的系统级安全设置给隐藏掉,并且可以做到很好的访问控制。
而MyNet的这种框架可以被广泛的应用到其它的分布式请求/响应应用中,像webservices,webservers,UPnPdevices,XML-RPC等。
大部分现在很流行的socialnetwork系统依赖于集中式服务技术,像校内、Myspace等。
这些系统使得用户可以很容易的描述清楚社会的链接,与MyNet不一样,他们不用在用户的设备或服务上做衍生,而需要一个集中式的基础设施用来存储用户上传的内容。
有些用户希望自己的内容被所有人看到,而有些用户则希望和人有了一定的社会接触后内容才被看到。
显然,前者适合集中式服务的移动社区,后者则适合分布式服务的移动社区。
3.2Micro-blog
近些年来,以下几项服务或技术对人们生活产生很大影响:
(1)分布式内容分享Distributedcontentsharing(Wikipedia,Blogger);
(2)社交网络(Facebook,MySpace,校内);
(3)感知网络(SensorNetwork);
(4)无线连接(Wirelessconnectivity)。
而如果把以上四项技术融合在手机平台上,将产生重大意义。
而Macro-blog就是基于这个概念,下面将介绍Macro-blog的架构和实现。
内容分享:
(1)用户将被鼓励通过手机发布博客:
视频,音频,图片,文本等。
(2)Micro-Blog手机客户端可以通过WIFI/GPRS/…将带有地理标签博客上传到服务器;
(3)Micro-Blog服务器在GoogleMaps上放置博客;
(4)Internet用户通过地图浏览博客;
图32内容分享
内容查询:
(1)只是浏览内容是不够的,与地理位置结合的查询是一个很好的应用;
(2)Micro-Blog允许具体的地理位置信息查询。
图33内容查询
电池问题:
(1)持续开着GPS的话大约可以支持8个小时;
(2)WiFi,GSM定位的话可以提高电池时间,分别为16小时与40小时,但定位精确性会降低;
折衷电池时间和精确性的方案:
默认使用WiFi,当有大的移动时才切换到GPS。
激励问题:
用户回答查询没有激励。
一些有潜力的解决方案:
(1)查询限制在社交网络中
(2)查询与信誉分结合:
a)每个查询被回答,回答者可得K信誉分;
b)K的值可由系统行为来调节;
c)希望发现某些Micro-Blog有用的用户会回复该主题。
用户的隐私保护:
手机会一直的更新位置,产生了隐私问题,匿名机制也不能完全解决
解决方案:
(1)提供三种博客方式:
Public,Social,Private;
(2)用户自己设置隐私策略;
(3)在Social模式中,只有在社交网络的用户才能看到这些博客。
内容不准确与垃圾信息:
(1)用户可能不希望被一些询问分心;
a)允许用户配置询问容忍等级。
(2)博客内容可能不准确,将这与用户名声挂钩:
a)每个用户博客会被评估—采用reputationindex(名声值);
b)对滥用Micro-Blog的用户惩罚。
原型演示:
图34地图
图35卫星
图36混合地图
总结:
(1)Micro-Blog=Peoplecentricsensors;
(2)Micro-Blog尝试成为一个信息望远镜:
a)分享、查询和浮动内容在虚拟和现实空间之间架起桥梁
b)一些已有的或刚开始的与Micro-Blog相似的产品:
Twitter,Loopt,Socialite,Place-Its,cooltown,MyAura,SenseWeb…
3.3Jini
Jini是由SUN公司R&D的BillJoy所提出的一项技术。
Jini是以Java技术为核心的分布式系统,它通过使用一个简易的“即插即用”模型,能够随时改变硬件或者软件的配置,从而提供了一个支持快速配置的分布式计算环境。
请看下面这两种种情况:
(1)你的浏览器、计算机、电话、CD播放机和微波炉都有一个集成的Java虚拟机,但它们没有相连接;
(2)作为系统管理员,你必须领导一个小组在某个时间内完成250台个人计算机的新版本Windows升级工作,你需要一种比较容易的方法来完成这项工作。
Jini技术可解决这两种可能的问题。
SUN公司将Jini定义为在Java上运行,并创造虚拟机“王国”的联网体系结构。
Jini技术包括了四大方面的功能,这些功能使得它的连接性真正得以简化:
(1)立即上网:
将一个器件插入一个应用了Jini技术的网络中,该器件即刻便可工作。
该器件一方面保留了它原来的所有应用,另一方面它又成为了一位“很好的网络居民”。
(2)独特的提供功能:
所有通过Jini技术连入网络的器件都能对整个网络提供它们的服务。
因此,用户可以根据需求充分享受该器件所提供的服务。
(3)即刻“共同体”:
Jini技术可使用户创建自己个人的由联网器件组成的“共同体”,这些器件可移动使用。
该共同体还能与其他共同体简单、快速地互操作,而无需进行系统管理。
(4)恢复性:
Jini技术是一个完全分布式的系统,它独立于任何中心服务器。
如果一个器件出了故障,将不会波及其他任何器件。
因此,Jini技术环境是具有极其灵活和适用性的环境。
全新的信息利用方式因为采用Jini技术的环境是完全动态的,具有快速相应性。
因此,连在一起工作的器件便对一个基于网络的信息服务的全新领域提供了连续可靠的接入。
例如,用Jini技术连接的器件之间可以自动地互操作,以最低的巡回速率持续寻找利用地点,或者可以“剪裁”和分出几个同时需要的家庭式的“抵押”小应用。
Jini的技术架构:
首先,让我们看一下Jini中涉及的一些概念。
(1)对象:
在Jini网络中,每一个器件和命令都是作为对象来识别的。
其结果就形成了一个提供分布式服务的完全分布式系统。
(2)发现与加入:
Jini最重要的机制就是这种插入,并沿着网络寻找和确定在“共同体”中有什么其他的器件和服务,从而将它们连接起来的能力。
这种查寻服务允许用户在任何给定的时间内浏览和查看网络上提供些什么东西。
(3)自动识别:
连入网络的各个器件都自己识别自己,并将自身纳入这个“共同体”。
这个即刻“共同体”无需任何别的驱动器件。
(4)远程方法调用:
Jini技术由很小的Java技术编码组成,因此,就形成了一种可移动性编码,允许数据和编码在网络中以一种黏着性的方式在对象间移动。
这是创建器件和服务的即时性动态“共同体”的关键。
(5)租用:
提供一种在网络环境中管理、共享和更新资源的方法。
(6)同步处理:
能使各个分布式实体以一种非竞争性方式协同工作,共享网络资源,如存储设备、文件、打印能力和带宽等。
(7)通告:
利用网络环境中的信息特性帮助自愈过程。
(8)分布式安全性:
考虑重要的访问控制目录,对一个服务的访问取决于与该服务相关的服务控制目录。
Jini是一种新的系统架构。
这不仅因为它接受其它设备的机制不同于我们通常情况下向网络中添加一台新电脑,更主要的是,整个系统中的成员,不再是一台台计算机,而是一组能得到的服务(硬件或软件)。
呈现给用户的界面是能得到服务的内容,用户不必知道服务(service)从何处提供以及是如何实现的。
我们之所以用服务这一术语是因为在Jini中我们感兴趣的是这个系统能干什么,我们能得到什么,而不再将兴趣放在个人电脑、服务器之类的计算机系统上。
Jini技术会涉及以下几个方面:
(1)以动态分布系统为基础的体系架构。
(2)一种通用语言(如Java),用来实现分布对象间的通讯。
(3)查找服务(lookupservice),用以识别提供服务的对象。
(4)设备间的协议,我们称之为发现/加入(discovery/join)协议。
(5)去除机制,称之为租用(leasing)。
使设备能简单地从Jini中取下来。
下面,我们看看Jini是如何工作的,以发现/加入(discovery/join)为例。
发现/加入这一过程发生于当要向Jini中加入一新的服务时。
服务提供者,比如一个设备或软件,首先向网络上发送请求,使任何的查找服务(lookupservice)能识别它。
一旦查找服务发现这一服务后,此服务会上载一个服务对象,登记到查找服务中。
服务对象呈现在Java程序界面,此界面中有实现服务所需的方法及有关属性。
服务提供者需有能力发现查找服务。
服务提供者可交第三方代理查找。
现在,服务提供者已准备就绪,可供使用。
客户端发出服务请求,查找服务返回Java程序界面显示的所有服务,客户端选择所需服务,将服务对象载入客户端。
最后,客户端直接与服务提供者联系,获得服务。
需要强调的是,客户端无需事先知道服务提供者的情况。
Jini技术能使任何器件连入网络,而不论该器件的基础软件和硬件是什么。
因为Jini技术的基础是Java,所以Jini技术独立于平台,可连入的器件就不受软件、处理器、器件驱动器或传统网络协议的限制。
Jini技术为如何连入网络、如何共享信息和如何互操作且同时又保持对用户的透明,确立了一套基本规则。
3
3.1
3.2
3.3分布式架构移动社区存在的技术问题分析
分布式架构移动社区与集中式架构的移动社区有着很大的不同,分析分布式架构移动社区实现的一些问题,最主要的是解决命名、路由、社区发现和传输方面的问题,这些方面的技术也是分布式架构移动社区的关键技术。
精确定位,路由和传输的快速和高效是分布式移动社区应该达到的目标。
命名机制是基础,确定网络的组织方式;路由机制配合命名机制精确定位每位用户的每个设备;而传输机制负责在设备之间快速高效的传输数据。
4命名机制研究
命名机制决定了一个网络的组织形式,一个精确的系统能保证网络的正确互联。
DNS技术是一个Globalnaming系统,适合于集中式移动社区使用。
而INS是一个新的命名系统,是为未来的设备和网络命名和发现资源而设计的,它适合在分布式移动社区中使用。
而UIAnamingSystem是为了弥补globalnamingsystem(DNS)的不足而诞生的,可以和DNS协同工作。
4.1DNS
DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。
在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。
当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与之相关的其他信息,如IP地址。
因为,在上网时输入的网址,是通过域名解析系统解析找到相对应的IP地址,这样才能上网。
其实,域名的最终指向是IP。
4.2INS
INS(IntentionalNamingSystem)是一个新的命名系统,是为未来设备和网络命名和发现资源设计的。
图41INS命名应用场景图
INS应用程序可能是服务或客户:
服务提供功能或数据,而客户请求得到这些。
IntentionalNameResolvers(INRs)通过执行一些简单的算法和协议,将客户请求路由到合适的服务。
Adhoc网络的任何设备都可以作为resolver,这些resolvers合作形成的网络提供了一个系统的资源发现服务。
INS的资源描述名是一个全局的、可变长的名字空间。
为了具有较强的表达能力,INS用基于属性和数值的组合方法对服务和设备进行命名,因此INS的资源描述名空间是组合结构的。
当网络中的服务或者服务所在的设备发生移动或者服务的性能发生变化而导致最佳服务所在的位置发生变化时,INS解析器的解析结果应该立即作出反应。
为了实现这一点,INS支持“晚解析”的名字解析方式。
解析器不仅负责把资源描述名解析为资源所在的位置,而且还在解析器之间进行基于资源描述名的路由。
这样能以最快的速度反映设备或服务的变化情况。
为了实现健壮性,INS的名字解析是局部相关的。
并且INS在服务节点和解析器之间以及在各个解析器之间进行周期性的服务通告和基于软状态的消息交换,以此提高解析性能,并避免出现单一故障点。
为了易于配置,INS的所有解析器组成一个自组织的覆盖网络。
当一个消息到达一个INR时,会被解析出目的地名字。
INR会依据客户程序的特定服务请求来决定解析或转发。
如果程序已经选择了earlybinding(在请求中用early-bindingflag选择),INR就会返回对应于这个名字的IP地址列表。
这与DNS和其它已存的服务发现系统提供的接口很像,这种方式对于当静态服务相当有效。
当有多个IP地址对应于一个名字时,客户端就会选择解析请求结果中最近(leastmetric)的节点。
INS应用程序用了两个迟绑定(latebinding)选项:
intentionalanycast和intentionalmulticast,来处理更多的动态情况。
在这里,网络的地址不是返回到客户端,而是INR直接转发名字和相关程序负载到节点(例如,服务)。
如果应用程序请求intentionalanycast,INR就把这条信息准确的发送到它节点列表中有着最短距离(leastmetric)的那个节点。
在INS中,这些metric不像网络层metric(譬如,网络层anycast用的hopcount),而是INS允许应用程序广告任意特定定应用程序数字方面的metric(譬如,平均负载)。
在intentionalmulticast中,INR转发每条信息(包括目的地名字)给所有邻跳INRs。
这条信息沿着INR覆盖网络转发直到到达所有符合名字的目的地节点。
图42IntentionalNamingSystem结构图
上图是INS的结构图。
在左上角有一个应用程序采用earlybinding:
1.这个应用程序发送一个intentionalname给INR解析,2.收到网络位置,3.然后直接发送数据到目的应用程序。
左边中间的应用程序采用intentionalanycast:
4.应用程序发送intentionalname和数据到一个INR,5.这个INRtunnel到有最短距离的目的地之一。
左下角的应用程序采用intentionalmulticast:
应用程序发送一个intentionalname和数据到一个INR,这个INR通过INR网络转发这个消息给所有的目的应用程序。
右边中间的应用程序向一个INR声明了intentionalnames,这些intentionalnames开始通过INR网络复制传播。
6.右下角一个应用程序发现名字后给INR发送一个询问(query),得到符合与询问中名字匹配的名字集。
INRs自配置进入一个生成树(spanning-tree)覆盖网络拓扑,优化邻居INRs之间的平均延迟。
在构建这个覆盖拓扑网络时,采用INR-INRround-triptime来作为衡量标准。
生成树是用来散步服务描述和接受者的预定的。
不像其它覆盖网络采取保存预配置、静态的邻居的方式,INRs可以spawned或terminated并且可以根据网络状况自动它们的邻居关系。
同时它们也会执行负载平衡来使得工作的更好,当收到的请求率过高时,它就执行在其它节点上spawn新的resolvers并且将部分名字空间授权给新spawn的对象。
4.3UIANAMINGSYSTEM
GlobalNames的局限性:
传统的因特网使用DNS来解析IP地址,设备间通信只采用IP路由机制,使用IP地址。
这也意味着一个DNS主机名字必须有一个静态的、公共的IP地址,在当今商业化的因特网中这些静态IP地址正慢慢耗尽且越来越贵。
另外,今天的移动个人设备通常使用DynamicHostConfigurationProtocol(DHCP)指派的动态IP地址。
而且,这些设备总是位于防火墙或NAT后,使得这些设备的私有IP地址不可达。
虽然有一些协议像MobileIP可以给一个移动设备一个静态IP地址的假象,但是这个解决方案没有根除。
所以UIA命名发展的模型是一种“虚拟USB总线”模型,由USB总线中得到灵感,这种模型更直接也更安全。
随着个人设备都开始支持无线网络和Internet连接,所以这种“虚拟USB总线”模型也应运而生。
建立这种“虚拟总线”应该使用户不必有专业技术或特殊配置的麻烦,而且当设备置于防火墙或NATs之下仍然可以连接。
设想一下,如果Alice在咖啡屋遇到Bob,只需简单的“plugging”双方的设备,她就可以很容易的与Bob分享她家中设备的信