P2Psim分析笔记(4)-Topology 和Network

简介:
  在上篇的分析理,taskmain的第三步是让Topology类来分析topology_file,从而启动了Network对象。这次,我主要介绍这部分的详细流程。主要内容包括对Topology类以及子类Euclidian拓扑类的机制分析,Failure Model类以及Network类的交互。搞清楚这些,基本就把P2PSim的启动机制搞清楚了。按照惯例,我在这里给出了所涉及的流程的大体流程图。
无命名
   
    这部分的调用是taskmain函数中的Topology::parse(topology_file)引起的。在pase函数中,首先从topology_file里面读出了topology的名字,例如Euclidian拓扑, 以及对应的failure模型。至于failure模型,好像是用来制定数据传输中的丢包策略的。这个目前不是我的兴趣所在,所以我也懒得去仔细分析了。如果在topology_file里面不指定的话,在这里会默认提供一个无丢包的nullfailure模型。
   在生成topology和failure模型中,他们的构造函数都不会做什么特别的工作。然后这两个对象top和fm被作为参数来构造Network的对象实例。在Network对象的构造中,topology和failure模型会被保存到Network对象里面。以后只能有Network的实例来访问了。最后Network对象构造中会调用thread来让run函数作为一个task来跑。这个函数中,Network实例开了一个channel(libtask中task进行通信的机制),然后就不断从这个channel读取来自topology对象的Node(也就是peer)信息。然后存到自己的_nodes成员中,这个成员是IPaddress 和Node指针的一个map。
  最后,Topology::parse()调用了topology对象的parse完成了topology_file的剩余部分的解析。这里要注意toplogy对象(top指针 )是指向Topology类的一个子类的对象,比如Euclidian类的对象。 接下来,我们拿Euclidian拓扑来举例,这个对象按照 
         IPaddress  x,y 
的格式来解析peer在空间中的位置,以及用ipaddress来标识peer。解析出每条记录,都通过工厂模式,构造出一个Node类的子类的对象,除了保存在自己的_nodes成员中(也是一个IPaddress 到node的map),通过channel发送给Network对象的run函数。图中的黄绿色箭头表示出这个联系。





     本文转自nathanxu 51CTO博客,原文链接:http://blog.51cto.com/nathanxu/247545,如需转载请自行联系原作者


相关文章
|
4月前
|
算法 数据挖掘 数据处理
【博士每天一篇文献-综述】A Modified Echo State Network Model Using Non-Random Topology
本文介绍了一篇博士论文,提出了一种基于非随机拓扑结构的改进型Echo State Networks (ESN)模型,用于处理时间序列数据,通过在储层中使用复杂网络和聚类模型的拓扑结构,提高了模型性能并降低了计算成本,论文还展示了该模型在信号预测和图像分类中的应用。
43 3
【博士每天一篇文献-综述】A Modified Echo State Network Model Using Non-Random Topology
|
4月前
|
算法 数据挖掘
【博士每天一篇文献-算法】Imposing Connectome-Derived Topology on an Echo State Network
本文研究了将果蝇连接图的拓扑结构应用于回声状态网络(ESN)中,提出了一种新型的“果蝇ESN”(FFESN),通过替换传统ESN的储层层为基于果蝇神经连接结构的连接矩阵,发现FFESN在混沌时间序列预测任务中表现出较传统ESN更低的方差或更高的性能。
30 1
|
Kubernetes 安全 Cloud Native
基于 Network Policy 限制服务交互
安全,无论是基于传统的单体服务模型还是当下流行的云原生微服务模型,其自始至终是一个关注度较高的话题。诚然,安全性是一个广泛的概念,但本文更多地将聚焦在微服务架构体系,深入到一个至为关键的层面,即“服务间的交互安全“。
84 0
|
SQL 缓存 监控
译|Monitoring and Tuning the Linux Networking Stack: Sending Data(十一)
译|Monitoring and Tuning the Linux Networking Stack: Sending Data(十一)
159 0
|
存储 消息中间件 Kafka
Flink state best practice| 学习笔记
快速学习 Flink state best practice。
Flink state best practice| 学习笔记
|
Kubernetes 容器 Perl
k8s基础网络Cluster Network模型
k8s基础网络Cluster Network模型
171 0
k8s基础网络Cluster Network模型
|
机器学习/深度学习 Ubuntu 固态存储
Elastic:机器学习的实践 - multi metric job
Kibana 中的 multi metric job 向导提供了一种使用多个检测器创建更复杂作业的简单方法。例如,在单个度量标准作业中,你正在跟踪总请求与时间的关系。你可能还希望跟踪其他指标,例如平均响应时间或拒绝请求的最大数量。你可以为多个指标作业合并它们,而不是为每个指标创建作业。
970 0
Elastic:机器学习的实践 - multi metric job
|
机器学习/深度学习 运维 Ubuntu
Elastic:机器学习的实践 - single metric job
在 Elasticsearch 中,可以将机器学习视为搜索和分析的自然扩展。它是对时间序列数据的分析。 Elasticsearch 支持的机器学习功能可以通过运行 metric 任务来自动分析时间序列数据,该 metric 任务包含一个或多个定义了将要分析的字段的检测器。 它可以帮助我们识别单变量时间序列数据中的异常,并向我们显示正常情况。在 Elasticsearch 中,我们可以通过机器学习来检测时间系列中的异常情况。
2787 0
Elastic:机器学习的实践 - single metric job
Knowledge of Network Building&Maintenance(网络组建与维护知识点)
CH1 计算机网络技术基础 一、Gap Filing1.编码是将模拟数据or数字数据变换成数字信号,以便于数据的传输和处理。信号必须进行编码,使得与传输介质相适应。(第一点存疑) 2.在数据传输系统中,主要采用以下3种数据编码技术:-数字数据的数字信号编码-模拟数据的数字信号编码-数字数据的模拟信号编码Knowledge Extension:数据传输方式有以下4类a.模拟数据的模拟信号编码 b.数字数据的数字信号编码c.数字数据的模拟信号编码 d.模拟数据的数字信号编码这4类中除了模拟数据的模拟信号编码之外,其他3类都属于数据编码技术。
2263 0
|
存储
RyuBook1.0案例二:Traffic Monitor项目源码分析
RyuBook1.0案例二:Traffic Monitor项目源码分析
1578 0