网站运营
位置:首页>> 网站运营>> 微服务之注册中心和配置中心Consul详解

微服务之注册中心和配置中心Consul详解

作者:stark张宇  发布时间:2023-11-18 23:14:51 

标签:微服务,注册,配置,Consul

概述

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

注册中心

微服务之注册中心和配置中心Consul详解

注册中心选型

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

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

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

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

CAP原理

  • 一致性: 所有节点在同一时间具有相同的数据

  • 可用性:保证每个请求不管成功或者失败都有响应

  • 分区容错:系统中任意信息的丢失或失败不会影响系统的继续运作

FeatureConsulZooKeeperetcd
服务健康检查服务状态、内存、硬盘长链接、Keepalive链接心跳
多数据中心支持——
K/V存储服务支持支持支持
一致性RaftPaxosRaft
CAP定理CPCPCP
使用接口(多语言能力)Http/Dns客户端Http/Grpc
安全acl/httpsaclHttps支持

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的使用,查询官方文档吧。

来源:https://juejin.cn/post/7224092792824807479

0
投稿

猜你喜欢

  • 人之患在好为人师。陈国华邀请我加入“创业圈”群,并讲讲创业,其实我没什么资格给大家讲创业。我只是觉得现在的年轻人在理解别人说过的话的方面比较
  • 月光博客最擅长这个,我们来看看月光最近的这类帖子:十个常用的S60手机软件十大经典JAVA手机游戏8个有用的WP的SQL语句十个避免RSS订
  • 1、网页使用框架框架内的内容通常不在搜索引擎抓取的范围之内。2、图片太多,文本太少3、提交页面转向另一网站搜索引擎可能完全跳过这个页面。4、
  • 前言安装的VMware是 VMware Workstation 16 Pro安装的映像文件是Centos 7 64位的第一步进入官网,然后下
  • 个人如何才能够做一个成功的网站?这是一个值得思考的问题。我的网站,也算不上怎么成功的一个站,我和大家谈这个话题也许有点纸上谈兵。主要讲四点:
  • 1.官方简介grep是linux的常用命令,用于对文件和文本执行重复搜索任务的Unix工具,可以通过grep命令指定特定搜索条件来搜索文件及
  • 步骤:终端运行sudo a2enmod程序提示可供激活的模块名称,输入:其中rewrite修改/etc/apache2/sites-enab
  • 有Godaddy不知道该如何计算Godaddy空间的流量使用?那我们首先介绍下什么是流量?流量是允许在某个用户的网站与其余因特网之间通过的数
  • 其实学生站长是幸福的,因为你们没有经济的强大压力。其实学生站长前途是光明的,因为你们有的是青春年华。其实学生站长是充满活力的,因为新点子,新
  • 我们在浏览某些网站的时候,看到不错的网页可能就想把上面的内容给复制下来,但是有的网站就是为了防止别人复制,而在每段文字的结尾处增加了干扰码—
  • 新浪科技讯 4月22日下午消息,来自工信部的最新互联网产业数据显示,我国网民总数已达4.04亿,社交网站用户群达1.91亿。电子商务、网络广
  • 随着Iphone在国内大行其道,越来越多的开发者涌入iOS开发大军 中,但都苦于没有苹果机,本文即将介绍WIN虚拟MAC的教程。一、工具:
  • SMTP协议是TCP/IP协议族中的一员,主要对如何将电子邮件从发送方地址传送到接收方地址,也即是对传输的规则做了规定。SMTP协议的通信模
  • 1 引言线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统
  • 运行Sendmail的服务器群集能够在有竞争力的价格上提供高性能和高可用性。对于经验丰富的系统管理员,这一贯是常用的做法。本文描述了我们的研
  • Dedecms 5.5 实现自定义标题处理,在 {dede:function}@me='64edu.com'.@me{/de
  • 面对用户提出的需求,有时候经常感觉到千头万绪、无从下手,有时候又感觉需求本身就是答案、没有必要下手。面对需求分析这种事儿,就没有一个模式化的
  • 众所周知,QQ和MSN已经成为中国各阶层网民普遍使用的IM工具,而且这个市场还在扩大之中。根据中国互联网络信息中心(CNNIC)在今年1月发
  • 选择服务器是一项重大决策,通常费时费钱。错误的决策会导致不良后果。在本文中,我们将首先谈谈一些在规划时需考虑的问题,然后进一步讨论如何在Wi
  • 我们终于进入了这个社会。从此结束了被学校老师看管的生涯,结束了做父母乖宝贝的日子,也结束从父母兄长那里拿钱的幸福时光。我们从家里搬了出来,提
手机版 网站运营 asp之家 www.aspxhome.com