当前位置: 首页 > 科技观察

Golang语言微服务服务注册与发现组件Consul

时间:2023-03-12 17:12:23 科技观察

01简介2016年底开始接触Golang语言和微服务。在过去的5年里,微服务架构越来越流行。目前,中型及以上规模的公司几乎都放弃了单体架构。本文主要介绍Golang语言微服务的服务注册和发现组件consul。在介绍Consul之前,我们先简单了解一下服务注册与发现以及CAP定理。02服务注册与发现微服务架构不同于单体架构。微服务架构根据业务需求划分为多个微服务,每个微服务都可以动态部署。服务注册和发现组件负责管理拆分的微服务。服务注册是指在微服务实例启动时向服务注册与发现组件注册其信息;服务发现是指微服务实例通过请求服务来注册和发现组件。,获取其他需要远程调用的微服务实例的信息。服务注册与发现组件的功能包括管理当前注册到服务注册与发现组件的微服务实例;心跳检测注册到服务注册与发现组件的微服务实例;为调用者的微服务实例提供被调用的微服务实例信息。03CAP定理CAP定理是由加州大学伯克利分校的EricBrewer教授提出的。它是描述分布式系统中节点数据同步的一个基本定理。它的核心是告诉我们在分布式系统中需要相互权衡的三个方面,即一致性(consistency)、可用性(availability)和分区容错性(partitiontolerance)。CAP定理告诉我们,以上三个指标只能满足其中的两个条件。其中,一致性是指访问多个节点时可以得到相同的值;可用性意味着每个请求都能得到响应;partitiontolerance是指集群中部分节点无法通信后,集群整体可以继续提供Serve。微服务架构其实是分布式系统的一种落地实践。04Consul目前业界已经开源了很多服务注册和发现组件,比如用Java语言开发的zookeeper为分布式系统提供一致服务,etcd和用Golang语言开发的consul主要用于服务发现和配置共享。其中,Consul以服务发现和配置为主要功能目标,提供Key/Value存储。仅考虑服务注册和发现组件的需求,Consul更合适。Consul是一个服务网格解决方案,满足CAP定理中的CP,提供服务发现和配置共享的功能。这些功能中的每一项都可以根据需要单独使用,或者一起使用以构建完整的服务网格。Consul带有一个简单的内置代理,因此一切都开箱即用,但也支持第三方代理集成,例如Envoy。Consul的主要特点:服务发现健康检查KV存储安全的服务通信多数据中心Consul是一个高可用的分布式系统,支持多数据中心部署,每个数据中心运行一个Consul集群。Consul集群由部署和运行Consul代理的节点组成。ConsulAgent负责服务注册、运行检查、查询响应(将查询请求转发给Consul服务器处理)。服务发现或读写Key/Value数据不需要运行ConsulAgent。Consul集群包括Consulserver和Consulclient,Consulserver负责存储和复制数据。基于Raft协议在多个Consul服务器之间选举领导者。虽然Consul只能使用一台Consul服务器,但官方建议使用3到5台Consul服务器,以避免数据丢失。Consul客户端负责将请求转发给同一数据中心的Consul服务器进行处理。当有跨数据中心的服务发现或配置请求时,本地Consul服务器会将请求转发给远程数据中心并返回结果。05小结本篇先来认识一下Consul,介绍一下什么是服务注册和发现。微服务作为分布式系统中的一种实践,同样需要遵循CAP定理,列出目前业界符合CP的开源服务注册以及发现组件有哪些。本文转载自微信公众号“Golang语言开发栈”,可通过以下二维码关注。转载本文请联系Golang语言开发栈公众号。