长期支持版本

    社区创新版本

      基于容器的软总线应用指南

      背景简介

      当前用户软件迁向容器化已经是大势所趋。本文档介绍了基于容器部署软总线的使用指导,简化软总线客户端的安装部署,以及方便地与业务软件兼容。

      环境准备

      硬件设备

      设备名称操作系统说明数量
      树莓派 4BopenEuler 22.03-LTS-SP3安装 openEuler 操作系统的树莓派2

      代码获取

      https://gitee.com/openeuler/distributed-codelabs.git

      说明

      服务安装

      以下步骤在设备 A/B 上都需要操作。

      1. 物理机环境安装 openEuler 22.03 LTS SP2 以上版本,环境需要准备好 binder 驱动 binder驱动安装指导

      2. 编译 softbus_client。

        bash distributed-codelabs/build-repo/demo/dsoftbus/build.sh
        
      3. 安装 softbus_server。

        dnf install dsoftbus -y
        
      4. 启动 softbus_server。

        /system/bin/start_services.sh all
        

      容器多 client 场景测试

      1. 执行脚本在物理机A打包加载容器镜像。

        bash distributed-codelabs/build-repo/demo/dsoftbus/docker_img_build.sh
        
      2. 在物理机A启动容器镜像 softbus_client,并将相关SDK、binder驱动映射到容器中。

        docker run  -it  --privileged --net=host --name=softbus  -v /dev/binderfs/binder:/dev/binder  -v  /system:/system  -v /usr/lib64:/usr/lib64  -p 5684:5684/udp softbus_client_image  bash
        
      3. 镜像中写/etc/SI文件,作为该容器中 softclient 的标志,注意需要和组网中其他 client 的不一致,避免冲突。

        echo 123 > /etc/SI
        
      4. 容器中启动 softbus_client。

        ./home/softbus_client
        
      5. 在本节点上可重复步骤2-3启动不同的 client 容器。

      6. 在物理机B启动 softbus。

        ./build-repo/demo/dsoftbus/softbus_client
        
      7. 在设备A中的各个中 client 分别执行命令打开所有连接。

        openA
        
      8. 在设备B中 client 查看所有已经打开的 session。

        conDevices
        

        回显说明,已经打开了两个 session,id 分别是4、3,此 sessionid 是本机的 softbus_server 分配的,后续发送消息需要用到该 id。

        conDevices
        12-11 20:18:58.350 2780335 2780335 I A0fffe/SOFTBUS_DEMO: [SOFTBUS_DEMO]::PrintConnectedDevicesInfo: sessionId:4, networkId: 3c95f61941b81c48ecd73fef881262b82fcbc58e9b1f545e2097b0dc6fecea37
        12-11 20:18:58.350 2780335 2780335 I A0fffe/SOFTBUS_DEMO: [SOFTBUS_DEMO]::PrintConnectedDevicesInfo: sessionId:3, networkId: 3c95f61941b81c48ecd73fef881262b82fcbc58e9b1f545e2097b0dc6fecea37
        
      9. 设备B发送使用“session 4”消息至设备A的 client。

        send 4 "hello4"
        12-11 20:19:14.975 2780335 2780335 I C015c0/dsoftbus: [TRAN]SendBytes: sessionId=4
        

        观察设备A中哪个 client 有回显,说明设备B使用 session 4与该 client 通信,同理可以使用 session 3 发送消息至另一个 client。

      10. 设备A容器中 client 发送使用消息至设备B的 client,查看打开的 session id。

        conDevices
        12-11 20:25:48.995 344047 344047 I A0fffe/SOFTBUS_DEMO: [SOFTBUS_DEMO]::PrintConnectedDevicesInfo: sessionId:1, networkId: e69eab4e2d657264dfbb2006fdfa15524f4a27edeff0baa26d5d2a2b9502f300
        

        说明使用 session 1 通信。

      11. 发送消息测试,在设备B中接受到该字段说明消息接收成功。

        send 1 "hello1"
        
      12. 设备A物理机上 client 发送使用消息至设备B的 client,查看打开的 session id。

        conDevices
        12-11 20:37:24.823 3512580 3512580 I A0fffe/SOFTBUS_DEMO: [SOFTBUS_DEMO]::PrintConnectedDevicesInfo: sessionId:1, networkId: e69eab4e2d657264dfbb2006fdfa15524f4a27edeff0baa26d5d2a2b9502f300
        

        说明使用 session 1 通信。

      13. 发送消息测试,在设备B中接受到该字段说明消息接收成功。

        send 1 "hello1"
        

      session id 说明

      在上个章节的测试中,发现两个 client 之间通信使用的 session id 不一样。原因是 session id 是本机 server 分配的,只需要在本机范围内互斥。同样容器与虚机也做了 session name,group name 的隔离,所以本机容器与虚机上 client 的 session id 是一致的。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份