# CN **Repository Path**: cpn-platform/cn ## Basic Information - **Project Name**: CN - **Description**: 感知 通告模块 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-12-08 - **Last Updated**: 2024-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CN #### 介绍 - 感知(CNE)模块:e.py - 通告(CNA)模块 :a.py - 节点算力信息测试模块:node.py #### 安装教程 1. 首先运行node.py,检测是否报错 - 如果报错:ValueError: could not convert string to float: '' 安装:apt install sysstat - 如果仍然报错,因为系统不同可能导致命令行返回的参数不一致,需要修改感知模块代码 2. 安装pyzmq 22.2.1 - sudo apt-get install python3-pip - sudo pip install pyzmq 3. 安装protobuf 3.17.2 - sudo pip install protobuf 4. 其他依赖 - httplib2 0.20.2 (pip install httplib2==0.10.3) - utils 1.0.1 #### 使用说明 1. K8S master节点先运行 kubectl proxy,启动成功后在运行 ./control-backhend. 等待启动成功后再执行下一步 2. 运行感知模块 e.py - 默认开放端口5555,启动时可输入--port更改 - 默认发送周期sleep=5s,可根据接收端CNA模块接收速度更改,启动时可输入--sleep更改 3. 运行感知模块 a.py - (V1.2取消,改成输入masterIP 必须)需要输入所有节点的IP+端口(默认5555,与cna开放的端口对应),以逗号隔开 举例: --CNEIP ip1:port1,ip2:port2,...,ip4:port4 - (可选)发送给TD. 如果不输入参数默认不发送. 如需发送,仅输入本地开放的端口即可 举例: --TDport 5588 - (必须)发送给BE. 如果不输入参数默认不发送. 如需发送,输入BE 的IP:port 举例: --BEIP 10.128.210.111:5588 4. 先运行通告模块a.py,再运行e.py.每个节点都需要运行a.py和e.py #### 关于感知模块--sleep的参数设置问题(V1.2解决缓存问题) - 感知与通告模块通信方式为PUB-SUB,收发双方都存在缓存.发方(CNE)发送的速度不能太快,所以需要设置sleep - sleep设置方法. 先将sleep设置大一点,如10s,收方(CNA)会因为收不到信息而阻塞,表现为在终端print时出现等待 然后慢慢减小sleep,直到收方显示数据时没有停顿 - 如果sleep设置太小,会导致收方收到的信息是缓存信息,不是最新的 【2021/12/14】:V.1.1 发现一个socket绑定多个目的接收地址,不仅可以自动轮流接收,而且如果其中有的连接断开,可以自动忽略该连接,等待连接再次建立后又可以自动接收。目前不支持动态加入,支持加入后退出再加入!! 【2021/12/16】版本更新V1.2 - 1. 通告模块从HTTP9090端口获得ip列表.增加getnodesIP函数,通过http masterIP:9090/ip_list 获取字节点IP - 2. 解决缓存问题,收发水位线都设置为1,即不存在缓存 - 3. cna模块接收端增加 context.setsockopt(zmq.RCVHWM, 1); 发送TD端增加 contextTD.setsockopt(zmq.SNDHWM, 1) - 4. 命令行无需输入子节点IP,仅输入masterIP:port即可 举例 python a.py --masterIP_port 192.168.138.200:9090 - 5. 终端显示发送时间戳和接收时间戳 - 6. sleep改成默认1s,太快没必要,因为网络信息10s更新一次,节点信息获取一次也要1s左右时间