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
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
429 5
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
487 0
|
JavaScript Java Go
探索Go语言在微服务架构中的优势
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出。本文将深入探讨Go语言在构建微服务时的性能优势,包括其在内存管理、网络编程、并发模型以及工具链支持方面的特点。通过对比其他流行语言,我们将揭示Go语言如何成为微服务架构中的一股清流。
386 53
|
8月前
|
Linux Go iOS开发
IDA 9.2 发布:Golang 改进、新 UI 组件、类型解析等
IDA Pro 9.2 (macOS, Linux, Windows) - 强大的反汇编程序、反编译器和多功能调试器
1470 0
|
JSON API Go
Golang工程组件:自定义HTTP规则的grpc-gateway选项
总的来说,grpc-gateway提供了一种简单有效的方式来为你的gRPC服务提供RESTful风格的API。通过自定义HTTP规则,你可以灵活地定义你的API的行为,以满足你的应用的需求。
360 27
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
存储 负载均衡 监控
如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
在数字化时代,构建高可靠性服务架构至关重要。本文探讨了如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
522 1
|
API Docker 微服务
Ocelot集成Consul实现api网关与服务发现
本文介绍了如何在.NET微服务架构中集成API网关Ocelot和Consul服务发现。首先通过Docker安装并配置Consul,接着在GoodApi项目中实现服务的自动注册与注销,并配置健康检查。然后,通过修改Ocelot的配置文件`ocelot.json`和`Program.cs`,实现基于Consul的服务发现,确保API请求能够正确路由到后端服务。最后,解决了服务解析时可能出现的问题,确保服务的IP地址而非节点名称被正确解析。
521 0
Ocelot集成Consul实现api网关与服务发现
|
Cloud Native Go API
Go语言在微服务架构中的创新应用与实践
本文深入探讨了Go语言在构建高效、可扩展的微服务架构中的应用。Go语言以其轻量级协程(goroutine)和强大的并发处理能力,成为微服务开发的首选语言之一。通过实际案例分析,本文展示了如何利用Go语言的特性优化微服务的设计与实现,提高系统的响应速度和稳定性。文章还讨论了Go语言在微服务生态中的角色,以及面临的挑战和未来发展趋势。

推荐镜像

更多