Merge branch ‘master’ of https://gitlink.org.cn/pfTeJH5GPm/fbssjkyzxjjfa
# 分布式数据库一致性解决方案 ##### 作品完成和提交方式:选择本赛题的参赛队伍需要首先复刻(Fork)本项目,然后在复刻的项目中添加参赛队员、合作完成作品开发即可,无需提交PR到赛题项目。如果作品为文档形式,也请将作品文档提交到项目代码库中。在作品完成过程中,围绕作品的相关讨论等可以以疑修(Issue)形式发布和讨论,也可使用里程碑对整个任务进行规划管理。 ### 1. 赛题说明 OpenHarmony操作系统是一个天然支持设备互联互通的操作系统,而分布式数据库服务是开源OpenHarmony底层的基础服务,OpenHarmony操作系统具有屏蔽通讯协议,方便快捷的完成数据交互传输协同这一天然特性。基于这一特性,OpenHarmony系统可以广泛应用在如矿井、远洋船舶、电塔建设施工等作业环境恶劣,通讯网络困难的场景中。利用OpenHarmony的分布式数据能力,可以不依赖特定网络通讯手段,实现设备间互联互通,数据协同。在这些特定作业场所OpenHarmony发挥着巨大优势,但随着网络情况的不稳定波动,导致设备上下线频繁,如何让组网内的设备稳定高效协同工作成了一个重要的解决问题。 基于分布式数据管理服务提供的数据协同能力,可以同步汇聚各个传感器设备信息,分享各工种作业数据,实现高效协同工作。 当前OpenHarmony的数据管理已经实现了设备间的自由同步,多设备协同场景下业务场景可以更具有创造性,利用OpenHarmony系统天然的互联互通能力,我们可以创造出来很多的解决方案,解决实实在在的实际问题。目前,这些作业场景下,主要为边缘传感器等设备采集数据执行动作,中心节点汇聚分析计算数据,而恶劣工作场合下,设备故障,通选断连时有发生,为确保不稳定网络下异构设备的系统工作, 各端采集操作数据多端数据一致,需要解决以下问题: 1. 实现分布式共识算法,可进行自主主节点选取(主节点聚合组网内全量数据,计算统计后下发),基于现有分布式数据同步能力保障内数据的一致性,各端数据操作可进行实时分发同步; 2. 支持组网内设备的退出/加入(包括主节点)。 ### 2. 赛题要求 实现一个Demo, 可以达成3个以上设备的数据操作一致性,支持各节点的上下线,保证组网内数据实时一致。 基础目标 实现支持3个设备以上的组网,可根据设备优先级进行自动选主,设备的数据可进行实时同步,达到分布式一致。 数据同步时延<500ms(wifi连接场景,数据量<1K) 支持组网内任意节点的加入及退出,主节点下线后组网内设备可进行自行重新选组,维持组网内各设备正常协同工作。 挑战目标 组网设备5+, 组网变化后,在5s内能达成新的主节点规划,组网数据同步正常(wifi连接场景) 各设备预置不同数据数据量,设备数据量(动态变化), 设备级别需要做为组网权重参考。 示例 数据格式为KV格式,格式如下: 各条记录为实时采集的各节点环境信息,Key为设备采集信息的时间点,Value为获取到的当前环境信息以JSON串形式保存。
key:20240228115450 Value: { "name": "Overview", "onDuty": "zhangshan", "deviceID": "deviceA", "humidity": 100, "temperature": 31 }
其中,每个设备包含一条整体环境的数据平均值,根据数据采集情况及同步情况实时刷新计算,汇总信息条目key值为Avg,value为计算的平均值结果对应格式的json串,可以用于反应整个工况的实时环境信息。 例1:各设备等级相同场景以数据量大的优先 --- | 设备 | 设备级别 | 数据量 | 选主结果 | | ---- | ---- | ---- | ---- | | A | S0 | 500 | | | B | S0 | 800 | 主节点 | | C | S0 | 200 | | --- 假设设备权重比为s2(1.2):s1(0.9):s0(0.8) 设备数据量相同场景以数据设备登记权重大的优先 --- | 设备 | 设备级别 | 数据量 | 选主结果 | | ---- | ---- | ---- | ---- | | A | S0 | 600 | | | B | S1 | 600 | | | C | S2 | 600 | 主节点 | --- 例2: 假设设备权重比为s2(1.2):s1(0.9):s0(0.8) 设备数据量不同场景且设备等级不同,根据加权计算结果大者优先 若B设备下线,应选取E节点作为主节点 --- | 设备 | 设备级别 | 数据量 | 加权结果 | 选主结果 | | ---- | ---- | ---- | ---- | ---- | | A | S2 | 400 | 480 | | | B | S1 | 700 | 630 | 主节点 | | C | S0 | 200 | 160 | | | D | S1 | 300 | 270 | | | E | S2 | 500 | 600 | | --- ### 3. 赛题导师 徐少华 — xushaohua@huawei.com 孙朋 — sunpeng26@huawei.com ### 4. 参考资料 依赖代码仓 https://gitee.com/openharmony/distributeddatamgr_appdatamgr https://gitee.com/openharmony/distributeddatamgr_kv_store 开发及验证指南 分布式数据管理子系统介绍 https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E5%88%86%E5%B8%83%E5%BC%8F%E6%95%B0%E6%8D%AE%E7%AE%A1%E7%90%86%E5%AD%90%E7%B3%BB%E7%BB%9F.md OpenHarmony自验证指南 https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E6%B5%8B%E8%AF%95%E5%AD%90%E7%B3%BB%E7%BB%9F.md 推荐硬件 Rk3568开发板* 3
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
本仓库为研究生大赛cpipc.acge.org.cn中提交作品自动创建的仓库,但是本仓库通过git工具,尝试了多种密码,都无法推送,而采用网页提交,单个文件不能超过5M,无法上传演示视频。
因此,本组重新fork了赛题,作品在以下仓库中:https://gitlink.org.cn/fylimas/N10W