# topics-2020 **Repository Path**: chenqinyu/topics-2020 ## Basic Information - **Project Name**: topics-2020 - **Description**: 2020 openEuler高校开发者大赛组织管理仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://www.oschina.net/2020-openeuler/ - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 139 - **Created**: 2020-12-25 - **Last Updated**: 2021-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 27 用Rust实现分布式管理系统状态管理 ### 项目名称 赛题编号:27 赛题名称:用Rust实现分布式系统状态管理 ### 团队信息 (一)团队名称: 团队名称:鲲鹏 团队编号:1237148526 (二)团队成员信息: 学生信息: 深圳职业技术学院 云计算技术与应用 云计算技术与应用 2020 陈钦宇 1824461877@qq.com 13318499181 深圳职业技术学院 云计算技术与应用 云计算技术与应用 2020 罗昕 rex@ccoe.vip 18603068036 深圳职业技术学院 云计算技术与应用 云计算技术与应用 2020 彭添淞 2821994706@qq.com 15602874821 深圳职业技术学院 云计算技术与应用 云计算技术与应用 2020 陈泽楷 1813287987@qq.com 13075686692 深圳职业技术学院 云计算技术与应用 云计算技术与应用 2020 管国斌 1505059527@qq.com 17737177447 ### 项目介绍 RUST AND GO 分布式管理系统状态管理,具备高性能高可用。使用lru淘汰算法算法进行节点存储保证节点高可用! **该项目使用实现 GO版本和 Rust版本。由于Rust版本的可用的库比较缺乏。先提交GO版本进行基本使用,Rust版本逐渐完善!!!! 所需要自己研发的 Rust 库比较多!性能测试保证库的安全性,与可用性! ** **注:当前版本为测试环境,grpc 没有进行 ca 认证!!!!** ### 开发者 开发者:COMS QQ: 1824461877 描述:该系统都有我本人一个完成!!成员都跑路/(ㄒoㄒ)/~~ ### 使用技术 1. lru 淘汰算法 2. go 微服务项目框架 go_universe 【速度快,高可用】 3. grpc 协议节点通信 4. 负载均衡策略( **一致性负载均衡策略,加权负载均衡策略,轮询负载均衡,随机负载均衡** ) 5. 命令行查看节点状态 6. 节点异常恢复 7. zookeeper 节点存储 8. 无锁支持并发节点存储 ### 开发思路 #### 各模块作用 1. grpc-service-controller :负责命令行、查看节点状态相关功能 2. grpc-service-access-module :负责负载均衡【多个 grpc-server-pod 负载】、zookeeper存储、 节点存储、实时探测、节点异常恢复 3. grpc-server-pod :负责管理节点【多个grpc-client-node】 、探测节点状态 4. grpc-client-node :客户端节点 #### 各模块分析 1. grpc-server-pod 管理 grpc-client-node. 2. grpc-service-access-module 负责管理 grpc-server-pod. 3. 当某个 grpc-server-pod 死亡的时候,把所属下的 grpc-client-node 迁移到其他的节点里,保持节点的一致性! 4. grpc-service-controller 负责用户层面的模块,查看节点基本信息。 ### 代码结构图: ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/212217_ec7cfcd9_2059110.png "捕获.PNG") ### 测试demo 运行代码都放在 demo ,执行顺序 grpc-service-controller -> grpc-service-access-module -> grpc-server-pod -> grpc-client-node 里面内置有 windows 测试版本,由于 linux 云服务器过期暂时无 linux 执行文件,所需要自行的使用 go build 进行生成执行文件 ``` // 生成linux执行文件 mkdir xxx cd xxx // 必须生成conf,来存放生成的配置文件 mkdir conf go build -o ./xxx xxxx ``` 以 windows 为例目录结构大概是这样!! ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/225818_fcbfa70e_2059110.png "捕获.PNG") logs 是生成日志文件给予 go_universe 微服务框架:https://gitee.com/chenqinyu/go_universe 1. grpc-service-controller ``` // grpc-service-controller.exe -h grpc-service-controller.sh -h Usage of grpc-service-controller.sh: -shost string local address -show shows expired : display the information of expired node shows executor : display the information of executor node -sport string local port number ``` 2. grpc-service-access-module ``` // grpc-service-access-module.exe -h grpc-service-access-module.sh -h Usage of grpc-service-access-module.sh: -chost string destination address -cport string destination port number -shost string local address -sport string local port number ``` 3. grpc-service-pod ``` // grpc-service-pod.exe -h grpc-service-pod.sh -h Usage of grpc-service-pod.sh: -chost string destination address -cport string destination port number -shost string local address -sport string local port number ``` 4. grpc-client-node ``` // grpc-client-node.exe -h grpc-client-node.sh -h Usage of grpc-client-node.sh: -chost string destination address -cport string destination port number ``` #### 测试demo 开启 grpc-service-controller 默认端口为:9999 , 根据conf/conf.json5进行端口设置 ,show 显示命令行模式 ``` // grpc-service-controller.exe -shost 127.0.0.1 -sport 9999 -show grpc-service-controller.sh -shost 127.0.0.1 -sport 9999 -show ``` 开启 grpc-service-access-module 默认端口为:9998 , 根据conf/conf.json5进行端口设置 ``` // grpc-service-access-module.exe -chost 127.0.0.1 -cport 9999 grpc-service-access-module.sh -chost 127.0.0.1 -cport 9999 ``` 开启 grpc-server-pod 默认端口为:9997 , 根据conf/conf.json5进行端口设置 ``` // grpc-server-pod.exe -chost 127.0.0.1 -cport 9998 grpc-server-pod.sh -chost 127.0.0.1 -cport 9998 ``` 开启 grpc-client-node ``` // grpc-client-node.exe -chost 127.0.0.1 -cport 9998 grpc-client-node.sh -chost 127.0.0.1 -cport 9998 ``` #### 测试demo结果 1. 观察 grpc-service-controller ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/223026_11540f41_2059110.png "true.PNG") 2. 当 grpc-client-node 死亡,不是异常哦!异常可会进行恢复 可用节点已经消失 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/223139_ee108050_2059110.png "false1.PNG") 3. 观察 expired 表 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/223301_cbdebb87_2059110.png "false2.PNG") ### 更新与迭代 1. 日志系统一些 bug 问题 2. 逐渐支持分批探测节点存活 3. 扩展命令行基本命令 4. 支持 web 进行操作! 5. Rust 对版本库进行更新,Rust迁移状态为 68%