consul是一个两年前由hashicorp组织发起的开源项目,因此至今有两年以上的历史。consul由go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。consul有一组组件,因此能提供多种功能,目前主要的功能就是服务发现,其他的附加功能,比如自动编排,key-value数据库等,暂时归属为附加价值。
先举一个虚拟的例子。
例如邮递员去某公司一栋大楼投递快件,向门卫询问员工甲在哪一个房间,门卫拿起桌上的通讯录查询,告知邮递员员工甲在具体什么位置。假如公司来了一个员工乙,他想让邮递员送过来,就要先让门卫知道自己在哪一个房间,需要去门卫那边登记,员工乙登记后,当邮递员向门卫询问时,门卫就可以告诉邮递员员工乙的具体位置。门卫知道员工乙的具体位置的过程就是服务发现,员工乙的位置信息可以被看作服务信息,门卫的通讯录就是上文中提到的数据交换格式,此例中员工乙就是上文的已方,门卫就是服务发现的提供者。
再举一个实际的例子。
最终用户向某个网站a提交用户信息,这个网站要先从其他网站b上获取这个用户在网站b的其他信息,而其他网站b上的服务模块是有多个的,也就是说网站b的后端还有其他提供服务的其他服务模块b1、b2、b3、bn...。那么网站b是如何把这些其他提供服务的其他服务模块b1~bn的信息整合进来呢?此时在网站b的可以借助consul来实现。网站b上服务模块将自己的服务信息告诉consul,并且有consul检测服务模块的健康状态,当服务模块不可用时将此服务模块从consul中移除,当网站b需要从这些服务模块来提供服务时,就从consul上获取服务模块的信息,或者由consul主动告诉网站b有哪些服务模块可以使用以及这些可用的服务模块的信息是什么。
借助consul,被服务者可以从consul那里获得到提供服务者提供了哪些可用的服务、应用。这些服务、应用是随时可以添加或移除的,借助负载均衡设备或软件可以非常容易实现高可用、可扩展的、弹性的应用服务架构。
consul解决了动态提供服务信息、动态更改服务配置的问题。consul可像dubbo一样,解决dubbo能解决的一些问题,如“服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的ip地址,并且能够平滑添加或删除服务提供者。”
consul还能解决其他问题,可以参见下方的“consul可以应用到哪些场景?”
在已有的应用的基础上,经过简单一些修改,consul就可以非常容易的构建高可用、可扩展的服务系统或提高系统的可用性、可扩展性。
借助consul可以实现配置共享,需要读取配置的服务可以从consul中读取到准确的配置信息。
借助consul,可以使得第三方应用更轻松的集成自己开发的应用,可以第三方提供更清晰的服务接口声明、保证可用的服务信息。
consul可以整合多种环境,能将复杂系统中的多种环境整合到一起,开发者或者用户不需要关心系统的复杂性和多种组件之间的复杂联系,通过consul可以直接查询获得自己可以使用哪些服务。比如系统中有些数据库可以使用,有哪些redis可以使用。
consul可以帮助系统管理者更清晰的了解复杂系统内部的系统架构,运维人员可以将consul看成一种监控软件,也可以看成一种资产(资源)管理系统。
关于consul部署的环境要求。consul可以部署在物理机环境、也可以部署在操作系统虚拟化环境、也可以部署到docker(应用虚拟化)环境,也可以部署物理机、虚拟机和docker三种环境都有的混合环境中。
consul易于使用,可供多种角色人员使用,使用consul的可以是系统运维管理人员、软件开发人员以及其他相关的技术人员。
可以参考consul的官方网站和其他网站上提供的信息。本文列举一些可用参考的资源如下:
tag: consul是什么,consul能做什么,consul应用场景,consul解决方案,consul系统架构
--end--