edgex foundry中文5 | go开发,IDE构建运行edgexfoundry

724 阅读9分钟
# 本人声明: 
# 1、翻译来自官方网站原文。仅做个人学习。 
# 2、个人能力十分有限,借助了翻译工具并作了修改和备注【ps:xxx】,但仍只能满足个人理解使用,错误和漏洞百出,希望读者指正批评。 
# 3、官网地址:[EdgeX Foundry Documentation](https://docs.edgexfoundry.org/2.4/)

入门 - GO开发人员

介绍image

这些说明适用于 Go Lang 开发人员和贡献者获取、运行和以其他方式使用 Go-based EdgeX Foundry 微服务。在阅读本指南之前,请查看一般开发人员要求

如果您想获取 EdgeX 平台并运行它(但不打算立即更改或添加到现有代码库),那么您被视为“用户”。用户应阅读:以用户身份入门)

Go 开发需要什么

除了开发人员中列出的硬件和软件之外 指南,您将需要以下内容才能使用基于 EdgeX Go 微服务。

Go

EdgeX Foundry 的开源微服务是用 Go 1.16 编写的。有关下载和安装说明,请参阅golang.org/dl/。 较新版本的 Go 可用并且可能有效,但该项目尚未 针对这些较新版本的语言构建和测试。 旧版本的 Go,尤其是 1.10 或更早版本,可能会导致 问题(EdgeX 现在使用 Go Lang 引入的 Go 模块 1.11).

构建要点

为了编译和构建 EdgeX 的某些元素,需要安装 Gnu C 编译器、实用程序(如 make)和相关库。某些IDE可能已经附带了这些工具。某些操作系统环境可能已经附带了这些工具。其他环境可能需要您安装它们。对于 Ubuntu 环境,您可以安装一个名为Build Essentials 的便利包。

注意

如果您正在安装 Build Essentials,请注意每个 Ubuntu 版本都有一个构建必备包。通过 UbuntuPackages Search 搜索与您的 Ubuntu 版本相关的“build-essential”。

IDE(可选)

有许多工具选项可用于编写和编辑 Go Lang 代码。您可以使用简单的文本编辑器。为了更方便起见,您可以选择使用集成开发环境 (IDE)。下面的列表突出显示了一些 EdgeX 社区使用的 IDE(没有任何项目认可)。

GoLand

GoLand 是一个流行的,虽然基于订阅费,但特定于 Go 的 IDE。 了解如何购买和下载 Go Land:www.jetbrains.com/go/.

Visual Studio Code

Visual Studio Code是由Microsoft开发的免费开源IDE。查找和在此处下载 Visual Studio 代码:code.visualstudio.com/

Atom

Atom也是一个免费的开源IDE,用于多种语言。查找并下载Atom 这里:ide.atom.io/

获取代码

文档的这一部分假定您希望获取并使用关键的 EdgeX 服务。这包括但不限于核心、支持、某些安全和系统管理服务。要使用其他基于 Go 的安全服务、设备服务、应用程序服务、SDK、用户界面或其他服务,您可能需要拉入其他 EdgeX 存储库代码。请参阅其他入门指南,了解如何使用其他基于 Go 的服务。正如您将在下面看到的,您不需要显式拉入依赖项模块(无论是 EdgeX 还是第三方提供的),构建过程中依赖项将自动拉取。

要使用关键服务,您需要从EdgeX Go 仓库下载源代码。基于 EdgeX Go 的微服务可以在单个 GitHub 存储库下载中获得。提取代码后,Go 微服务被构建并打包为 依赖于平台的可执行文件。如果安装了 Docker,则可执行文件也可以容器化以供最终用户部署/使用。

要下载 EdgeX Go 代码,请先将目录更改为要下载代码的位置(下图中的 edgex)。然后使用您的git工具并使用以下命令请求克隆此存储库:

git clone https://github.com/edgexfoundry/edgex-go.git

图像

注意

如果您计划将代码贡献回 EdgeX 项目(作为 贡献者),您可以fork到您计划的存储库 使用 EdgeX 存储库,然后直接拉取您的fork。本文档不涉及过程和过程 用于使用 EdgeX fork、提交更改和提交 贡献拉取请求 (PR)。请参阅下面的一些链接 EdgeX Wiki 以获取有关如何fork分支和贡献 EdgeX 代码的帮助。

此外,这会从分支中提取并使用最新代码。分支包含即将发布的“正在进行”的代码。如果要使用特定版本,请从特定版本分支或标记(例如,,,等)中签出代码main``main``v2.0.0``hanoi``v1.3.11

构建 EdgeX Foundry

要构建在edgex-go中找到的Go Lang服务,首先将目录更改为edgex-go代码的根目录

cd edgex-go

其次,使用社区提供的Makefile将所有服务一键构建

make build

图像

提示

EdgeX 首次构建时,将比其他构建花费更长的时间 因为它必须下载所有依赖项。取决于大小 主机上,初始生成可能需要几分钟时间。确保构建 已完成且没有错误。如果生成成功,则在 /edgex-go/cmd文件夹下的每个服务文件夹中能够找到新的服务可执行文件 。

