Cousul 简介
来自官网的介绍
作用:基于GO语言开发,用于实现分布式系统的服务发现与配置的等管理。
特性:
-
Raft 算法 分布式一致性协议的算法方式。所谓的CP的特性。
-
服务发现: Consul提供了通过DNS或者HTTP接口的方式来注册服务和发现服务。一些外部的服务通过Consul很容易的找到它所依赖的服务。
-
健康检测: Consul的Client提供了健康检查的机制,可以通过用来避免流量被转发到有故障的服务上。
-
Key/Value存储: 应用程序可以根据自己的需要使用Consul提供的Key/Value存储。 Consul提供了简单易用的HTTP接口,结合其他工具可以实现动态配置、功能标记、领袖选举等等功能。,可以用于配置中心等。
-
多数据中心: Consul支持开箱即用的多数据中心. 这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域。
-
WEB UI 服务管理
Consul 角色
- DEV 启动模式(单节点的形式安装部署-开发模式)
用于本地开发环境下的方便的进行测试。如果是线上的环境的一般我们的是用集群的模式。Consul启动时候就是一个服务注册中心.
开发模式的下,一般我们的都是基于客户端的自注册的模式进行,意思就是服务启动的时候,把服务的信息都提交到的我们的注册中心上。
-
线上启动模式
-- client 客户端模式 无状态,作用是把外部请求过来的HTTP或DNS的接口请求转发到内部server服务端的集群。主要起到的作用是一个代理。-- server 服务端,保存配置信息,线上环境一般肯定是需要配置成高可用形式。官网的建议是每个数据中心的server数量推荐为3 或 5个 奇数个服务。
关于server 因为基于CP下的强一致性的问题,如果server过多的也增加server之间数据同步的时间。所以也不是越多越好。
当我们的集群有一半的挂了基本整个集群就不可用了!
线上模式下的Consul 架构
数据中心请求流程
image.pngconsul 工作流
-
服务发现以及注册:
当服务的生产者producer 启动的时候,把自身的服务的元数据信息提交到Consul,Consul接受到注册信息后,会每隔10秒(默认值)想注册的服务Prodcucer进行健康检查。
-
服务调用
当我们的Consumerl消费者请求Prodcuer的是,会先从Consul获取到存贮Producter的数据(地址IP 和端口等)的临时表,从这个临时表里面任选一个Producr是的IP和Port,进行服务的请求
关于临时表,只会包含通过健康的检查的的服务,且会根据 默认的间隔时间进行更新同步。
网友评论