基于Docker + Consul + Registrator的服务注册与发现集群搭建

前言

近年微服务架构在互联网应用领域中愈来愈火,引入微服务主要解决了单体应用多个模块的紧耦合无法扩展运维困难等问题。微服务架构就是按照功能粒度将业务模块进行垂直拆分,对单体应用本身进行服务化组件化,每个组件单独部署为小应用(从DB到UI)。微服务与微服务之间通过Service API进行交互,同时为了支持水平扩展性能提升服务可用性,单个服务允许同时部署一个或者多个服务实例。在运行时,每个实例通常是一个云虚拟机或者Docker容器

微服务系统内部多个服务的实例之间如何通信?如何感知到彼此的存在和销毁?生产者服务如何知道消费者服务的地址?如何实现服务与注册中心的解耦?这就需要一个第三方的服务注册中心,提供对生产者服务节点的注册管理和消费者服务节点的发现管理。


正文

1. 服务发现与注册

1.1. 具体流程

  • 服务注册中心:作为整个架构中的核心,要支持分布式持久化存储注册信息变动实时通知消费者。
  • 服务提供者:服务以 docker 容器化方式部署(实现服务端口动态生成),可以通过 docker-compose 的方式来管理。通过 Registrator 检测到 docker 进程信息以完成服务的自动注册
  • 服务消费者:要使用服务提供者提供的服务,和服务提供者往往是动态相互转位置的。

一个较为完整的服务注册与发现流程如下:

  1. 注册服务:服务提供者到注册中心注册
  2. 订阅服务:服务消费者到注册中心订阅服务信息,对其进行监听
  3. 缓存服务列表:本地缓存服务列表,减少与注册中心的网络通信;
  4. 调用服务:查找本地缓存,找不到再去注册中心拉取服务地址,然后发送服务请求;
  5. 变更通知:服务节点变动时 (新增删除等),注册中心将通知监听节点,更新服务信息。

1.2. 相关组件

一个服务发现系统主要由三部分组成:

  1. 注册器(registrator):根据服务运行状态,注册/注销服务。主要要解决的问题是,何时发起注册/注销动作。
  2. 注册表(registry):存储服务信息。常见的解决方案有zookeeper、etcd、cousul等。
  3. 发现机制(discovery):从注册表读取服务信息,给用户封装访问接口。

1.3. 第三方实现

对于第三方的服务注册与发现的实现,现有的工具主要有以下三种:

  1. zookeeper:一个高性能、分布式应用程序协调服务,用于名称服务、分布式锁定、共享资源同步和分布式配置管理。
  2. Etcd:一个采用HTTP协议的健/值对存储系统,主要用于共享配置和服务发现,提供的功能相对Zookeeper和Consul相对简单。
  3. Consul:一个分布式高可用的服务发现和配置共享的软件,支持服务发现与注册、多数据中心、健康检查和分布式键/值存储。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值