Consul实践之Consul是什么

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dgd2010.blog.51cto.com/1539422/1730263

上篇文章《Consul实践之相关计划与相关问题》给Consul的相关事情开了个头,这篇文章首先回答Consul是什么的问题。文中难免有一些关于Consul以及其他的某些知识需要提前了解,文中还可能有些比较难以理解的词汇或者说法,还请批评指正&留言询问。

A. Consul是什么?

Consul是一个两年前由hashicorp组织发起的开源项目,因此至今有两年以上的历史。Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。Consul有一组组件,因此能提供多种功能,目前主要的功能就是服务发现,其他的附加功能,比如自动编排,key-value数据库等,暂时归属为附加价值。

服务发现(service discovery)与简单服务发现协议有概念相似之处,目前还没有比较好的解释。根据个人理解,服务发现就是将自己(己方)已知的的服务信息(服务包含许多服务信息,如IP地址、端口号、路径名称等等,这些信息通常会以某种特定的格式(数据交换格式)存储)以主动或被动的方式告知需要知道的那一方。至于谁是己方,谁是对方,根据实际来定。在Consul的服务发现定义中,应用服务(如Web服务、数据库服务、Redis服务等)在向Consul服务注册的过程中是作为提供服务方(具体是由Consul Agent实现的,后面会提到),Consul是接受服务方,服务信息由Consul Agent提供给Consul Server。在除了向Consul服务注册的过程的其他过程中可能会反过来,Consul Server可能会主动质询Consul Agent。

先举一个虚拟的例子。

例如邮递员去某公司一栋大楼投递快件,向门卫询问员工甲在哪一个房间,门卫拿起桌上的通讯录查询,告知邮递员员工甲在具体什么位置。假如公司来了一个员工乙,他想让邮递员送过来,就要先让门卫知道自己在哪一个房间,需要去门卫那边登记,员工乙登记后,当邮递员向门卫询问时,门卫就可以告诉邮递员员工乙的具体位置。门卫知道员工乙的具体位置的过程就是服务发现,员工乙的位置信息可以被看作服务信息,门卫的通讯录就是上文中提到的数据交换格式,此例中员工乙就是上文的已方,门卫就是服务发现的提供者。

再举一个实际的例子。

最终用户向某个网站A提交用户信息,这个网站要先从其他网站B上获取这个用户在网站B的其他信息,而其他网站B上的服务模块是有多个的,也就是说网站B的后端还有其他提供服务的其他服务模块b1、b2、b3、bn...。那么网站B是如何把这些其他提供服务的其他服务模块b1~bn的信息整合进来呢?此时在网站B的可以借助Consul来实现。网站B上服务模块将自己的服务信息告诉Consul,并且有Consul检测服务模块的健康状态,当服务模块不可用时将此服务模块从Consul中移除,当网站B需要从这些服务模块来提供服务时,就从Consul上获取服务模块的信息,或者由Consul主动告诉网站B有哪些服务模块可以使用以及这些可用的服务模块的信息是什么。

借助Consul,被服务者可以从Consul那里获得到提供服务者提供了哪些可用的服务、应用。这些服务、应用是随时可以添加或移除的,借助负载均衡设备或软件可以非常容易实现高可用、可扩展的、弹性的应用服务架构。

B. Consul解决了什么问题?

Consul解决了动态提供服务信息、动态更改服务配置的问题。Consul可像Dubbo一样,解决Dubbo能解决的一些问题,如“服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。”

Consul还能解决其他问题,可以参见下方的“Consul可以应用到哪些场景?”

C. Consul可以应用到哪些场景?

  • 在已有的应用的基础上,经过简单一些修改,Consul就可以非常容易的构建高可用、可扩展的服务系统或提高系统的可用性、可扩展性。
  • 借助Consul可以实现配置共享,需要读取配置的服务可以从Consul中读取到准确的配置信息。
  • 借助Consul,可以使得第三方应用更轻松的集成自己开发的应用,可以第三方提供更清晰的服务接口声明、保证可用的服务信息。
  • Consul可以整合多种环境,能将复杂系统中的多种环境整合到一起,开发者或者用户不需要关心系统的复杂性和多种组件之间的复杂联系,通过Consul可以直接查询获得自己可以使用哪些服务。比如系统中有些数据库可以使用,有哪些redis可以使用。
  • Consul可以帮助系统管理者更清晰的了解复杂系统内部的系统架构,运维人员可以将Consul看成一种监控软件,也可以看成一种资产(资源)管理系统。

关于Consul部署的环境要求。Consul可以部署在物理机环境、也可以部署在操作系统虚拟化环境、也可以部署到Docker(应用虚拟化)环境,也可以部署物理机、虚拟机和Docker三种环境都有的混合环境中。

Consul是支持多数据中心的,多个数据中心要求每个数据中心都要安装一组Consul Cluster,每一个Consul Cluster中有一个Server,Server与另一个数据中心的server建立连接,根据Consul 架构的描述(点这里,CONSUL ARCHITECTURE),Consul实现多个数据中心依赖于gossip protocol协议,不需要依赖于除了Consul外的其他的组件。

Consul易于使用,可供多种角色人员使用,使用Consul的可以是系统运维管理人员、软件开发人员以及其他相关的技术人员。

