Golang 言语微服务的服务注册与缔造组件 Consul

发布日期:2022-08-07 17:15    点击次数:129

01介绍

在 2016 年底,我起头接触 Golang 言语和微服务,在夙昔的 5 年中,微服务架构变得越来越流行,而今中型及以上局限的公司险些已经整个扔掉单体架构。

本文我们次要介绍 Golang 言语微服务的服务注册与缔造组件 consul。在介绍 Consul 从前,我们先俭朴相识一下服务注册与缔造和 CAP 定理。

02服务注册与缔造

微服务架构与单体架构差别,微服务架构根据业务需要拆分为多个微服务,每个微服务均可以或许静态陈列。

服务注册与缔造组件担当打点拆分的各个微服务,个中服务注册是指微服求实例启动时,将其信息注册到服务注册与缔造组件;服务缔造是指微服求实例经由过程要求服务注册与缔造组件,获取其需要近程调用的别的微服求实例的信息。

服务注册与缔造组件的功用蕴含管应今后注册到服务注册与缔造组件的微服求实例;心跳检测注册到服务注册与缔造组件的微服求实例;为调用方的微服求实例供应被调用的微服求实例的信息。

03CAP 定理

CAP 定因由加州大学柏克莱分校的 Eric Brewer 教学提出,它是形貌漫衍式体系下节点数据同步的根抵定理。

其焦点是陈诉我们,在漫衍式体系中有三方面需要互相笔底生花掂量,划分是分歧性(consistency)、可用性(availability)和分区容忍性(partition tolerance),CAP 定理陈诉我们,以上三个指标至多只能餍足个中两个指标。

个中,分歧性是当拜访多个节点时能失去一样的值;可用性意味着每个要求都能获取照顾;分区容忍性是指集群中的某些节点在没法通信后,集群总体还能延续供应服务。

微服务架构实际上就是漫衍式体系的一种落地实际。

04Consul

而今业界已经开源出良多服务注册与缔造组件,譬如 Java 言语开发的起劲于为漫衍式体系供应分歧性服务的 zookeeper,运用 Golang 言语开发的次要用于服务缔造与设置同享的 etcd 和 consul。

个中,Consul 因此服务缔造与设置作为次要功用目的,附带供应了 Key/Value 存储,技术服务仅从服务注册与缔造组件的需要推敲,Consul 更得当。

Consul 是一个服务网格经管规划,餍足 CAP 定理中的 CP,供应服务缔造和设置同享的功用。这些功用中的每个均可以或许痛处需要零丁运用,也可以一起运用以构建完备的服务网格。

Consul 附带了一个俭朴的内置代理,因而通通都开箱即用,但也支持第三方代理集成,如 Envoy。

Consul 次要特点:

服务缔造 健康查抄 KV 存储 安好服务通信 大都据左右

Consul 是一个高可用的漫衍式体系,支持大都据左右陈列,每个数据左右都运行一个 Consul 集群。一个 Consul 集群由陈列和运行 Consul Agent 的节点形成。

Consul Agent 担当服务注册、运行查抄和照顾查询(将查询要求转发到 Consul server 及第行处理惩罚),服务缔造或读写 Key/Value 数据不需要运行 Consul Agent。

Consul 集群包孕 Consul server 和 Consul client,Consul server 担当存储和复制数据。多个 Consul server 之间基于 Raft 和谈推举一个 leader。诚然 Consul 可以或许只运用一个 Consul server,但平易近间倡导运用 3 到 5 个 Consul server,以防止数据遗失。

Consul client 担当将要求转发给同一数据左右的 Consul server 处理惩罚。当收回跨数据左右服务缔造或设置要求时,外埠 Consul server 会将要求转发到近程数据左右并前去终局。

05总结

本文我们先俭朴熟习一下 Consul,同时介绍了服务注册与缔造是什么,微服务作为漫衍式体系的一种落地实际,也需要服从 CAP 定理,并列举了业界而今开源的餍足 CP 的服务注册与缔造组件有哪些。

本文转载自微信群众号「 Golang言语开发栈」,可以或许经由过程下列二维码关注。转载本文请联络 Golang言语开发栈群众号。

 



栏目分类



Powered by 【欧冠体育官方入口】 @2013-2022 RSS地图 HTML地图