初识服务发现及Consul框架的简单使用

2023-11-04

1.什么是服务发现?

服务发现组件记录了(大规模)分布式系统中所有服务的信息,人们或者其它服务可以据此找到这些服务。

DNS 就是一个简单的例子。

当然,复杂系统的服务发现组件要提供更多的功能,例如,服务元数据存储、健康监控、多种查询和实时更新等。

服务发现是支撑大规模 SOA 的核心服务。

2.服务发的关键特性 

      高可用的

      服务目录

      服务查找

      服务注册

3.为什么要使用服务发现

      假设我们写的代码会调用 WebService、Rest Api、 Thrift API 的服务。在调用过程中,为了完成一次请求,代码需要知道服务实例的网络位置(IP 地址和端口)。

      整个过程,对于基于云端的、现代化的微服务应用而言,这却是一大难题。

为了更好的让大家了解服务发现的发展过程,现在举个例子。

3-1【单体应用】

      假设你是项目经理或者公司的架构师,正准备组织团队开发一款产品,类似滴滴与Uber的出租车调度软件。

      其中系统的核心业务有:客户端、司机端、定位、通知、支付

      传统的架构图为:六边形架构(即模块化的单体是应用),也称单体式应用,如下图

 image 

单体应用的不足 

     这种简单方法却有很大的局限性。

      一个简单的应用会随着时间推移逐渐变大。在每次的迭代中,开发团队都会面对新“故事”(需求),然后开发许多新代码。

      几年后,这个小而简单的应用会变成了一个巨大的怪物。

      如果有经验的管理者都知道,一旦你的应用变成一个又大又复杂的怪物,那开发团队肯定很痛苦。

      敏捷开发和部署举步维艰,其中最主要问题就是这个应用太复杂,以至于任何单个开发者都不可能搞懂它。

            1> 降低开发速度

            2> 不利于持续性开发

            3> 模块相互冲突

            4> 可靠性低

            5> 重构困难

3-1【微服务】

      随着时间的发展和项目的发展,业务团队越来越庞大,业务越来越复杂,单体应用架构已经无法满足项目需求,所以微服务就腾空出世了。

      许多公司,比如Amazon、eBay,通过采用微处理结构模式解决了单体应用出现的问题。

      其思路不是开发一个巨大的单体式的应用,而是将应用分解为小的、互相连接的微服务。

image

微服务架构的好处

      1.单个服务很容易开发、理解和维护。

      2.这种架构使得每个服务都可以有专门开发团队来开发。

      3.微服务架构模式是每个微服务独立的部署。

      4.微服务架构模式使得每个服务独立扩展。

 

微服务架构的不足

      微服务应用是分布式系统,由此会带来固有的复杂性。

      服务地址目录,服务健康度,部署困难,服务依赖问题,数据库分区问题。

如何解决微服务出现的这些问题呢?服务发现框架在这时就闪亮登场了。

4.常见的服务发现框架有哪些

     常见服务发现框架 Consul、 ZooKeeper以及Etcd

     ZooKeeper是这种类型的项目中历史最悠久的之一,它起源于Hadoop。它非常成熟、可靠,被许多大公司(YouTube、eBay、雅虎等)使用。

     etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统。其很容易部署、安装和使用,提供了可靠的数据持久化特性。它是安全的并且文档也十分齐全。

 

Zookeeper

etcd

Consul

产生时间

原生语言

JAVA

Go

Go

算法

Paxos

Raft

Raft 

多数据中心

不支持

不支持

支持

健康检查

支持

不支持

支持

web管理界面

支持

不支持

支持

http协议

较为复杂

支持

支持

DNS协议

较为复杂

不支持

支持

 

4.Consul服务发现框架介绍 

     Consul是强一致性的数据存储,使用gossip形成动态集群。它提供分级键/值存储方式,不仅可以存储数据,而且可以用于注册器件事各种任务,从发送数据改变通知到运行健康检查和自定义命令,具体如何取决于它们的输出。下面两张图是Consul的原理图

image

 

image

4.Consul配置入门及健康监测 

4-1 配置拓扑图

image

 

4-2 Consul 集群配置

服务端配置

N1节点

consul agent -server -bootstrap-expect 2 -data-dir ./tmp/consul -node=n1 -bind=192.168.109.241 -ui-dir ./dist -dc=dc1

N2节点

consul agent -server -bootstrap-expect 2 -data-dir ./tmp/consul -node=n2 -bind=192.168.109.203 -ui-dir ./dist -dc=dc1

客户端配置

C1节点

consul agent -data-dir ./tmp/consul -ui-dir ./dist -bind=192.168.109.204 -dc=dc1

4-3 Consul  服务注册及健康检验

客户端配置

consul agent -data-dir ./tmp/consul -ui-dir ./dist -bind=192.168.109.204 -dc=dc1 -config-file=./conf

