2023-12-21 16:53:33 +08:00

6.3 KiB
Raw Blame History

分布式数据管理

分布式数据管理基于分布式软总线,实现了应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接。

分布式数据管理由上游 OpenHarmony 3.2 Release 版本移植而来,目前包含四个组件:

组件 对应openEuler软件包 功能介绍
分布式数据服务Distributed Data Service distributeddatamgr_datamgr_service 提供不同设备间数据库数据分布式的能力
键值对数据库KV store distributeddatamgr_kv_store 为设备应用提供键值对数据管理能力
关系型数据库Relational store distributeddatamgr_relational_store 基于关系模型来管理数据的数据库
分布式数据对象部件Data object distributeddatamgr_data_object 具备多设备数据同步的面向对象的内存数据管理框架

更多分布式数据管理介绍,可参考上游 OpenHarmony 文档 “数据管理” 相关章节

安装

分布式数据管理相关组件目前在 openEuler-22.03-LTS-SP2 update 版本 和openEuler-22.03-LTS-SP3 版本发布,两个版本下的安装略有不同。

openEuler-22.03-LTS-SP2 版本

分布式数据管理首次发布于 openEuler-22.03-LTS-SP2 update版本如果是使用 openEuler-22.03-LTS-SP2 版本,需要配置 update 版本的 repo步骤如下

  1. /etc/yum.repos.d 目录下新增 update repo 配置文件 sp2_update.repo其内容填写如下

    [sp2_update]
    name=sp2_update
    baseurl=https://repo.openeuler.org/openEuler-22.03-LTS-SP2/EPOL/update/main/$basearch/
    enabled=1
    
  2. 更新 repo 源。(需要保证当前网络可以访问 https://repo.openeuler.org

    dnf makecache
    
  3. 下载安装分布式管理的四个软件包及其依赖软件包

    dnf install distributeddatamgr_kv_store distributeddatamgr_relational_store distributeddatamgr_datamgr_service distributeddatamgr_data_object
    
  4. 如果是 openEuler-22.03-LTS-SP2 版本,需要配置 SA 服务拉起需要的 profile 文件,可以从 下载。

    mkdir -p /system/profile
    wget https://gitee.com/heppen/distributed-files-for-test/raw/master/profile/device_manager.xml -P /system/profile/
    wget https://gitee.com/heppen/distributed-files-for-test/raw/master/profile/distributeddata.xml -P /system/profile/
    wget https://gitee.com/heppen/distributed-files-for-test/raw/master/profile/distributedfiledaemon.xml -P /system/profile/
    wget https://gitee.com/heppen/distributed-files-for-test/raw/master/profile/huks_service.xml -P /system/profile/
    wget https://gitee.com/heppen/distributed-files-for-test/raw/master/profile/softbus_server.xml -P /system/profile/
    
  5. 下载 服务启停脚本

    wget https://gitee.com/heppen/distributed-data-files/raw/master/scripts/start_services.sh -P /system/bin/
    wget https://gitee.com/heppen/distributed-data-files/raw/master/scripts/stop_services.sh -P /system/bin/
    chmod +x /system/bin/*.sh
    

openEuler-22.03-LTS-SP3 版本

分布式数据管理在 openEuler-22.03-LTS-SP3 版本已经默认集成,直接安装即可:

dnf install distributeddatamgr_kv_store distributeddatamgr_relational_store distributeddatamgr_datamgr_service distributeddatamgr_data_object

启动服务

  1. 分布式数据服务可以通过 start_services.sh 脚本来启动

    /system/bin/start_services.sh datamgr
    
  2. 可以通过 ps 命令查看分布式数据管理服务是否拉起

    ps -ef | grep distributeddata
    

使用分布式数据功能

  1. 新建demo运行需要的/data目录。因为OpenHarmony下app运行有指定的目录需要在openEuler下先新增

    mkdir -p /data/app/el0/0/database/com.example.distributed.rdb/rdb
    mkdir -p /data/app/el1/0/database/distributeddata/kvdb
    mkdir -p /data/service/el1/public/database/distributeddata/meta
    mkdir -p /data/service/el1/public/database/distributeddata/kvdb
    mkdir -p /data/service/el1/public/database/distributeddata/meta/backup
    
  2. 编写三个数据库kv_store/data_object/relational_store的客户端程序使用分布式数据功能。

    客户端程序编写可参考仓库每个数据库的 demo 源代码demo 在这个仓库每个数据库同名目录下的 demo目录下kv_store/demo,可使用对应目录下的 build.sh 脚本进行编译。

    注意demo 指定的数据 db 路径等,请最好保持和所给示例 demo 的路径一致,否则可能会存在路径不存在或者权限不足问题。

  3. 暂停分布式管理服务 datamgr_service

    ./stop_services.sh all # 停止所有服务
    ./stop_services.sh datamgr # 停止datamgr一个服务
    

常见问题

  • 启动各个服务日志一直在报错 Binder Driver died

    原因:说明系统未开启 binder可以查看 /dev/binder 文件是否存在,如果不存在则说明未开启 binder。

    解决方法启动binder功能参考communication_ipc仓库说明开启binder功能。

  • softbus_server 服务未成功起来,报错 GetNetworkIfIp ifName:eth0 fail

    原因:使用命令 ip a 查看当前系统的网卡名称,查看是否有 eth0 有线网卡名。 因为 softbus_server 是通过 eth0 这个有线网卡名来获取 ip 等信息,如果没有 eth0 网卡则无法启动 softbus_server

    解决方法一:修改网卡名称为 eth0

    解决方法二:修改 softbus_server 源码,将依赖的有线网卡名称改成当前系统的网卡名。

参考

  1. 分布式文件系统概述