设计节点细节

ipConf

source

source的主要逻辑是,通过ipConf服务,初始化的时候初始化sorce层,这里的主要逻辑是“读取etcd”中的数据,并且watch etcd,将修改也监控住,将得到的k-v数据通过传入的setfunc和delfunc去处理,具体的处理是将k-v数据转成event,加入到eventChan中,等待dispatcher模块处理。

dispatcher

dispatcher在domain领域层,具体的,在source初始化完之后,也要初始化,注册一个大的Dispatcher,初始化里面的map,起一个协程监听source中的eventChan,异步的将接收到的数据写入到map中,同时更新这个event对gateway(endport)的state的改变(这个也是异步的),具体的:在初始化endport时候,会起一个协程来监控endport中的window中的statChan,当增加一个stat时,会追加到window的循环队列中,保存后五个,然后计算新的newStat,再atomoc的将指针改一下,改回endport中

stat

里面有连接数和剩余字节数量,endport结构体中有内嵌这个结构,负责保存最新消息,通过window中的channel监听驱动来更新。

window

window中是以stat为单位,每一个event都会被addNode然后进行newEndport然后update操作,就会将event加入到window中的eventChan中,在newEndport时启动的协程就会处理这个stat,修改队列,更新值。window的职责是接收后续的若谈stat消息,然后更新自己,然后更新外层的Stat,这样做的目的也是为了分层,职责划分。起了stat和endport连接桥梁的作用。