Consul 入门-初识

背景

现状:单体架构逐渐被微服务架构所替代,原本两个功能模被拆分成了两个服务。原本两个模块块间的通信只需要 函数调用就能够实现,现在却做不到了,因为它们不在同一个进程中,甚至两个服务都可能部署到不同的机房。

Consul 入门-初识
通信成为了迈向微服务大门的第一道难关:
  • ServiceA 如何知道 ServiceB 在哪里
  • ServiceB 可能会有多个副本提供服务,其中有些可能会挂掉,如何避免访问到”不健康的”的 ServiceB
  • 如何控制只有 ServiceA 可以访问到 ServiceB

Consul 是什么

Consul 是一种服务网格解决方案,提供具有服务发现、配置和分段功能的全功能控制平面。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul 提供的核心功能:

  • 服务发现:服务启动时将服务相关信息(地址、端口、配置、tag等)注册到 Consul 中,由它统一管理,当需要访问其他服务时向 Consul 查询所依赖服务的相关信息。查询方式支持 HTTP、RPC、DNS等。
  • 健康检查:在将服务注册到 Consule 时可以配置健康检查,Consul 会对其定期进行检查,如果检查失败,就会认为该服务不可用,当有其他服务过来查询这个服务的地址时,返回时可以把不可用的地址剔除(注:同一个服务一般会有多个服务/地址)。
  • 安全服务通信:Consul 可以为服务生成和分发 TLS 证书,以建立相互的 TLS 连接。Intentions 可用于定义允许哪些服务进行通信。通过实时地更改Intentions 来管理服务服务分段,控制服务间的是非否可访问。
  • KV存储:Cousul 可以用来做简单的键值存储场景,比如:动态配置、功能标记、协调、领导者选举等。提供简单的 HTTP API。
  • 多数据中心:Consul 支持开箱即用的多个数据中心,用以支持高可用的场景需要。

Consul 入门-初识

Consul 架构

Consul 入门-初识
一般会将 Server 端部署为多数据中心,如上图, DATACENTER1DATACENTER2是相互独立的,他们之间通过 WAN GOSSIP 进行报文交互。单个 datacenter 中, 节点被划分成两种颜色, 红色的 server, 紫色的 client, 他们之间通过 RPC 进行通信(业务数据), 除此之外, Client 和 Server 之间通过还有一条 LAN Gosssip 进行通信,比如,当 Server 节点增加,或者 down 机后,Client 可以获取对应的 Server列表,去除或者增加 Server 列表。

Consul 是 Client/Server 架构,由同一套代码运行, 启动时通过参数 -server=false来决定运行 Server 模式还是 Agent 模式。

Server 模式能力

  • 处理查询
  • 存储注册信息
  • 参与共识仲裁、选取领导人
  • 维护周边(LAN/WAN) 节点之间的关系

Client 模式负责

  • 通过该节点注册到 Consul 微服务的健康检查
  • 将客户端的注册请求和查询转换为 server 的 RPC 请求
  • 维护周边各节点(LAN/WAN) 的关系
  • 缓存来自服务器的数据,以提高性能和可靠性

结束语

本文对 Consul 进行了理论层面的介绍,Consul 出现的背景、Consul 支持的功能以及 Consul 的架构。

Original: https://www.cnblogs.com/Zioyi/p/15170808.html
Author: Zioyi
Title: Consul 入门-初识

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/575872/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 什么是前缀索引?

    一、什么是前缀索引? 所谓前缀索引,说白了就是对文本的前几个字符建立索引( 具体是几个字符在建立索引时去指定),比如以产品名称的前 10 位来建索引,这样建立起来的索引更小,查询效…

    数据库 2023年6月14日
    0113
  • MySQL实战45讲 9

    09 | 普通索引和唯一索引,应该怎么选择? 每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的…

    数据库 2023年6月16日
    0112
  • MySQL隐式转换的坑

    MySQL以以下规则描述比较操作如何进行转换: 两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 实际使用中经研究发现字符串和数字比较时,优先把字符串转换为…

    数据库 2023年6月9日
    080
  • Map–部分方法

    1.Map.values()方法:获取Map集合中的所有键值对象 获取 Map 集合中的所有键值对象,这些键值对象将存放在另一个集合对象中 2.getOrDefault() 方法 …

    数据库 2023年6月16日
    093
  • SpringBoot整合WebService(实用版)

    SpringBoot整合WebService 简介 WebService就是一种跨编程语言和跨操作系统平台的远程调用技术 此处就不赘述WebService相关概念和原理了,可以参考…

    数据库 2023年6月16日
    0106
  • Java 书城项目本地部署指引

    在数据库管理工具中新建数据库名固定为 bookstore,并初始化以下表及数据 /* Navicat Premium Data Transfer Source Server : l…

    数据库 2023年6月11日
    0109
  • 设计模式之建造者模式

    一、建造者模式:如果创建某个对象要经过多个组件组装才能完成,我们可以设计一个充当建造者角色的类和一个充当指挥者的类,通过指挥者控制建造者按步骤组装需要创建的对象,这样客户端就只依赖…

    数据库 2023年6月14日
    084
  • MySQL知识点大全!!

    使用PreStatement对象: public int execUpdate(String sql, Object[] parms) { int count = 0; try {…

    数据库 2023年6月16日
    093
  • 大连交通大学课程共享

    如本页面访问适配不佳,阅读体验不好可访问公众号页面(适配更好)。公众号页面:https://mp.weixin.qq.com/s/5g2-Izrygm6WhKiT3z1yow 设立…

    数据库 2023年6月11日
    083
  • 如何识别 SQL Server 的版本

    本文介绍如何识别当前的Microsoft SQL Server 版本号和相应的产品或Service Pack 级别。同时介绍如何识别正在使用的SQL Server 具体版本。 如何…

    数据库 2023年6月11日
    084
  • MySQL8.0其他新特性

    MySQL8.0其他新特性 MySQL8.0新特性概述 MySQL8.0新增特性 MySQL8.0移除的旧特性 新特性1:窗口函数 窗口函数的分类 MySQL8.0版本开始支持窗口…

    数据库 2023年5月24日
    080
  • Python–Event

    事件Event: 同进程的一样,线程的一个关键特性是每个线程都是独立运行且状态不可预测。如果程序中的其他线程需要通过判断某个线程的状态来确定自己下一步的操作,这时线程同步问题就会变…

    数据库 2023年6月9日
    077
  • Mysql数据库服务端的安装

    一般提到Mysql数据库的安装在工作当中是说的安装数据库管理软件的服务端,服务端的安装可以安装在Windows环境,也可以安装在Linux环境。 Windows环境安装:目前安装比…

    数据库 2023年6月6日
    095
  • 删除我的电脑设备和驱动器下迅雷云盘、百度网盘、WPS云盘、腾讯视频等标识

    使用 win+R键打开运行窗口,输入 regedit进入注册表编辑器,找到 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Current…

    数据库 2023年6月16日
    0248
  • MVCC多版本并发控制的理解

    前置知识 当前读与快照读 当前读什么是当前读:读取的是 最新的数据,不会读到老数据。 何时&…

    数据库 2023年5月24日
    070
  • zabbix模板,角色,用户,权限管理

    用户管理 用户组 用户角色 用户 模板管理 模板组 模板 posted @2022-09-07 22:22 溜溜威 阅读(16 ) 评论() 编辑 Original: https:…

    数据库 2023年6月14日
    0109
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球