数据采集
咱们能够通过HTTP/gRPC与deviceShifu进行通信,deviceShifu会将咱们发送的申请转换成设施所反对协定的模式,并发送给设施。
当设施接管到指令之后,数据会传输到deviceShifu中,之后deviceShifu将数据作为咱们申请的返回值进行返回,从而实现数据的采集。
实现自动化数据采集
1.首先,咱们可编写以下程序来实现主动采集数据。该程序用于对之前运行的edgedevice-thermometer
设施进行实时数据采集,将温度数据进行解析并输入。该程序能够通过任意语言、任意模式进行编写,您能够将数据存入您的数据库中,或者存入文件中。
package main import ( "log" "io/ioutil" "net/http" "strconv" "time") func main() { targetUrl := "http://edgedevice-thermometer/read_value" req, _ := http.NewRequest("GET", targetUrl, nil) for{ res, _ := http.DefaultClient.Do(req) body, _ := ioutil.ReadAll(res.Body) temperature, _ := strconv.Atoi(string(body)) if temperature > 20 { log.Println("High temperature:", temperature) } else if temperature > 15 { log.Println("Normal temperature:", temperature) } else { log.Println("Low temperature:", temperature) } res.Body.Close() time.Sleep(2 * time.Second) }}
2.应用go mod init high-temperature-detecto
生成go.mod
文件。
3.对于上述程序,咱们能够将其打包成docker image
并加载到集群中,以便其能更好的与deviceShifu进行通信。创立以下Dockerfile
文件:
# syntax=docker/dockerfile:1 FROM golang:1.17-alpine WORKDIR /app COPY go.mod ./ RUN go mod download COPY *.go ./ RUN go build -o /high-temperature-detector EXPOSE 11111 CMD [ "/high-temperature-detector" ]
4.应用Dockerfile
文件生成docker image
,需执行以下命令:
docker build --tag high-temperature-detector:v0.0.1
5.之后咱们将docker image
加载到集群中,需执行以下命令:
kind load docker-image high-temperature-detector:v0.0.1
6.运行咱们编写的数据采集程序 ,需执行以下命令:
kubectl run high-temperature-detector --image=high-temperature-detector:v0.0.1
7.最初咱们查看该程序的日志信息获取数据,需执行以下命令:
kubectl logs high-temperature-detector -f
失去的数据后果如下:
2021/10/18 10:35:35 High temperature: 24 2021/10/18 10:35:37 High temperature: 23 2021/10/18 10:35:39 Low temperature: 15 2021/10/18 10:35:41 Low temperature: 11 2021/10/18 10:35:43 Low temperature: 12 2021/10/18 10:35:45 High temperature: 28 2021/10/18 10:35:47 Low temperature: 15 2021/10/18 10:35:49 High temperature: 30 2021/10/18 10:35:51 High temperature: 30 2021/10/18 10:35:53 Low temperature: 15