物联网 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 支持设备认证
  • 优势 :
    • ✅ 全链路追踪,便于故障排查和性能分析
    • ✅ 可靠传输,关键消息不丢失
    • ✅ 安全认证,防止非法设备接入
相关推荐
华允物联-HUAIOT10 小时前
LoRa通信距离一般多远?影响因素与实际测试方法
物联网
YCOSA202516 小时前
雨晨 Windows 11 IoT 企业版 Edge 轻装 VCDX 29680.1000
windows·物联网
lzqrzpt19 小时前
临沂LED驱动电源工程选型标准与工艺对比解析
python·单片机·嵌入式硬件·物联网
microrain20 小时前
权限改了,接口立刻生效,菜单要等重新登录:SagooIoT 权限体系的四道闸门
物联网·golang·开源·sagooiot
悟天特斯1 天前
AI驱动的楼宇节能:从“经验省电“到“算法能效“的进化之路
人工智能·物联网
wuyk5551 天前
《WiFi 嵌入式物联网开发全套实战》| 第 29 章 WiFi 长连接保活机制:无线层 + 应用层双重心跳
物联网
乐讯通物联网服务商1 天前
外勤执法记录仪接入物联网:间歇联网终端通信方案选型分析
物联网·执法记录仪·物联网卡
微三云马玮均—GEO源码系统 私有化部署1 天前
消费返物业费:消费+服务趋势的必然产物!
大数据·人工智能·物联网·区块链·生活
笨笨饿1 天前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
小神兵2 天前
对电压源与电流源的的简单理解
单片机·嵌入式硬件·物联网