微服务 - Consul服务注册中心

这篇具有很好参考价值的文章主要介绍了微服务 - Consul服务注册中心。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

上篇说到构建良好的架构,依托于基础设施建设(自动化测试、自动化部署、服务监控,服务发现、配置中心等等),决定成败的往往是基础设施建设,所以从搭建一个注册中心和配置中心开始我们新一阶段的启程。

注册中心

微服务 - Consul服务注册中心

注册中心选型

你有没有思考过这样一个问题,为什么会有这么多的注册中心(etcd/ZooKeeper/Consul),选用那个最适合自己,是不是在选用的时候会眼花缭乱?

我在开始做的时候,自己也有很多困惑,将近3年的时候里我都在不停的学习,但是还是有很多不同的框架和产品,后来我明白了其中的原因,他们就像生活中的可乐、果汁、和牛奶一样,你在使用的时候选取你的编程语言(Java、Go、PHP),程序易接入的就好了。

产生注册中心五花八门的原因是因为语言很多,都想打造最适合自己的体系生态,我选择Consul为大家讲解,因为它安装和接入都比较方便。

不用被这些假象所困扰,多学习网络和系统的底层原理,万变不离其宗,技术人应该是给出解决方案。

CAP原理

  • 一致性: 所有节点在同一时间具有相同的数据
  • 可用性:保证每个请求不管成功或者失败都有响应
  • 分区容错:系统中任意信息的丢失或失败不会影响系统的继续运作
Feature Consul ZooKeeper etcd
服务健康检查 服务状态、内存、硬盘 长链接、Keepalive 链接心跳
多数据中心 支持
K/V存储服务 支持 支持 支持
一致性 Raft Paxos Raft
CAP定理 CP CP CP
使用接口(多语言能力) Http/Dns 客户端 Http/Grpc
安全 acl/https acl Https支持

Consul介绍

使用PHP、和Go编写,使用Consul作为注册中心和配置中心比较方便,所以我选用的是Consul。

  • 采用Raft算法实现,有服务发现,Key/Value存储,可以做配置中心使用,有健康检查,并提供了web管理页面。

Consul 内部端口说明:

  • TCP/8300:8300端口用于服务器节点,客户端通过RPC协议调用服务端节点。
  • TCP/UDP/8301: 8301端口用于单个数据中心所有节点之间的互相通信,即对LAN池信息的同步,它使得整个数据中心能够自动的发现服务器地址,分布式监测点的故障,事件广播。
  • TCP/UDP/8302: 8302端口用于单个或多个数据中心之间的服务器节点的信息同步(WAL池信息的同步),它针对互联网的高延迟进行了优化,能够实现跨数据中心请求。
  • HTTP/8500: 8500端口基于Http服务,用于Api接口和Ui访问。
  • DNS/8600: 8600端口作为DNS服务器,它使得我们可以通过节点查询节点信息。

Consul Raft算法

  • 解决了分布式中领导选举和一致性问题
  • Raft算法是比较出名的共识算法,比如Redis的哨兵、Consul

Consul 集群的特点:

  • 任期机制,Raft是终身任期的,它永远都是领导者
  • 心跳机制,它决定领导者是否能有效的和跟随者通信
  • 随机的选举超时时间,因为是随机的所以决定了不会再同一时间进行选举
  • 先到先得,一届任期内,先收到谁的投票就会给谁,剩下的请求一律拒绝
  • 过半机制,收到一半的投票才会

Consul 集群的角色:

  • Followers 追随者:接受到领导者发送的消息,当心跳超时时,主动推荐自己成为候选人。
  • Candidate 候选人:发送Rpc消息,让其它节点投票给自己,当投票超过半数时,成为领导者。
  • Leader 领导者:向其他节点发送心跳,只要心跳不超时,一直为领导者。

算法的详情可以点击官网视频查看

Consul 基本使用

注册服务

1.注册服务是Consul最基础的服务,点击查看官网Api

PUT 192.168.88.144:8500/v1/agent/service/register
{
    "Name":"audio",
    "Id":"audio",
    "Tags":[
        "v2",
        "primary"
    ],
    "Address":"192.168.88.144",
    "Port":8500,
    "Check":{
        "HTTP":"http://192.168.88.144:8500",
        "Interval":"10s"
    }
}
{
  "id": "web",
  "name": "web",
  "port": 80,
  "check": {
    "name": "ping check",
    "args": ["ping", "-c1", "test.stark.com"],
    "interval": "30s",
    "status": "passing"
  }
}

2.发现服务

