服务发现是基于微服务架构的关键原则之一。尝试配置每个客户端或某种形式的约定可能非常困难,可以非常脆弱。Consul通过HTTP API和DNS提供服务发现服务。Spring Cloud Consul利用HTTP API进行服务注册和发现。这不会阻止非Spring云应用程序利用DNS界面。Consul代理服务器在通过八卦协议进行通信的群集中运行,并使用筏式协议协议。

文章参考:

https://www.jianshu.com/p/28c6bd590ca0

http://blog.csdn.net/y435242634/article/details/78639663

Consul 四大特性

  1. Service Discovery (服务发现)
  2. Health Check (健康检查)
  3. Multi Datacenter (多数据中心)
  4. Key/Value Storage

Consul相关知识点

Agent

  1. Agent 是一个守护进程
  2. 运行在Consul集群的每个成员上
  3. 有Client 和 Server 两种模式
  4. 所有Agent都可以被调用DNS或者HTTP API,并负责检查和维护同步

Client

  1. Client 将所有RPC请求转发至Server
  2. Client 是相对无状态的
  3. Client 唯一做的就是参与LAN Gossip Pool
  4. Client 只消耗少量的资源和少量的网络带宽

Server

  1. 参与 Raft quorum(一致性判断)
  2. 响应RPC查询请求
  3. 维护集群的状态
  4. 转发查询到Leader 或 远程数据中心

Datacenter数据中心

  1. 私有的
  2. 低延迟
  3. 高带宽

Consensus (一致性)

Consul 使用consensus protocol 来提供CAP(一致性,高可用,分区容错性)

Gossip

一种协议: 用来保证 最终一致性 , 即: 无法保证在某个时刻, 所有节点状态一致, 但可以保证”最终”一致

启动Consul

Consul安装之后,代理必须运行。 代理可以在服务器或客户端模式下运行。 每个数据中心都必须至少有一台服务器,但推荐使用3台或5台服务器。 一个单一的服务器部署是非常不推荐的,因为在故障情况下数据丢失是不可避免, 所有其他代理以客户端模式运行。 客户端是一个非常轻量级的进程,它注册服务,运行健康检查,并将查询转发给服务器。 代理程序必须在集群中的每个节点上运行。

下面介绍几个命令:

consul agent -dev  以开发模式启动代理,不会持久化信息

consul members  查看集群成员

注册服务

服务可以通过提供服务定义或通过对HTTP API进行适当的调用来注册。
服务定义是注册服务最常用的方式,所以我们将在这一步中使用这种方法。 我们将建立在上一步中介绍的代理配置。
首先,为Consul配置创建一个目录。 Consul将所有配置文件加载到配置目录中,因此Unix系统上的一个通用约定是将目录命名为/etc/consul.d(.d后缀意味着“该目录包含一组配置文件”)。

建立服务配置目录:mkdir /etc/consul.d
添加文件:echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' | sudo tee /etc/consul.d/web.json

以开发模式启动:consul agent -dev -config-dir=/etc/consul.d
以服务方式启动:consul agent -server -bootstrap-expect 2 -data-dir ./tmp/consul -node=n1 -bind=192.168.109.241 -ui-dir ./dist -dc=dc1
以客户端方式启动:consul agent -data-dir ./tmp/consul -ui-dir ./dist -bind=192.168.109.204 -dc=dc1

加入集群

将新节点添加到集群:consul join 192.168.100.101(其中101这个节点是master)

显示成员:consul members

查看UI管理页面

http://localhost:8500

待续...

 

