随着微服务的风潮的来临,服务注册和发现成了微服务架构中不可或缺的一部分。想象一下,你的系统被拆分成了n个独立的服务,相互直接的调用如果还是使用传统的配置文件来解决的话,管理起来可就违背了微服务的初衷。本篇文章注重介绍一下consul 使用。

consul与其他常见的服务发现框架对比

zookeeper是一款基于Java的强大的框架,优点是不只是可以做服务发现,他提供了watcher机制可以实时获取服务提供者的从状态,缺点是没有健康检查,他是复杂度高,通过sdk提供服务

etcd是一款相对轻巧的服务框架,他的优点是简单易用,可配置性强,缺点是没有健康检查,需要配合其他服务完成服务发现。

consul相对两者而言,由于是go编译的,不需要安装依赖,即插即用,同时指出http和dns的方式完成操作接口,而且提供了web页面,缺点是不能实时获取服务信息的变化通知。

consul的几个概念

Gossip 疫情传播算法,他是以生活中的电脑传播的,森林大火等方式进行传播,详细介绍可参考https://www.jianshu.com/p/8279d6fd65bb。consul通过Gossip来保证分布式的最终一致性。

Server和Client,其实都是consul运行的实例,区别是Server维护consul状态信息,负责持久化数据,Client只维护自身的状态, 并将 HTTP 和 DNS 接口请求转发给服务端。Server建议配置3或5个,当Server leader挂掉的时候,会有选举算法推举出新的leader。Client可以根据需求进行无限扩展。

consul实战

1,安装docker,未安装可参考https://blog.csdn.net/JiuJieGuDuKe/article/details/100581909

2,docker启动Server和Client

docker pull consul 拉取镜像

#启动第1个Server节点,集群要求要有3个Server,将容器8500端口映射到主机8900端口,同时开启管理界面
docker run -d --name=consul1 -p 8900:8500 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --bootstrap-expect=3 --client=0.0.0.0 -ui
 
#启动第2个Server节点,并加入集群
docker run -d --name=consul2 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 172.17.0.2
 
#启动第3个Server节点,并加入集群
docker run -d --name=consul3 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 172.17.0.2
 
#启动第4个Client节点,并加入集群
docker run -d --name=consul4 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=false --client=0.0.0.0 --join 172.17.0.2

3,测试注册服务

使用postman或者curl等工具发送注册服务请求

http://ip:8900/v1/health/service/mysql1

put请求数据

{
  "ID": "mysql1",
  "Name": "mysql1",
  "Tags": [
    "primary",
    "v1"
  ],
  "Address": "ip",
  "Port": 3306,
  "Meta": {
    "redis_version": "4.0"
  },
  "EnableTagOverride": false,
  "Check": {
    "id": "mysql1",  
    "name": "mysql1",  
    "tcp": "ip:3306",  
    "interval": "10s",  
    "timeout": "1s"  
  },
  "Weights": {
    "Passing": 10,
    "Warning": 1
  }
}

查看服务状态http://ip.144:8900/v1/health/service/mysql1

4 web ui页面

打开 http://ip:8900/ui/dc1/services 可以查看相关服务的状态

5 consul template

consul官方提供了模板工具,可以通过标签的方式来获取服务状态,详情参考https://github.com/hashicorp/consul-template

