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 


目录
相关文章
|
1月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
1月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
156 1
|
4月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
248 0
|
11月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
338 3
|
7月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
442 12
|
11月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
928 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
11月前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
3175 36
微服务架构解析:跨越传统架构的技术革命
|
9月前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
470 1

热门文章

最新文章

推荐镜像

更多