CJ7H项目报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CJ7H项目报告.doc

cj7hDNS域名服务系统 cj7hDNS简介 cj7hDNS功能:cj7hDNS是一个分布式系统,能够向客户端提供高效地、和可靠地域名解析服务。客户端提供需要解析的域名,系统返回对应的主机的ip地址。 开发平台:Windows 开发语言:C++、C#。 开发工具:Microsoft Visual Studio、Ice。 cj7hDNS体系结构 相关进程: Client:模拟DNS客户端,发出域名解析请求。 Doggy:不断检测其他Doggy的状态,如发现某个Doggy崩溃,则创建新的视图。 对于Primary Doggy,接收Dnsproxy的解析请求,并将解析任务分派给某个Slave Doggy;Slave Doggy则进行实际的解析。 Dnsproxy:将客户请求转发给Primary Doggy,并不断检测当前活动视图。 查询处理 Client Request Result Slave Doggy Slave Doggy Pimary Doggy Request Result dispatch Request() dispatch Request() Result Result startupdate( ) startupdate() update( ) update( ) Dnsproxy 主要过程: 1、Client将查询请求发送给Dnsproxy,Dnsproxy将查询请求转发给Primary Doggy。 2、Primary Doggy根据某种负载均衡算法将查询分派给某个Slave Doggy。 3、Slave Doggy执行查询并返回结果。 视图更新 Dnsproxy Doggy Doggy Check View( ) Check View() Check View( ) Regiseter Doggy( ) Register Primary ( ) Register Doggy ( ) Register Primary( ) Set View( ) Set View( ) 主要过程: 新加入的Doggy要向Dnsproxy注册。 新产生的Primary也要通知Dnsproxy。 Dnsproxy不断检测每个Doggy的状态,维持一个活动Doggy的视图。 每个Doggy不断检测其他Doggy的状态,如果发现某个Doggy 崩溃,则先取得Dnsproxy 维持的视图。然后检测该视图中每个Doggy的状态,创建新的活动视图,并通知每一个其他的Doggy,完成视图更新。 功能实现 利用Ice工具实现远程调用和参数传递。 cj7hDNS定义了两个远程过程调用对象类:doggy、dnsproxy,对应于Doggy和Dnsproxy。分别定义在doggy.ice和dnsproxy.ice中: class Doggy { DoggiesView view; DNSProxy * proxy; // primary doggy task string dispatchAndResolve(string domainName); [ami] void startUpdate(); // doggy task string getID(); DoggyStatus getStatus(); void setView(DoggiesView newView); string resolveDomainName(string domainName); ResolveInfo getUncacheInfo(); void updateCache( ResolveInfo updateInfo ); }; class DNSProxy { // view.primary : current primary // view.doggies : all active doggies // this member may be different from that in doggy DoggiesView view; void registerDoggy(Doggy * dog); void registerPrimaryDoggy(Doggy * dog); DoggiesView getView(); string resolveDomainName(string domainName); }; 具体函数实现以及其他非仅在本地调用的函数定义在继承类DoggyI、DnsProxyI中,具体请见Doggy_d.h、DnsProxy_d.h。 测评和总结 初始:启动 dnsproxy ,4 doggy.(1

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档