Consul实践之Consul是什么
admin
2023-01-22 12:42:49
0

上篇文章《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--

相关内容

热门资讯

美媒爆料:特朗普批准美国与沙特... 据凤凰卫视援引美国媒体报道,特朗普政府计划向国会提交一项美国和沙特阿拉伯共享核电技术的协议,协议将允...
中国游客印尼亲历沉船事故:漂流... 近日,刘女士向红星新闻记者反映,7月16日,其在印尼乘坐游轮旅行时,遇到了沉船事故,其与其他游客及船...
女子付款2分钟后申请退票,34... 暑假是出行高峰期,不少在外务工的家长会购飞机票接子女阖家团聚。云南籍的胡女士说,7月19日11点左右...
特朗普扬言要打掉的“镐山”是什... 美伊两国在霍尔木兹海峡持续交锋之际,美国总统特朗普多次放出狠话,威胁轰炸伊朗一处山体深处的在建核设施...
台湾将进行“汉光42号演习”,... 7月22日,国务院台湾事务办公室举行例行新闻发布会,发言人张晗就近期两岸热点问题回答记者提问。有记者...
油烟机单电机更换方法 油烟机是我们家庭生活中不可缺少的厨房电器,它可以有效地排除厨房中产生的油烟和异味。但是,油烟机经常使...
洗衣机波轮轴如何检修 洗衣机的波轮轴是洗衣机的重要组成部分,它是帮助洗衣机完成洗涤功能的核心部分。波轮轴一旦出现故障,将会...
空调开机跳闸原因检修方法 空调一开机就跳闸,常见的原因就是空调内部漏电造成短路了,这时开启空调后电闸就会迅速跳闸,起到保护家里...
洗衣机改装电机固定方法 洗衣机是现代家庭中必备的家电之一,它的核心部件是电机。随着时间的推移,洗衣机电机可能会失去稳定性或者...
西门子洗衣机水槽清洗方法是什么... 西门子洗衣机水槽清洗方法是什么?洗衣机水槽是容易藏污纳垢的地方,需定期清洁。清洁方式可以考虑以下几种...