p2psim学习笔记(二) 总体框架流程

  1. 程序的总框架图可以在http://pdos.csail.mit.edu/p2psim/p2psim-classes.pdf得到(好像是贴不了图吗?)

在看源代码的时候就可以参照这个总类图,这样就可以比较容易知道程序的来胧去脉。


  1. 总体流程说明(网上转载有修改) –先有一个总体认识


(1)节点node模拟成运行P2P算法的机器,通过Network相互之间发送和接收数据报。Network中的两个结点的Latency通过toplogy来决定

(2)ChurnGenerator模拟P2P网络的动态性,它周期性的加入节点或撤销节点。 (3)LookupGenerator周期性的发出lookup查询请求来增加网络的负载。

(4)每个节点有joinlookup方法,调用join初始化结点得routing table,并和其它node联系,让自己加入到P2P网络中结点通过周期性调用stabilization routine来刷新自己的routing table

(5)节点通过调用RPCs相互通讯,RPCs会调用Network里的方法。

(6)Network收到一个数据包时,它会计算发送者和接收者之间得latency.当接收结点dead,Network通过error-RPC-reply机制 (n)模拟超时。

(7)程序采用thread模拟实现结点的离散事件,比如A结点发出LOOKUP请求给B结点,并且A处于等待状态;B在完成查询操作后,将结果返回给A,并通知A继续执行下去。

(8)通过任务队列EventQueue来保存事件

(8)线程之间的异步操作并不是通过我们熟悉的信号量、共享内存等传统POSIX方式,而是采用Alef Programming Model,通过channelsendrecv操作,实现task之间的互斥和同步。Alef的具体实现技术请参看http://swtch.com/~rsc/thread/ug.pdf


后面就从main开始分析源代码实现咯!


  1. 在进一步深入源代码学习前,先拟定个学习计划:

    (1)在程序中使用了大量的模式设,所以在看源代码前最好先恶补一下以下模式,Factory,Singleton,Observer,Mediator

    (C++的肯定要看GofDesign Pattern啦,什么?没听过~~)


(2)C++基础这个不用说啦,STL相关的set, map, vector, hash_map 等会大量用到,所以这方面也要先了解


(3)在看的过程中边做笔记边总结,看清楚了一部分后就可以画画流程图等,当然如果只是用于测试数据而不是研究代码的话,只要学会修改就可以了,具体协议实现在/protocol



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值