GET http://192.168.88.144:8500/v1/health/service/audio
[
    {
        "Node": {
            "ID": "38779dca-bffd-e399-6597-266aff68132c",
            "Node": "server01-virtual-machine",
            "Address": "127.0.0.1",
            "Datacenter": "dc1",
            "TaggedAddresses": {
                "lan": "127.0.0.1",
                "lan_ipv4": "127.0.0.1",
                "wan": "127.0.0.1",
                "wan_ipv4": "127.0.0.1"
            },
            "Meta": {
                "consul-network-segment": ""
            },
            "CreateIndex": 13,
            "ModifyIndex": 17
        },
        "Service": {
            "ID": "audio",
            "Service": "audio",
            "Tags": [
                "v2",
                "primary"
            ],
            "Address": "192.168.88.144",
            "TaggedAddresses": {
                "lan_ipv4": {
                    "Address": "192.168.88.144",
                    "Port": 8500
                },
                "wan_ipv4": {
                    "Address": "192.168.88.144",
                    "Port": 8500
                }
            },
            "Meta": null,
            "Port": 8500,
            // ...
}
]

Service API
Service 相关的 API 都在 /v1/agent/service 下:

  • /agent/services:该端点返回在本地代理程序中注册的所有服务;
  • /agent/service/{service_id}:返回在本地代理上注册的单个服务实例的完整服务定义;
  • /agent/health/service/name/{service_name}/
  • /agent/health/service/id/{service_id}:通过名称或id检索本地代理上的聚合服务状态;
  • /agent/service/register:注册服务;
  • /agent/service/deregister/{service_id} :注销服务;
  • /agent/service/maintenance/{service_id}:该端点将给定的服务置于“维护模式”,在维护模式下,该服务将被标记为不可用,并且不会出现在DNS或API查询中。

关于更多Consul的使用,查询官方文档吧。

微服务 - Consul服务注册中心文章来源地址https://www.toymoban.com/news/detail-422441.html

到了这里,关于微服务 - Consul服务注册中心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SpringCloud】一、微服务概述、注册中心与Ribbon负载均衡技术简介

    微服务治理 异步通信技术 — mq 缓存技术 — Redis 搜索技术 — ES集群 Devops — Jenkins… 微服务是一种将各个模块拆分开独立运行以提高系统整体效率的技术,其主要特征为: 单一职责:每个服务对应唯一的业务能力、做到单一职责。 面向服务:对外要暴露微服务的业务接口

    2024年02月09日
    浏览(35)
  • SpringCloud学习笔记(五)_Consul注册中心

    本章使用的Consul版本是 1.7.2 项目架构图如下: 1、新建一个maven项目(test-springcloud-provider-payment8006) 结构如下: 2、引入依赖,编辑pom文件 完整pom.xml文件如下: pom.xml 3、编辑配置文件application.yml 4、编写主启动类 5、编写Controller 6、启动项目,测试项目 1)启动Consul服务,使

    2024年02月11日
    浏览(20)
  • Docker Consul概述及构建

    Consul是HashiCorp公司推出的开源工具,Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。 Consul是分布式的、高可用的、可横向扩展的用于实现分布式系统的服务发现与配置。 在client模式下,所有注册到当前节点的服务会被

    2024年02月07日
    浏览(23)
  • 【Consul】基于Golang实现Consul服务的注册、注销、修改、监控注册的服务变化、实时同步服务信息机制

    大家好 我是寸铁👊 总结了一篇【Consul】基于Go实现Consul服务的注册、注销、修改、监控注册的服务变化、实时同步服务信息机制✨ 这应该是目前全网最全的使用golang手搓Consul服务信息机制✨ 喜欢的小伙伴可以点点关注 💝 consul常常被用来作服务注册与服务发现,而它的wa

    2024年04月09日
    浏览(29)
  • SpringCloud(H版&alibaba)框架开发教程,使用eureka,zookeeper,consul,nacos做注册中心——附源码(1)

    源码地址:https://gitee.com/jackXUYY/springboot-example 创建订单服务,支付服务,公共api服务(共用的实体),eureka服务 1.cloud-consumer-order80 2.cloud-provider-payment8001 3.cloud-api-commons 4.cloud-eureka-server7001 5.cloud-eureka-server7002 如图所示 修改本地host映射 修改数据库地址为自己的地址,并初始

    2024年02月03日
    浏览(36)
  • Consul服务注册发现集群搭建

    Consul 是一种用于服务发现、配置和分布式一致性的开源工具和平台。它由 HashiCorp 公司开发和维护,旨在简化构建和维护分布式系统的任务。 Consul 提供了许多功能,包括: 服务发现 :Consul允许服务注册和发现。当服务启动时,它可以向Consul注册自己的位置和元数据。其他服

    2024年04月08日
    浏览(27)
  • docker consul 服务注册与发现

    Docker consul的容器服务更新与发现 ------------------------------------ Consul ------------------------------------ (1)什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接

    2024年02月09日
    浏览(32)
  • prometheus + consul 服务注册+报警 最佳实践

    本文主要将prometheus和consul 结合起来使用,通过conusl 注册服务至prometheus,实现服务统一注册,统一报警管理等。 整个架构思路consul+consul_export+prometheus+alertmanager ,consul通过check检测服务状态,然后通过consul_export暴露给prometheus,prometheus通过alert规则,通知alertmanager,接着邮件

    2024年03月25日
    浏览(34)
  • Docker consul的容器服务注册与发现

    nacos(转给微服务)、Eureka和consul一样,也是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构,起初的解决

    2024年02月11日
    浏览(24)
  • Eureka、Zookeeper、Consul服务注册与发现

    一、Eureka服务注册与发现 1.1 概念 Eureka 是 Netflix 公司开源的一个服务注册与发现的组件 。 Eureka 和其他 Netflix 公司的服务组件(例如负载均衡、熔断器、网关等) 一起,被 Spring Cloud 社区整合为Spring-Cloud-Netflix 模块。 Eureka 包含两个组件:Eureka Server (注册中心) 和 Eureka Clien

    2024年02月02日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包