D. Consul的更多信息

  1. 可以参考Consul的官方网站和其他网站上提供的信息。本文列举一些可用参考的资源如下:
  2. Consul官方网站 https://www.consul.io/
  3. Consul Github地址 https://github.com/hashicorp/consul 
  4. Consul-template Github地址 https://github.com/hashicorp/consul-template
  5. Consul官方介绍 https://www.consul.io/intro/index.html
  6. Consul 系统架构 https://www.consul.io/docs/internals/architecture.html
  7. Consul与其他开源软件或解决方案的对比 https://www.consul.io/intro/vs/
  8. Dubbo用户指南 http://dubbo.io/Home-zh.htm 通过此指南可以了解Dubbo是什么,能做什么
  9. 借助 Consul 和 Docker 支持即插即用的服务发现 (service discovery)http://www.ibm.com/developerworks/cn/cloud/library/cl-plug-and-play-service-discovery-with-consul-and-docker-bluemix/
  10. 使用Terraform与Consul自动化现代数据中心 http://www.infoq.com/cn/news/2015/05/hashimoto-modern-datacenter
  11. 基於swarm+consul+nginx達到HA和auto scaling的架構 http://genchilu-blog.logdown.com/posts/317095-based-on-swarm-and-consul-ha-and-dynamically-extensible-architectures
  12. 使用Docker、Registrator、Consul、Consul Template和Nginx实现高可扩展的Web框架http://dockone.io/article/272
  13. Consul入门 http://blog.csdn.net/viewcode/article/details/45915179
  14. Consul多数据中心配置 https://www.consul.io/docs/guides/datacenters.html
  15. consul实践 http://blog.sina.com.cn/s/blog_72ef7bea0102vuc5.html

 

tag: Consul是什么,Consul能做什么,Consul应用场景,Consul解决方案,Consul系统架构

--end--

本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1730263

时间: 2024-07-29 05:38:08

Consul实践之Consul是什么的相关文章

Consul实践之Consul结合nginx构建高可用可扩展的Web服务

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1730439 前文<Consul实践之Consul是什么>讲述了consul是什么,这篇文档是一个Consul实际应用的一个例子,用Consul结合nginx构建高可用可扩展的Web服务.Consul还能做许多其他的事情,可以根据实际需要构思和使用. 方案概述 nginx提供的负载均衡服务同样支持高可用.可扩展的W

Consul实践之Consul常见应用场景及方案梳理(FAQ)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1731788 Consul实践之Consul常见应用场景及方案梳理(FAQ),这篇文章用来回答一些在文章<Consul实践之相关计划与相关问题>中提到的一些问题.本方案整理参考依据于<使用Consul和Registrator实现Docker容器服务发现>英文原文<SERVICE DISCOVERY

Consul+Prometheus系统监控之注册发现

缘起 前面几篇文章分别对系统服务.MySql以及Redis相关软件做了监控预警,但是大家有没有发现,在prometheus.yml里配置需要监听的服务时,我们需要按服务名手动写入,也就是说以后每增加一个服务,就得手动修改此配置,并重启promethues服务. 那么我们如何做到动态的监听服务呢?相信不少接触过分布式框架Dubbo的小伙伴们都知道它是靠zookeeper做注册监听的,最近比较流行的Spring Cloud Netflix的Eureka,consul也是比较常用的注册中心. 参考官方

基于Nginx和Consul构建高可用及自动发现的Docker服务架构

本文讲的是基于Nginx和Consul构建高可用及自动发现的Docker服务架构[编者的话]本文对于Docker和Consul Template以及Nginx如何结合使用做了较为详细的介绍. [上海站|3天烧脑式微服务架构训练营]培训内容包括:DevOps.微服务.Spring Cloud.Eureka.Ribbon.Feign.Hystrix.Zuul.Spring Cloud Config.Spring Cloud Sleuth等. 导读 如果你在大量接触或使用微服务的话,你可能会碰到一个问

Docker结合Consul实现的服务发现(二)

本文讲的是Docker结合Consul实现的服务发现(二),[编者的话]这是Docker结合Consul实现服务发现系列文章的第二篇,在本文中,作者引入了HAproxy,并且利用Consul的EnvConsul及ConsulTemplate特性实现了对服务发现一些周边功能的支持. 那么,欢迎来到"Docker结合Consul实现的服务发现"系列的第二部分.在这第二篇里,我们将一起来看看你该如何使用Consul相关的系列工具,以使得服务发现其他的周边功能更容易实现. 想要了解本系列的其他

利用redis-sentinel+consul实现redis高可用

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1745314 在前文<利用redis-sentinel+keepalived实现redis高可用>详细描述了利用redis-sentinel+keepalived实现redis高可用的方案.本文中redis-sentinel的应用场景也是一样的,也是提供Redis单实例服务,当某Redis(master)服务意外停

服务发现:Zookeeper vs etcd vs Consul

本文讲的是服务发现:Zookeeper vs etcd vs Consul,[编者的话]本文对比了Zookeeper.etcd和Consul三种服务发现工具,探讨了最佳的服务发现解决方案,仅供参考. 如果使用预定义的端口,服务越多,发生冲突的可能性越大,毕竟,不可能有两个服务监听同一个端口.管理一个拥挤的比方说被几百个服务所使用的所有端口的列表,本身就是一个挑战,添加到该列表后,这些服务需要的数据库和数量会日益增多.因此我们应该部署无需指定端口的服务,并且让Docker为我们分配一个随机的端口.

使用C# 和Consul进行分布式系统协调

随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.今天我们就来看看如何使用C# ,利用开源对分布式服务做协调. 在对分布式的应用做协调的时候,主要会碰到以下的应用场景: 业务发现(service discovery) 找到分布式系统中存在那些可用的服务和节点 名字服务 (name service) 通过给定的名字知道到对应的资源 配置管理 (configuration management) 如何在

分布式服务consul介绍及C#和Consul进行分布式系统协调

分布式服务注册和发现consul 简要介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框 架.分布一致性协议实现.健康检查.Key/Value存储.多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等).使用起来也较 为简单.Consul用Golang实现,因此具有天然可移植性(支持Linux.windows和Mac OS X):安装包仅包含一个