Edge X Foundry框架-核心服务层配置与注册表

一    配置和注册表 Configuration and Registry


这块微服务是用来集中处理配置和注册表的,可以让配置和设定的参数贯穿整个架构,以及探测框架内为服务的位置和状态

作为配置管理器,配置和注册表微服务在启动微服务时向每个微服务提供配置信息,EdgeX Foundry微服务可以在没有配置和注册表微服务的情况下运行

在API中提供了服务注册,服务注销,服务发现,健康检查的功能的功能,具体查看

介绍一下配置部分,框架使用开源服务Consul构建了配置微服务,它提供了一个key和value store,客户端可以通过RESTful API访问EdgeX Foundry,在微服务启动时,客户端微服务尝试通过RESTful API访问配置微服务

Web用户界面

Web用户界面由Consul本地提供,路径:http://host:8500/ui


指导和参考:使用Consul开发Spring Boot应用程序

    Spring Cloud Consul子项目可以自动配置和绑定Spring Environment和其他Spring编程模型来为Spring Boot应用程序提供Consul集成。

步骤指南:

1.修改pom.xml以添加新的<dependency>和<dependencyManagement>标记

2.将一个bootstrap.properties添加到类路径中,并且至少需要包含一个名为“ spring.application.name ” 的属性来定义微服务ID。

另外,“ spring.cloud.consul.host ”和“ spring.cloud.consul.port ”定义Consul的地址和端口号。

将“ spring.cloud.consul.enabled ” 设置为false,可以禁用Spring Consul客户端功能并加载本地配置文件。

经过这两步,Spring Boot应用程序在启动时就会加载Consul的配置数据


将框架微服务部署在Docker上

    https://hub.docker.com/r/edgexfoundry/docker-core-consul/

通过命令“docker pull edgexfoundry/docker-core-consul”拉取Consul镜像

通过命令“docker run -p 8400:8400 -p 8500:8500 -p 8600:8600 --name edgex-core-consul --hostname edgex-core-consul -d edgexfoundry/docker-core-consul”使用Docker容器启动Consul


启动Consul并导入默认配置数据的步骤如下

1.登录到Docker Hub    $ docker login

2.搭建Docker network使其与另一个容器通信    $ docker network create edgex-network

3.为Fuse创建Docker volume 容器    $ docker run -it --name edgex-files --net=edgex-network -v /data/db -v /edgex/logs -v /consul/config -v /consul/data -d edgexfoundry/docker-edgex-volume

4.创建Consul容器    $ docker run -p 8400:8400 -p 8500:8500 -p 8600:8600 --name edgex-core-consul --hostname edgex-core-consul --net = edgex-network --volumes-from edgex-files -d edgex / docker-edgex-core-consul

5.创建容器运行core-config-seed来导入默认配置数据    $ docker run --name edgex-core-config-seed --net=edgex-network --volumes-from edgex-files -d edgexfoundry/docker-core-config-seed

6.验证结果    http://localhost:8500/ui

让我们把它运行在本机上吧

1.在https://www.consul.io/downloads.html上下载Consul

2.参照https://www.consul.io/intro/getting-started/install.html配置环境变量

3.执行命令    $ consul agent -data-dir ${DATA_FOLDER} -ui -advertise 127.0.0.1 -server -bootstrap-expect 1

其中${DATA_FOLDER}可以是放置Consul数据文件的任何文件夹,它需要读/写权限。



接下来我们看一下注册表部分

    大家都知道微服务依赖注册中心进行相互沟通,对此,Consul也提供了一个Web用户界面可以用来查看服务列表及其状况,默认位置是 http://localhost:8500/ui     点此查看详细内容

    在Docker上运行

1.注册表也被打包成Docker镜像发布在Docker Hub    https://hub.docker.com/r/edgexfoundry/docker-core-consul/

2.Docker准备好后,用户通过docker拉取命令下载Consul镜像    docker pull edgexfoundry/docker-core-consul

