P2Psim剖析笔记(6)- 仿真中的事情机制51CTO博客 - 亚美娱乐

P2Psim剖析笔记(6)- 仿真中的事情机制51CTO博客

2019年02月23日09时30分01秒 | 作者: 亚美 | 标签: 剖析,机制,工作 | 浏览: 2659

    这几天因为P2Psim的剖析进展不是很快,所以一向也就没有更新剖析笔记,期望我们见谅。在前几篇中,我现已大体介绍了P2Psim的初始化进程。对初始化的剖析,到上篇就告一段落。因为我是一边剖析一边写笔记,所以有些细节方面或许存在遗失和过错。假如各位在自己的剖析中发现,无妨联络我。在每篇笔记的图片中,有我的邮件地址的水印。     接着之前的剖析,本篇首要介绍了P2Psim的运行机制。这部分的了解,是以后用P2Psim来增加自己的p2p协议的根底。这篇的介绍不触及太多细节,因为在我的剖析中,发现Node类的完结中有太多的细节需要说。所以在这里我仅仅给我们一个整体的介绍。假如我们去做代码剖析,我主张我们剖析sillyprotocol,而不要一上手就去看Chord协议。我个人的感觉是,Chord协议触及太多协议自身的机制,它的机制自身的复杂性,很大程度上会搅扰我们对仿真中的音讯机制的剖析。而sillyprotocol简直没有什么代码和任何协议机制。因而是一个很好的切入点。    依照常规,我给出了剖析的简略图例。因为这图是用office的onenote画的,尽管画起来很便利,可是onenote的画图功用真实太弱了,所以不同含义的先只能用色彩差异,而无法用线形来差异,我们只能凑合着看了。    图中左上角的EventQueue是我介绍的切入点。在之前,我介绍过,他的运行机制就是在不断的调用他的advance()函数从音讯行列里边取出工作,然后每次取出音讯就去kick一下音讯发生器类EventGenerator,然后再对取出的每个event目标,调用其execute()函数来完结相应的操作。那么EventQueue中音讯的来历首要是两个: EventGenerator类或其子类;和Node类。    先看EventGenerator类。这个类在把自己注册到EventQueue实例里边的时分就把仿真完毕音讯(exit)和各个peer参加仿真的音讯(join)参加了行列。前者是SimEvent类型的音讯,后者是P2PEvent音讯。SimEvent类型的音讯只要一个用处,就是完毕仿真。P2PEvent工作的用处就是告诉各个peer在不同的时分做不同的工作,比方join,crash和lookup这些。不同于其他的仿真软件,如OverSim,P2Psim中P2PEvent工作是由EventGenerator做中心操控的,而不是由各个peer自己操控的。换而言之,EventGenrator操控了整体peer的行为形式。这点简化关于homegeneous的仿真而言是好的,写代码就简略多了。假如要做geterougenous的仿真就困难一点了,不过也不是大问题。    第二个工作的发生源是Node类。Node类封装peer作为网络结点的人物。对上层p2p协议,Node供给了RPC调用接口。然后把对应的RPC恳求和应对转换成网络报文的传输。在仿真中,报文的发送和承受都被转换成NetEvent网络工作。当Node要发网络数据包的时分,他就从Topology目标供给的接口计算出报文抵达的延时,然后生成一个报文抵达的NetSim工作,放到EventQueue里边,等候EventQueue到时分进行处理。    介绍完工作的发生源,再说说工作的处理。之前说过,EventQueue在取出Event时分,会调用其execut函数来处理工作。关于不同类型的工作,其execute机制不同。 最简略的是SimEvent的,马上就告诉体系完毕仿真了,详细代码各位自己去看。其次是P2PEvent。假如音讯关于的操作是EventGenerator让peer join或许crash,他仅仅把protocol中对应的_alive进行置位和清位。假如是其他操作,如chord中的lookup,这类。他会对应找到protocol目标中的函数调用来完结处理。比方lookup工作, P2PEvent 就把Event中对应的node目标找出来,调用他的lookup()函数.    假如处理的是NetEvent工作,它的execute会依据工作的类型进行差异对待。之前我说到,Node会把RPC操作转变为网络报文传输,因而NetEvent对应不同网络报文也分两类:恳求和应对。假如这个工作对应的是恳求,它就让体系为对应的接纳结点生成一个新task来跑Node::receive()函数,让node来接纳这个“网络数据包”。不然,他就把这个数据包发送到对应的channel去,让等候接纳RPC回应的node的()来接纳这个回应。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章