查看集群命令

consul info 查看当前consul 信息,里面可以找到state属性

image

consul members 查看consul成员

健康监测

监测Service1.svc服务是否正常

{

"log_level": "TRACE",

"encrypt": "7TnJPB4lKtjEcCWWjN6jSA==",

"service": {

"name": "web3",

"tags": ["master"],

"address": "127.0.0.1",

"port": 80,

"checks": [

{

"http": "http://127.0.0.1:1111/Service1.svc",

"interval": "10s"

}

]

}

}

 

5 C#调用Consul源码

https://github.com/PlayFab/consuldotnet

参考资料

http://consul.la/start

 

http://www.alauda.cn/2016/07/20/​microservices-service-discovery/

 

http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654067913&idx=1&sn=57be320f6b196a5b74e459263ea3854d&scene=2&srcid=0909dAdQMn3SBkUyX2sNqLMu&from=timeline&isappinstalled=0&ptlang=2052&ADUIN=136208196&ADSESSION=1473379431&ADTAG=CLIENT.QQ.5485_.0&ADPUBNO=26602#wechat_redirect

 

https://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=208173179&idx=1&sn=392c17b136c2bf570429785702d98353&scene=0&key=dffc561732c226516d4dccb1f165c5b24e823a11384b262d55dc20e3bd0d4cd21c219e8fc2bb2817fd3ccd46f36db04a&ascene=14&uin=ODY5ODkzMzQw&devicetype=iPhone+OS8.4.1&version=16020610&nettype=WIFI&fontScale=100&pass_ticket=yxu6Cmc0yX5TWpekVDtFbQhGNYo%2BPbTVmjkpYiq2xiXv6Mbhq3rZUqZkbefMNm11