consul-服务注册与发现相关推荐

  1. Consul 服务注册与发现一站式解决方案

    Consul 服务注册与发现一站式解决方案 参考文章: (1)Consul 服务注册与发现一站式解决方案 (2)https://www.cnblogs.com/seattle-xyt/p/103660 ...

  2. SpringCloud从入门到放弃 03 ——Consul服务注册与发现

    文章目录 SpringCloud从入门到放弃 03 --Consul服务注册与发现 一.Consul简介 1.什么是consul 2.consul能做什么 二.安装并运行Consul 1.下载安装 2 ...

  3. Consul服务注册与发现

    Consul服务注册与发现 1.Consul简介 1.1 什么是Consul? 1.2 Consul能干什么? 1.3 下载Consul 2.安装并运行Consul 2.1 官网安装说明 2.2 使用 ...

  4. .NET Core + Consul 服务注册与发现

    在分布式架构中,服务治理是必须面对的问题,如果缺乏简单有效治理方案,各服务之间只能通过人肉配置的方式进行服务关系管理,当遇到服务关系变化时,就会变得极其麻烦且容易出错. Consul[1] 是一个用来 ...

  5. java consul服务发现_分布式项目(七)consul 服务注册与发现

    说到分布式自然就离不开分布式和微服务的话题,简单聊一下. 微服务是一种软件架构方式,或者说一个一种结构设计风格,它并不是标准,它的逻辑是把一个整体服务按业务拆分成不同独立的服务,降低服务强依赖,消服务 ...

  6. Spring Cloud入门 -- Consul服务注册与发现(Hoxton.SR5版)

    Consul简介 Consul 是 HashiCorp 公司推出的开源产品,用于实现分布式系统的服务发现.服务隔离.服务配置,这些功能中的每一个都可以根据需要单独使用,也可以同时使用所有功能.Cons ...

  7. 七、consul服务注册与发现

    1.Consul简介 是什么? Consul是一套开源的分布式服务发现的配置管理系统,由HashiCorp用go语言开发 提供了微服务系统中的服务治理,配置中心,控制总线等功能.这些功能中的每一个可以 ...

  8. consul服务注册与发现机制

    注册中心引入 最近,网关服务让下游服务接入consol,为了解决网关转发下游服务,下游服务刚好有节点不可用,转发到不可用的节点上报错.针对分布式多节点,上面的问题常会发生,就引入了注册中心. 那什么是 ...

  9. php consul 服务注册,CentOS 安装 Consul 服务注册和发现软件

    1,关于Consul Consul 简化了分布式环境中的服务的注册和发现流程,通过 HTTP 或者 DNS 接口发现. 有了很多实用的功能. 一致性协议采用 Raft 算法,来保证服务的高可用. 项目 ...

  10. Consul 服务注册与发现03—— 服务消费者

    pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

最新文章

  1. 数据表格搜索php代码_手把手教学:提取PDF各种表格文本数据(附代码)
  2. 添加文件然后自动打开
  3. win32按钮按下不弹起_为什么厨房插座都不装五孔插座了?听电工一说,懊悔没早知道...
  4. 前端开发者正在被迫成为全栈开发人员
  5. java高级-----流
  6. Exchange Server 2013部署系列之一:部署环境介绍
  7. CSDN免费快速获得积分和直接获取下载码的几个办法,亲测有效区
  8. 用优启通制作U盘启动盘教程(UEFI版)
  9. windows10 查看.theme文件
  10. 树莓派的img文件怎样在vmware虚拟机里面打开
  11. [SSL_CHX][2021-8-18]取余
  12. 《逆商:我们该如何应对坏事件》201903
  13. 安搭Share为您推荐学理财投资必读的书籍
  14. 信道编码算法的发展和应用
  15. P2P的资金托管方式 参考
  16. Angular慕课网
  17. 马踏棋盘 (30 分)
  18. CAN总线常见问题解答
  19. 相关性质和条件变量-ReentrantLock详解(2)-AQS-并发编程(Java)
  20. ChatGPT Plus价格太贵,可以约上三五知己一起上车体验一下,这个项目就能帮到你

热门文章

  1. 卷尺系列控件,包含:普通卷尺(如:体重)、金额尺、时间尺
  2. druid连接oracle配置
  3. python中全局变量和局部变量详解
  4. windows下c语言删除文件夹
  5. C语言:数组求和例题!
  6. matlab 文件打开方式,mex文件和mat文件打开方式
  7. 激光灯 | 大致几种通讯方式
  8. PhotoShop使用记录
  9. 关于mysql的英文期刊_[转载]口腔英文杂志、收录数据库、参考信息汇总
  10. Windows Server 2016 IIS无法启用W3SVC或IIS应用池状态未知服务无法启动