EdgeX Go 微服务框架详解
EdgeX Foundry 是一个开源的边缘计算平台,其核心服务使用 Go 语言实现(edgex-go
)。以下是关键模块和开发指南:
1. 核心服务架构
服务名称 | 功能描述 |
---|---|
core-data |
设备数据持久化存储,提供 REST/gRPC API |
core-metadata |
管理设备、协议配置等元信息 |
core-command |
提供设备控制指令下发接口 |
support-scheduler |
定时任务调度 |
device-service |
重点:与物理设备通信的插件化服务(需自定义开发) |
2. Device Service 开发流程
步骤1:初始化项目
# 使用 edgex-cli 生成模板
edgex-cli new device-service --template=simple --name=my-custom-device
步骤2:实现协议驱动
编辑 internal/driver/driver.go
:
type MyDriver struct {
// 实现 ProtocolDriver 接口方法
}
func (d *MyDriver) HandleReadCommands(deviceName string, protocols map[string]models.ProtocolProperties, reqs []dsModels.CommandRequest) ([]*dsModels.CommandValue, error) {
// 处理设备读取逻辑
}
func (d *MyDriver) HandleWriteCommands(deviceName string, protocols map[string]models.ProtocolProperties, reqs []dsModels.CommandRequest, params []*dsModels.CommandValue) error {
// 处理设备写入逻辑
}
步骤3:注册驱动
在 main.go
中初始化:
service := device.NewService(device.ServiceName("my-custom-device"))
driver := &MyDriver{}
err := service.Start(driver)
3. API交互示例
通过 core-data API上传数据
curl -X POST http://localhost:59880/api/v2/event \
-H "Content-Type: application/json" \
-d '{
"deviceName": "Thermometer-01",
"readings": [{
"resourceName": "Temperature",
"value": "23.5",
"valueType": "Float32"
}]
}'
4.配置文件解析
关键配置文件路径:
res/configuration.toml # Docker部署时挂载到 /res/
配置项示例:
[Service]
Host = "0.0.0.0"
Port =59982
[MessageQueue]
Enabled = true
Protocol ="redis"
Host ="edgex-redis"
Port =6379
5.Docker部署
典型 compose片段:
services:
edgex-core-data:
image: edgexfoundry/core-data:3.0
ports:
-"59880:59880"
volumes:
- type: bind
source: ./config
target:/res/
my-device-service:
image: my-custom-device:v1
depends_on:
- edgex-core-data
6.调试技巧
- 日志查看:所有服务日志默认输出到STDOUT,可通过docker logs查看
- API测试工具:使用Postman或EdgeX自带的Swagger UI(http://localhost:[port]/api/v2/swagger)
如需深入某个模块(如安全认证、规则引擎联动),可进一步说明具体需求方向。
内容由零声教学AI助手提供,问题来源于学员提问