Golang 语言微服务的服务发现组件 Consul 的系统架构介绍

简介: Golang 语言微服务的服务发现组件 Consul 的系统架构介绍

介绍

在上篇文章「Golang 语言微服务的服务注册与发现组件 Consul」中,我们已经介绍服务注册与发现是什么,Golang 语言微服务架构为什么需要使用服务注册与发现组件,Golang 语言开发的服务注册与发现组件 Consul 的主要特性和基本介绍。

本文我们介绍 Consul 的系统架构,读者朋友们阅读完本文可以了解 Consul 的工作原理。

02

Consul 术语

在介绍 Consul 系统架构之前,我准备先介绍几个 Consul 术语,目的是让读者朋友们更容易理解 Consul 系统架构的介绍内容。

  • Datacenter 数据中心
  • Cluster 集群
  • Server 服务器
  • Client 客户端
  • Agent 代理

Consul 原生支持多数据中心,数据中心中包含 Consul 集群,集群由客户端、服务器或客户端和服务器混合体的节点组成。

多个部署和运行 Agent 的节点组成 Consul Cluster,集群中包含 Client、Server 或 Client 和 Server 的混合体。

如果节点运行的 Agent 开启 Server 模式,那么该节点为 Server。

如果节点运行的 Agent 未开启 Server 模式,那么该节点为 Client。

Agent 是 Consul 集群中所有节点都运行的一个守护进程,负责维护成员身份信息、注册服务、运行健康检查、响应查询等。

03

Consul 系统架构

Consul 官方为我们提供了一张 Consul 系统架构图,在这张图中,我们可以看到包含两个数据中心,分别标记为 DATACENTER 1 和 DATACENTER 2。由此可见,Consul 原生支持多数据中心。

在每个数据中心中都包含一个 Consul 集群,DATACENTER 1 中的集群由 6 个部署并运行 Agent 的节点组成,其中三个是以 Server 模式运行的,另外三个是以 Client 模式运行的。

而 DATACENTER 2 中的集群由 3 个部署并运行 Agent 的节点组成,并且这三个节点都是以 Server 模式运行的。

由此可以得出一个结论,DATACENTER 中的集群可以是包含 Client 和 Server 的混合体,也可以是仅包含 Server 节点。

需要注意的是,每个 Consul 数据中心中的集群,官方建议 Server 模式运行的节点控制在 3 至 5 个,因为 3 至 5 个 Server 节点发生故障时,就可以提供一致性和可用性,并且 Server 节点是以 Raft 协议选举 Leader,Server 节点越多,Leader 选举越慢。而 Client 节点的数量没有限制,它是轻量级进程,我们甚至可以创建成千上万个 Client 节点。

Server 负责基于 Raft 协议选举 Leader,维护集群状态,响应 RPC 查询,与其他 DATACENTER 交换 WAN Gossip,将查询请求转发给 Leader 或远程 DATACENTER。

Client 是无状态的,负责将所有查询请求转发给 Server,而且 Client 不需要与其他 DATACENTER 交换 WAN Gossip,只需参与 LAN Gossip,资源开销很小,只消耗少量网络带宽。

04

总结

本文我们介绍 Consul 的系统架构,我们先从宏观上了解 Consul 的工作原理,也就是先抓住纲,然后再详细学习 Consul 的各个组件。

推荐阅读:

参考资料:

https://www.consul.io/docs/architecture 


目录
相关文章
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
590 7
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
553 5
|
JavaScript Java Go
探索Go语言在微服务架构中的优势
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出。本文将深入探讨Go语言在构建微服务时的性能优势,包括其在内存管理、网络编程、并发模型以及工具链支持方面的特点。通过对比其他流行语言,我们将揭示Go语言如何成为微服务架构中的一股清流。
485 53
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
535 2
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
1026 6
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
571 1
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
2970 70
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
4016 37
微服务架构解析:跨越传统架构的技术革命
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
1246 9
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
1757 3
【赵渝强老师】基于大数据组件的平台架构

推荐镜像

更多