Consul实践之Consul是什么

发布时间:2020-06-02 19:44:49 作者:urey_pp
来源:网络 阅读:32247

上篇文章《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可以部署在物理机环境、也可以部署在操作系统虚拟化环境、也可以部署到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--

推荐阅读:
  1. HashiCorp Consul Connect 初探
  2. Consul实践之相关计划与相关问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

consul是什么 consul能做什么 consul应用场景

上一篇:php网络名片系统源码免费电子云名片3.2版

下一篇:mysql表分区实验总结

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》