微服务 - Consul(服务注册发现)


服务发现是什么

类似DNS服务器会根据我们的域名解析出一个Ip地址,然后去请求这个Ip来获取我们想要的数据,它可以让我们只需说我想要什么服务即可,而不必去关心服务提供者的具体网络位置(IP 地址、端口等)。
目前,服务发现主要分为两种模式,客户端模式与服务端模式
在客户端模式下,首先要到服务注册中心获取服务列表,然后使用本地的负载均衡策略选择一个服务进行调用。
而在服务端模式下,客户端直接向服务注册中心发送请求,服务注册中心再通过自身负载均衡策略对微服务进行调用后返回给客户端。
客户端模式相对来说比较简单,也比较容易实现,本文就先来介绍一下基于Consul的客户端服务发现。
在传统单体架构中,由于应用不会频繁的更新和发布,也不会进行自动伸缩,我们通常将所有的服务地址都直接写在项目的配置文件中,发生变化时,手动修改。但是在微服务模式下,服务会更细的拆分解耦,微服务会被频繁的更新和发布、动态伸缩、动态迁移。服务发现也就成了微服务中的一个至关重要的环节。

Consul简介

Consul是go语言开发的开源工具,用于实现分布式系统的服务发现与配置,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,使用起来较为简单。
Consul的安装包仅包含一个可执行文件,部署非常方便,直接从 官网) 下载即可。

Consul主要做三件事:

提供服务到ip地址的注册;提供服务到ip地址列表的查询;对提供服务方的健康检查(HealthCheck)

运行Consul:

consul.exe agent -dev -- 这是开发环境测试,生产环境要建集群,至少一台server、多台agent
http://127.0.0.1:8500 -- Consul监控页面