3.使用Docker命令启动Consul    docker run -p 8400:8400 -p 8500:8500 -p 8600:8600 --name edgex-core-consul --hostname edgex-core-consul -d edgexfoundry/docker-core-consul

启动Consul并导入默认配置数据的步骤

1.登陆到Docker Hub    $ docker login

2.需要Docker Network才能使两个两个Docker容器通信    $ docker network create edge-network

3.为此框架创建Docker volume容器    $ docker run -it --name edgex-files --net=edgex-network -v /data/db -v /edgex/logs -v /consul/config -v /consul/data -d edgexfoundry/docker-edgex-volume

4.创建Consul容器    docker run -p 8400:8400 -p 8500:8500 -p 8600:8600 --name edgex-core-consul --hostname edgex-core-consul --net=edgex-network --volumes-from edgex-files -d edgexfoundry/docker-core-consul

5.验证结果    http://localhost:8500/ui

在本地上跑起来的执行步骤,完全按照前面配置的部分执行就可以了


使用Spring框架通过几个步骤,在应用程序中启用和配置通用模式,并使用Consul构建大型分布式系统

1.修改pom.xml以添加新的<dependency>和<dependencyManagement>标记

2.通过指定“ spring.application.name ”属性来定义微服务ID 

另外,“ spring.cloud.consul.host ”和“ spring.cloud.consul.port ”定义Consul的地址和端口号。它们可以放在 boostrap.properties或 application.properties中, 这个微服务不会为它的配置加载consul Key / Value Store

3.将@EnableDiscoveryClient放入 Spring Boot应用程序类中。 

@EnableDiscoveryClient 使该应用程序变成注册自身的Consul“服务”和可以查询Consul来查找其他服务的“客户端”。

4.当客户向Consul注册时,它提供有关其自身的元数据,例如主机和端口,ID,名称和标签。

默认情况下,Consul创建一个HTTP检查, 每10秒到达一个 /运行状况端点 。如果运行状况检查失败,则将服务实例标记为关键。用户可以通过在配置中指定“ spring.cloud.consul.discovery.healthCheckPath ”和“ spring.cloud.consul.discovery.healthCheckInterval ”属性来更改这些属性。对于Consul用来检查健康终点的间隔,“10s”和“1m”分别代表10秒和1分钟。

例如,将配置放置在Consul Key / Value Store中

config/core-command/spring.cloud.consul.discovery.healthCheckPath = /ping
config/core-command/spring.cloud.consul.discovery.healthCheckInterval = 15s

遵循这四个步骤,Spring Boot应用程序应该在启动时自行注册,并且由Consul监视其健康状态。

借助Spring Cloud Feign依赖于pom.xml并将@FeignClients注释到Spring Boot应用程序类中,Spring Boot应用程序可以为其他微服务的RESTful接口实现客户端,并通过微服务ID发现其物理URL。

使用该服务的代码实例变量,通过注入Spring注释来定义带有微服务ID的客户端接口

Python开发示例

有两个客户端库可以用于Python

consulate: https://github.com/gmr/consulate    文档
python-consul: https://github.com/cablehead/python-consul    文档

本节展示了一个使用consulate在Consul中注册,查询和取消注册微服务的例子。

首先,使用您选择的工具通过Python包索引安装consulate。例如,使用pip:

然后,在每个需要的.py文件中导入consulate:

在应用程序初始化期间,它应该将自己注册到Consul。以下代码片段演示了如何使用consulate进行注册

第2行连接到默认端口号(8500)上的本地主机Consul服务器,第3行调用 Consul Agent RESTful API 来注册端点信息。consulate库使开发者容易与Consul协作。

以下代码片段演示了如何从Consul中注销,并且它应该放在应用程序关闭阶段。

以下代码片段演示了如何通过Consul的microservice ID找到端点信息:

以下代码片段演示了如何列出Consul中所有可用的微服务:


更多有关Edge X Foundry的内容请点击https://blog.csdn.net/winfanchen/article/category/7702798

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值