GO 微服务GO-Micro -(2)Consul 基本认知

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.png

consul 工作流

  • 服务发现以及注册:

    当服务的生产者producer 启动的时候,把自身的服务的元数据信息提交到Consul,Consul接受到注册信息后,会每隔10秒(默认值)想注册的服务Prodcucer进行健康检查。

  • 服务调用

当我们的Consumerl消费者请求Prodcuer的是,会先从Consul获取到存贮Producter的数据(地址IP 和端口等)的临时表,从这个临时表里面任选一个Producr是的IP和Port,进行服务的请求

关于临时表,只会包含通过健康的检查的的服务,且会根据 默认的间隔时间进行更新同步。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 夜莺2517阅读 127,768评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 6,981评论 1 6
  • 我是一名过去式的高三狗,很可悲,在这三年里我没有恋爱,看着同龄的小伙伴们一对儿一对儿的,我的心不好受。怎么说呢,高...
    小娘纸阅读 3,437评论 4 7
  • 那一年,我选择了独立远行,火车带着我在前进的轨道上爬行了超过23个小时; 那一年,我走过泥泞的柏油路,在那个远离故...
    木芽阅读 1,679评论 4 5