运行 EdgeX Foundry

运行数据库

一些EdgeX Foundry微服务用到了数据库。这包括核心数据、核心元数据、支持调度程序等。因此,使用EdgeX Foundry,最好启动数据库并运行起来。请参阅Redis 快速入门指南,了解如何在 Linux 环境中运行 Redis(或查找其他环境的类似文档)。

运行EdgeX 服务

随着服务的构建,数据库的启动和运行, 现在可以运行每个服务。在此示例中,服务将在未打开安全服务的情况下运行。如果您希望安全运行,则需要克隆、构建和运行安全服务。

为了关闭安全性,首先使用导出调用将环境变量设置为 false。EDGEX_SECURITY_SECRET_STORE

只需执行

export EDGEX_SECURITY_SECRET_STORE=false

接下来,移动到文件夹,然后将文件夹更改为要运行的服务的服务文件夹。启动该文件夹中的可执行文件(使用默认配置)。例如,要启动核心元数据,请输入 cmd/核心元数据文件夹并启动核心元数据。cmd

cd cmd/core-metadata/
./core-metadata &

图像

注意

从命令行运行服务时,通常需要在命令后跟 & 启动服务。这使命令在后台运行。如果不在后台运行服务,则需要让服务在终端中运行,并打开另一个终端以启动其他服务。

这将后台启动 EdgeX go 服务,直到您杀死它。来自服务的日志条目仍将显示在终端中。观察日志条目中是否有任何错误的提示。

信息

要终止服务,有多种选择,但一个简单的方法是将 pkill 与服务名称一起使用。

pkill core-metadata

根据需要启动尽可能多的服务,以便执行开发、测试等。作为绝对最小集,通常需要运行核心元数据、核心数据、核心命令和设备服务。设备服务的选择将取决于要使用的物理传感器或设备(或使用虚拟设备模拟传感器)。以下是启动核心数据core-data和核心命令core-command的命令集(除了上面的核心元数据)

cd ../core-data/
./core-data &
cd ../core-command/
./core-command &

提示

您可以通过 Docker 容器运行某些服务,同时在 Go 中处理特定服务。有关更多详细信息,请参阅在混合环境中工作

当 EdgeX 服务运行时,您可以对 EdgeX API 进行调用。

信息

目前还没有传感器数据流动,因为这只会启动和运行关键服务。要使传感器数据流入EdgeX,您需要以类似的方式获取、构建和运行EdgeX设备服务。社区提供虚拟设备服务来测试和 试验 (github.com/edgexfoundr…)。

验证 EdgeX 是否正常工作

每个 EdgeX 微服务都有一个对“ping”HTTP 请求的内置响应。在网络环境中,使用ping 请求检查网络资源的可访问性。EdgeX 使用相同的概念来检查微服务的可用性或可访问性。EdgeX 微服务运行后,您可以“ping”任何一个微服务以检查它是否正在运行。打开浏览器或 HTTP REST 客户端工具,并使用服务的 ping 地址(如下所述)检查是否可用。

http://localhost:[port]/api/v2/ping

有关 EdgeX 默认服务端口的列表,请参阅EdgeX 默认服务端口

image

“ping”EdgeX 微服务允许您检查其可用性。如果服务未响应 ping,则服务已关闭或出现问题。上面的例子显示了核心数据的ping。

后续步骤

应用程序服务和一些设备服务也内置在 Go 中。要探索如何在 Go 中创建和构建 EdgeX 应用程序和设备服务,请转到涵盖这些 EdgeX 元素的开发工具包文档。

位于GoLand的EdgeXFoundry

IDE 提供了许多代码编辑便利。Go Land 是专门为编辑和使用 Go 代码而构建的。因此,如果您正在使用 EdgeX Go 微服务进行任何重要的代码工作,您可能会发现从 GoLand 或其他 IDE 进行编辑、构建、运行、测试等非常方便。

导入EdgeX

要将 EdgeX 存储库代码引入 Go Land,请使用File→Open...菜单选项以打开打开文件或项目窗口。

image

在“Open File or Project”弹出窗口中,选择包含克隆的 edgex-go 存储库的文件夹的位置。

image

打开终端

从 Go Land 的“视图”菜单中,选择“终端”菜单选项。这将打开一个命令终端,您可以从中发出命令来安装依赖项、构建微服务、运行微服务等。

图像

构建 EdgeX 微服务

在终端视图中运行 “生成” (如图所示) 下面)来构建服务。这可能需要几分钟才能构建所有内容 服务。

image

就像在终端中从命令行运行 make build 一样,在 Go Land 终端中构建的微服务可执行文件将在 /edgex-go/cmd 文件夹中的服务目录下的每个服务文件夹中创建。

运行EdgeX

构建完所有微服务后,您现在可以运行 EdgeX 服务。您可能首先要确保数据库正在运行。然后,设置环境变量,将目录更改为 /cmd 和服务子文件夹,并直接从终端运行服务(与在运行 EdgeX 服务中相同)。

图像

现在可以调用服务 API 以确保它们正常运行。也就是说,调用查看每个服务响应最简单的请求。http://localhost:[service port]/api/v2/ping