https://www.cnblogs.com/newP/p/6349316.html




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识服务发现及Consul框架的简单使用 的相关文章

  • Consul+Ocelot搭建微服务实践--IdentityServer集成

    文章目录 1 IdentityServer介绍2 建立IdentityServer2 1 安装IdentityServer42 2 定义配置中心2 2 1 定义Client2 2 2 定义ApiResource2 2 3定义Identity
  • docker-compose搭建consul集群环境

    目录 consul基本概念 server模式启动的命令行参数 使用docker compose来搭建如下的consul集群环境 编辑docker compose yml文件 启动服务 常用命令 注册配置中心例子 yml KV访问的例子 co
  • consul配置

    配置文件 1 除了命令行选项之外 xff0c 配置还可以放入文件中 在某些情况下 xff0c 这可能更容易 xff0c 例如使用配置管理系统配置Consul时 2 配置文件是JSON格式 3 配置文件不仅用于设置代理 xff0c 还用于提供
  • SpringCloud - consul 服务注册生产(2)

    SpringCloud consul 服务注册生产 xff08 2 xff09 1 添加maven 依赖 lt dependency gt lt groupId gt org springframework boot lt groupId
  • SpringCloud(五)Consul服务注册与发现

    SpringCloud xff08 四 xff09 zookeeper介绍及原理 xff1a https blog csdn net weixin 45606067 article details 108538357 Consul简介 是什
  • consul安装

    consul安装 1 什么是consul 2 安装过程 2 1 下载 2 2 解压 使用unzip命令解压 在linux上这个时候就代表已经安装成功了 2 3 启动consul 2 4 访问consul的后台管理页面 其端口默认是8500
  • 替代Eureka,你可以试试Consul

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 1 Eureka官宣2 x版本不再开源 2 互联网大厂的基础架构 自研服务注册中心 3 中小公司的其他选择 Consul 1 Eureka官方宣布2 x不再开源
  • 解密5G新基建浪潮下的“智慧杆塔”缘何火热

    文章版权所有 未经授权请勿转载或使用 关于智慧杆塔并不算一个新概念或新领域 从早期的智慧路灯 到加载少量城市传感器或电子广告牌的智慧灯杆等 都属于智慧杆塔的早期概念或雏形 但近来笔者通过走访灯杆生产厂商发现 行业终于盼来了爆发的春天 智慧杆
  • 初识服务发现及Consul框架的简单使用

    1 什么是服务发现 服务发现组件记录了 大规模 分布式系统中所有服务的信息 人们或者其它服务可以据此找到这些服务 DNS 就是一个简单的例子 当然 复杂系统的服务发现组件要提供更多的功能 例如 服务元数据存储 健康监控 多种查询和实时更新等
  • (三)springcloud之Consul注册服务与发现

    此文主要记录springcloud的zookeeper的注册与发现 没有过多解释 只是为了提供后期拷贝使用 主要模块分为 0 父工程模块 主要用来作为版本管理 1 公共模块Common API 用来封装其他模块的共同的功能 比如bean类
  • Consul(注册中心)部署

    目录 前言 一 Docker consul 注册中心 1 什么是consul 2 consul干什么 3 常见的注册中心 4 Consul 特性 5 Consul的使用场景 6 Consul的基本架构 二 consul集群 1 server
  • 如何引导机器?如何面临人机结合?《​人工智能与人类未来》

    微信公众号 乐生活与爱 公众号曾转载过蔡恒进教授的奇文 意识如何演化 机器何时有自我意识 附着与隧通 心智的工作模式 值得反复也读 我上周听了由北京大学博古睿研究中心 中国人民大学哲学院 中国人民大学哲学与认知科学交叉平台 服务器艺术联合主
  • 最燃黑客情报官薛锋:端起AK伏特加,代表人民把坏人抓

    文 史中 一 情报专家从未凋零真相并不总是像女神一样遥不可及 在二战最为焦灼的时候 盟军迫切地想知道一件事情 德国人究竟有多少坦克 于是他们派出间谍 破译电报 对德国俘虏刑讯逼供 得出的结论是 德国每个月可以生产1000多辆坦克 可是好像哪
  • 阿里把中台变薄,背后逻辑是什么?

    颠覆式创新怎么做 中台适合做组合式创新 不适合做颠覆式创新 那么颠覆式创新如何做呢 各家巨头做法不太一样 腾讯使用 赛马机制 马化腾没有想到 10年前的那场 赛马 最后跑出来的是一个叫张小龙的人和他所带领的 微信 团队 而他们此前 从来没做
  • springboot注册到consul中报错:Spring MVC found on classpath, which is incompatible with Spring Cloud

    今天在做springboot整合成springCloud并注册到consul中时 发现若注册到consule中成功 则不能启动swagger 且不能提供任何API服务 要是能提供API服务则不能注册到consule中 并报错 Spring
  • 如何分离多机集群配置的各个阶段?

    假设我有 4 个 Vagrant 盒子 3 种是相同配置的变体 例如 Consul 而一种具有完全不同的配置 例如数据库 我需要在三个配置相似的 Consul VM 上运行一个略有不同的配置步骤 然后 我需要针对其中 1 个 Vault V
  • 我的 docker 镜像是否需要自己的 consul 客户端实例?

    我有一个 dockerized 应用程序 分为几个容器 一些前端和后端服务器 负载均衡器 mysql elasticsearch 等 负载均衡器的配置需要知道哪些容器已启动 因此我使用 Consul 服务发现来注册服务 但我不太确定在每个
  • Consul HTTP请求获取所有kv值

    我需要得到所有consul使用 http api 的 kv 值 目前我可以使用以下命令获取一个值 curl k X GET https consul banuka1 us east 2 test 8543 v1 kv banuka test
  • Docker swarm:如何手动设置节点名称?

    有关我的环境的一些背景 我有 docker swarm 在 3 个 ubuntu 14 04 vagrant 盒子上运行 swarm master 在一台机器上运行 带有 consul 另外 2 台机器正在运行加入到 master 的 Sw
  • Consul 检查 HTTPS 自签名

    我使用 Consul 注册 Web 应用程序 Web应用程序使用Java Consul客户端来注册检查 我可以使用自签名 CA 激活 TLS 和加密 以加密领事代理之间以及我的 web 应用程序和领事代理之间的交换 但我无法使用自签名 CA

