千家信息网

Consul实践之Consul是什么

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,上篇文章《Consul实践之相关计划与相关问题》给Consul的相关事情开了个头,这篇文章首先回答Consul是什么的问题。文中难免有一些关于Consul以及其他的某些知识需要提前了解,文中还可能有些
千家信息网最后更新 2025年12月02日Consul实践之Consul是什么

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

服务 信息 网站 系统 数据 模块 应用 门卫 员工 环境 数据中心 就是 问题 配置 人员 地址 多种 架构 用户 邮递员 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器拥挤英文 长沙要玩网络技术有限公司 波音在软件开发商错在哪里 用友t3没有数据库服务 一个千万级数据库查找效率 数据库技术与程序设计答案 我的世界服务器验证 整机柜服务器维修报价表 m3服务器是什么意思 南京笑佳软件开发有限公司 数据库不知道在哪张表 一位互联网老兵的科技兴国梦 鲁泰软件开发面试 网络安全报警级别 数据库自动备份命令 数据库课程设计系统功能分析 软件开发要求规定 数据库表里面中文字段导出乱码 布武网络技术杭州有限公司 计算机网络技术专业的相关专业 1u服务器规格 网络安全售前工程师工资高吗 山西短信服务器号码云主机 网络安全风险评估技术研究 星网锐捷服务器密码 网络安全的防范措施都有啥 安徽深网网络技术有限公司 深圳腾飞软件开发有限公司 完美平台登录显示连接服务器失败 玉林首选dns服务器
0