# 本人声明:
# 1、翻译来自官方网站原文。仅做个人学习。
# 2、个人能力十分有限,借助了翻译工具并作了修改和备注【ps:xxx】,但仍只能满足个人理解使用,错误和漏洞百出,希望读者指正批评。
# 3、官网地址:[EdgeX Foundry Documentation](https://docs.edgexfoundry.org/2.4/)
入门 - GO开发人员
介绍
这些说明适用于 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 默认服务端口。
“ping”EdgeX 微服务允许您检查其可用性。如果服务未响应 ping,则服务已关闭或出现问题。上面的例子显示了核心数据的ping。
后续步骤
应用程序服务和一些设备服务也内置在 Go 中。要探索如何在 Go 中创建和构建 EdgeX 应用程序和设备服务,请转到涵盖这些 EdgeX 元素的开发工具包文档。
- 应用程序服务和应用程序函数 SDK【ps:比如导出数据】
- Go 中的设备服务【ps:接入设备等】
位于GoLand的EdgeXFoundry
IDE 提供了许多代码编辑便利。Go Land 是专门为编辑和使用 Go 代码而构建的。因此,如果您正在使用 EdgeX Go 微服务进行任何重要的代码工作,您可能会发现从 GoLand 或其他 IDE 进行编辑、构建、运行、测试等非常方便。
导入EdgeX
要将 EdgeX 存储库代码引入 Go Land,请使用File→Open...菜单选项以打开打开文件或项目窗口。
在“Open File or Project”弹出窗口中,选择包含克隆的 edgex-go 存储库的文件夹的位置。
打开终端
从 Go Land 的“视图”菜单中,选择“终端”菜单选项。这将打开一个命令终端,您可以从中发出命令来安装依赖项、构建微服务、运行微服务等。
构建 EdgeX 微服务
在终端视图中运行 “生成” (如图所示) 下面)来构建服务。这可能需要几分钟才能构建所有内容 服务。
就像在终端中从命令行运行 make build 一样,在 Go Land 终端中构建的微服务可执行文件将在 /edgex-go/cmd 文件夹中的服务目录下的每个服务文件夹中创建。
运行EdgeX
构建完所有微服务后,您现在可以运行 EdgeX 服务。您可能首先要确保数据库正在运行。然后,设置环境变量,将目录更改为 /cmd 和服务子文件夹,并直接从终端运行服务(与在运行 EdgeX 服务中相同)。
现在可以调用服务 API 以确保它们正常运行。也就是说,调用查看每个服务响应最简单的请求。http://localhost:[service port]/api/v2/ping