随机推荐

  • zookeeper集群扩容/下线节点实践

    环境 zookeeper版本 3 4 6 jdk版本 1 7 0 80 10 111 1 29 zk1 10 111 1 44 zk2 10 111 1 45 zk3 10 111 1 46 zk4 10 111 1 47 zk5 一 zo
  • python输出带有颜色的内容

    20200816 主要参考了文章 1 不使用第三方库 我当时的需求只需要将字体变色 比如输出 Error 其中Error为红色 def error print output print 033 31mError 033 0m output
  • strstr(str1,str2)函数使用 出现问题解析

    定义 strstr str1 str2 函数用于判断字符串str2是否是str1的子串 如果是 则该函数返回str2在str1中首次出现的地址 否则 返回NULL 定义说的有点羞涩难懂 举个例子就知道了 比如 char str2 cdef
  • 学习率与batch-size大小的关系

    近日训练的电脑从一个显卡升级到了4张显卡 这就意味着能够更快的训练速度 但是实际中 并不是这样的 多卡意味着可以使用大点的batch size 这样子会导致每个epoch收敛的更慢了 虽然说速度变快了 但是更新次数变少了 所以收敛的更慢了
  • Java正则表达式Pattern和Matcher

    Java字符串支持使用正则表达式进行替换和分隔操作 字符串提供的正则表达式操作是有限的 比如打印正则表达式匹配到的每一个字符串就无法通过字符串提供的方法来实现 Java使用Pattern和Matcher两个类来支持正则表达式功能 字符串提供
  • java:错误: 找不到符号

    我写了这样一个代码 class Demo public static void main String args int arr 3 5 1 7 2 3 5 6 6 1 8 2 int sum 0 for int x 0 x
  • Llama 2|Meta开源语言模型

    此次 Meta 发布的 Llama 2 模型系列包含 70 亿 130 亿和 700 亿三种参数变体 此外还训练了 340 亿参数变体 但并没有发布 只在技术报告中提到了 据介绍 相比于 Llama 1 Llama 2 的训练数据多了 40
  • 应用层--DNS

    目录 2 4 DNS 域名系统 2 4 1 域名 域名的层级分类 域名的构成 域名管理 2 4 2 域名服务器 DNS 根名字服务器 权威服务器 TLD服务器 本地名字服务器 Local Name Server 名字服务器 Name Ser
  • mysql全局自动提交,MySQL自动提交

    在MySQL中 如果不更改其自动提交变量 则系统会自动向数据库提交结果 用户在执行数据库操作过程中 不需要使用START TRANSACTION语句开始事务 应用COMMIT或者ROLLBACK提交事务或执行回滚操作 如果用户希望通过控制M
  • 绿色经营:从优秀到卓越最显性准则

    关注 实在的力量 郑崇华与台达电的经营智慧 一书 是受 绿色企业家 的启发 绿色企业家 是美国绿色企业标杆英特飞公司的创始人雷C 安德森的自传体管理专著 联想到 从绿到金 等书 我们知道许多美国企业已经从绿色经营中实实在在获利并走上健康的发
  • Unity3D启动时卡在项目Loading界面的解决方法

    问题描述 打开U3D的时候 U3D一直卡在项目选择的界面上 一直显示 Loading 关闭重新开也不行 可能原因 项目配置发生错误 导致无法读取 一直卡Loading 解决方案 1 找到最近一次操作U3D时所加载的项目 一般大概率是这个 如
  • 数字化转型必备:数睿通 2.0 数据中台升级详解

    引言 转眼又过了一个月的时间 数睿通 2 0 数据中台也迎来了本月的更新 本次更新主要包括 数据资产完善 资源评价 数据集市完善 打通审批流程 修复数据生产由于 Druid SQLUtils 不支持 Doris 导致无法建表的问题 优化贴源
  • element-plus dialog #header无效

    这是官方文档的一个坑 来看下官方的案例 他这里使用的是 header来标记title插槽 正确应该是 title 而官网案例打开后也是看不到的自定义的标题内容的 标题这一栏是空白的 而看文档说明也是叫使用的header 这里下面还标注了ti
  • 神秘AI换脸软件入侵全球社交网络!马斯克秒变文艺复兴贵族

    人工智能学习离不开实践的验证 推荐大家可以多在FlyAI AI竞赛服务平台多参加训练和竞赛 以此来提升自己的能力 FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台 每周免费提供项目开源算法样例 支持算法能力变现以及快
  • Vue3中自定义指令监听元素尺寸变化

    vue对元素的宽高变化看了一下 基本都是用的定时器解决的 刚好看到JS的一个属性方法 可以专门监测元素的尺寸变化 MDN地址 https developer mozilla org zh CN docs Web API ResizeObse
  • JSON数据格式解析库(cJSON、Jansson)的使用&在STM32上移植和使用

    json json c使用入门 这篇讲的也不错 抽空看下 网络传输json数据 https www bilibili com video av669454528 p 3 spm id from pageDriver 目录 轻量级C语言JSO
  • 步骤教学 :安装下载Oracle VM VirtualBox + 安装win7 win10镜像文件

    网上一大堆资料 发现搜不到安装镜像文件的步骤 在自己捣鼓完了之后 决定自己写一篇 1 官网下载Oracle VM VirtualBox Downloads Oracle VM VirtualBox 2 安装好Oracle VM Virtua
  • 更改ElementUI默认样式的方法

    1 添加没有scoped的样式 页面中可以有多个 2 有scoped css原生写法 用 gt gt gt gt gt gt 前面可以是父元素或祖先元素 3 项目中用到了scss sass less 都可以使用 deep
  • TCP连接的建立与释放

    一 TCP连接的建立 1 先搭建一个合适的拓扑建立连接 这是一个已经连接好的拓扑 2 PC1 客户端 发送请求建立TCP的请求报文 图为客户端发送的TCP连接建立请求报文 此时的SEQUENCE NUMBER和ACK NUMBER的值均为0
  • 初识服务发现及Consul框架的简单使用

    1 什么是服务发现 服务发现组件记录了 大规模 分布式系统中所有服务的信息 人们或者其它服务可以据此找到这些服务 DNS 就是一个简单的例子 当然 复杂系统的服务发现组件要提供更多的功能 例如 服务元数据存储 健康监控 多种查询和实时更新等