物联网 Protobuf实战第一篇

物联网 Protobuf实战第一篇

物联网 protobuf 相关约定和定义

相关源码

  • 相关源码https://gitee.com/kcnf-webrtc/iot-sample/tree/master/protobuf/protobuf-sample-03/protobuf-sample-03-api

项目结构

定义相关protobuf文件说明

复制代码
├── common/                          # 公共基础类型
│   ├── header.proto                # 消息头定义
│   ├── device_status.proto         # 设备状态
│   ├── ack.proto                   # 确认响应
│   └── enums.proto                 # 通用枚举
├── upload/                          # 上行消息(设备→云)
│   ├── device_upload.proto         # 上传消息主结构
│   ├── sensor_data.proto           # 传感器数据
│   └── event_data.proto            # 事件数据
├── command/                         # 下行消息(云→设备)
│   ├── device_command.proto        # 命令消息主结构
│   ├── config_update.proto         # 配置更新
│   ├── fota_update.proto           # 固件升级
│   └── control_command.proto       # 控制命令
└── response/                        # 响应消息
    └── response.proto      # 命令响应

🎯 设计规范的目的

1. 模块化分离(Modular Separation)
  • 目的:将不同职责的消息类型分离到独立目录,提高可维护性和可扩展性
  • 实现
    • common/:存放所有模块共享的基础类型(消息头、枚举、设备状态等)
    • upload/:专门处理设备到云平台的上行数据(传感器数据、事件上报)
    • command/:专门处理云平台到设备的下行指令(配置更新、FOTA、控制命令)
    • response/:统一处理设备响应消息
  • 优势
    • ✅ 职责清晰,每个目录专注单一业务领域
    • ✅ 降低耦合,修改某个模块不影响其他模块
    • ✅ 便于团队协作,不同开发人员可并行工作
2. 版本化管理(Versioning)
  • 目的:支持协议演进和多版本共存,避免破坏性变更影响现有设备
  • 实现 :使用 v1/ 目录标识协议版本,未来可并行存在 v2/v3/
  • 版本演进策略
    • 向后兼容 :新增字段使用可选字段或 oneof 扩展,不删除已有字段
    • 废弃标记 :使用 reserved 关键字标记已废弃的字段编号
    • 多版本共存 :v1 设备和 v2 设备可同时接入,服务端根据 Header.version 路由
  • 优势
    • ✅ 平滑升级,新旧设备可同时运行
    • ✅ 灰度发布,逐步推广新协议
    • ✅ 回滚能力,出现问题可快速切回旧版本
3. 单向依赖原则(Unidirectional Dependency)
  • 目的:避免循环依赖,确保编译顺序清晰

  • 实现

    • 业务模块(upload/command)依赖 common 模块
    • common 模块不依赖任何业务模块
    • 同一层级模块间互不依赖
  • 依赖关系图

  • 优势

    • ✅ 编译顺序明确,避免循环引用错误
    • ✅ 层次清晰,易于理解和维护
    • ✅ 便于单元测试,可独立测试各模块
4. 消息完整性(Message Integrity)
  • 目的:每条消息包含完整的上下文信息,支持追踪、认证、QoS 保障
  • 实现
    • 所有上行消息包含 Header(消息ID、时间戳、trace_id、QoS等级)
    • 支持 need_ack 标志位实现可靠传输
    • 内置 auth_token 支持设备认证
  • 优势
    • ✅ 全链路追踪,便于故障排查和性能分析
    • ✅ 可靠传输,关键消息不丢失
    • ✅ 安全认证,防止非法设备接入
相关推荐
chen_x_x11 小时前
yopen GPIO demo详细版
物联网
Alinket12 小时前
当 AI 走进传感器:嵌入式人工智能如何重构设备智能
人工智能·物联网·重构·健康医疗·无线通信·智能硬件·iot
SL_staff12 小时前
面向业务人员的IoT概念翻译实践:JVS-IOT低代码配置原理与开发者视角解析
java·spring boot·物联网
慧都小妮子17 小时前
GB/T 44462.4-2026实施前,DataHub如何管好工业数据链路?
物联网·网络安全·数据安全·工业互联网·opc
做萤石二次开发的哈哈19 小时前
视频汇集平台模板上线萤石蓝海AIoT一站式工作台:多品牌摄像机+NVR统一接入,GB/T28181国标级联实现工程施工多方视频调度(附部署教程)
大数据·人工智能·物联网·音视频·萤石开放平台·蓝海aiot一站式工作台·aiot开发
知孤云出岫19 小时前
深扒:DolphinDB,为什么它正在成为工业物联网实时计算的新底座?
物联网·数据·工业·dolphindb·计算
做萤石二次开发的哈哈19 小时前
路由器管理应用不用逐个啃协议了:海康无线路由器接入萤石蓝海AIoT,五类技能组合生成多端网管系统
人工智能·物联网·低代码·萤石开放平台·蓝海aiot一站式工作台·aiot开发
jianqiang.xue1 天前
ESP-IDF保姆级入门41|产品级故障排查与稳定性优化全解:死机复位排查/内存泄漏定位/性能瓶颈分析/长期稳定性测试,掌握量产运维问题定位方法论
单片机·mcu·物联网·esp32
笨笨饿2 天前
#138_解决Codex要五次回复的问题
linux·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式实时数据库
by组态2 天前
Ricon组态系统通信配置指南
前端·后端·物联网