- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 2010智达方通目前LOGO.doc
- 2011-2012学年长乐市朝阳中学月考.doc
- 2011—2012学年度第二学期六年级数学期中试卷.doc
- A02-各种通讯方法.ppt
- A1息管理与信息系统-《管理信息系统》.doc.doc
- 2011年威海中考英语试题.doc
- Access教程第四章窗体本章内容窗体的功能窗体的设计窗体中的数据.doc
- ACMDigitalLibrary全文数据库使用指南-北京交通大学图书馆.doc
- ADO语法-教育大市集.ppt
- ADSP-21xx系列DSP的编程模型.ppt
- CKRule帮助手册.doc
- Class1-东吴大学.ppt
- CMPP接口协议.doc-短信.doc
- 21项成套采购、安装、调试,均不单购,并需与公司现有设.doc
- CompanyNameMay0,2006中金公司研究部分析员吴丰树,CFA.doc
- Connection对象-南京大学信息管理学院.ppt
- CorrectuseofISO26000September2010正确使用ISO26000.ppt
- 2、小慧同学用托盘天平测物体质量时,使用了沾有油污的砝码,则(.doc
- CourseData0310171524imgQuestion微机原理试题B4答案.doc.doc
- CourseData114080786imgQuestion《编译原理》模拟试题七.doc.doc
文档评论(0)