微服务~Consul服务注册与发现相关推荐

  1. 微服务 - Consul服务注册中心

    概述 上篇说到构建良好的架构,依托于基础设施建设(自动化测试.自动化部署.服务监控,服务发现.配置中心等等),决定成败的往往是基础设施建设,所以从搭建一个注册中心和配置中心开始我们新一阶段的启程. 注 ...

  2. springcloud微服务系列之服务注册与发现组件Eureka

    一.Eurake的简介 二.使用Eureka进行服务的注册消费 1.创建一个服务注册中心 2.创建服务的提供者 3.创建服务的消费者 总结 一.Eurake的简介 今天我们来介绍下springclou ...

  3. 微服务系列:服务发现与注册-----Eureka(面试突击!你想了解的Eureka都在这里.持续更新中......)

    1.什么是落地SOA(面向服务架构)? SOA面向服务架构,是一种架构思想,是跨语言和平台的.SOA宗旨简单明了,根据项目服务完成架构搭建,以服务为基准点完成组件化和模块化.提供服务是项目的基本内容, ...

  4. 源码分析Dubbo服务注册与发现机制RegistryDirectory)

    RegistryDirectory,基于注册中心的服务发现,本文将重点探讨Dubbo是如何实现服务的自动注册与发现.从上篇文章,得知在消息消费者在创建服务调用器(Invoker)[消费者在初始时]时需 ...

  5. 【微服务】服务之间的调用方式

    文章目录 常见的远程调用方式有两种 RPC和HTTP对比 RPC有几个特点 HTTP其实就是一种网络传输协议 微服务之间相互调用的三种最常见方式 RestTemplate方式 引入Nacos注册中心 ...

  6. consul 日志配置_微服务:服务注册发现+ API 网关+配置中心+服务跟踪+服务熔断...

    服务注册发现 服务注册就是维护一个登记簿,它管理系统内所有的服务地址.当新的服务启动后,它会向登记 簿交待自己的地址信息.服务的依赖方直接向登记簿要 Service Provider 地址就行了.当下 ...

  7. Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...

  8. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)

    原文:.NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一) Consul介绍 Consul是HashiCorp公司推出的开源工具[开源地址:https://github.c ...

  9. Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)

    Spring Cloud Eureka VS Consul构建微服务架构 -- 服务注册与发现 一.Spring Cloud Eureka Spring Cloud Eureka是Spring Clo ...

  10. 《深入理解 Spring Cloud 与微服务构建》第十二章 服务注册和发现 Consul

    <深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发现 Consul 文章目录 <深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发 ...

最新文章

  1. 趣谈网络协议笔记-二(第十八讲)
  2. SanFeng-Clound
  3. 用Virtual PC 2007安裝Fedora Core 9
  4. iOS: 在代码中使用Autolayout (1) - 按比例缩放和优先级
  5. linux中w命令参数详解
  6. flink sql是否支持emit策略
  7. idea 2个配置 实时编译 autowire注解错
  8. qt设置鼠标追踪后,鼠标还是需要点击后才能变样式
  9. 查询列名在哪张表_探索SQL-多表查询
  10. 用 Crontab 进行简单的备份日志任务计划
  11. java连接数据库的基本操作
  12. C++ STL list容器中元素的存取和访问
  13. 淮阴工学院计算机系在哪个校区,2021年淮阴工学院有几个校区,大一新生在哪个校区...
  14. Intellij IDEA 14.x 菜单项中Compile、Make和Build的区别
  15. c语言程序该不该背,C语言程序设计学习技巧
  16. 程序员必须收藏的网站整理(持续更新)
  17. 21个小故事,21个启示
  18. ubuntu18.04系统外接显卡(英伟达RTX 2080 Ti)驱动安装
  19. linux下deb安装包的运行
  20. 风影墙纸,一天看N回。

热门文章

  1. 神奇的G1——Java全新垃圾回收机制
  2. 6.1 tensorflow2实现WideDeep推荐系统——Python实战
  3. 3分钟tips:什么是特征向量?什么是特征值?
  4. 机器学习之特征选择(feature_selection)
  5. aux 参数 linux,Linux下ps aux解释
  6. 力扣-525 连续数组
  7. 蓝桥杯2017年第八届C/C++省赛B组第三题-承压计算
  8. 【报错】table burner has no column named USER (code 1): , while compiling: INSERT INTO burner(USER,YELL
  9. Java50道经典习题-程序7 处理字符串
  10. 【转】Swig 使用指南