consul服务注册与发现、服务配置与刷新

本文探讨了在微服务架构中使用Consul作为服务注册与发现工具的原因,对比了Consul与Eureka的优缺点,并详细介绍了Consul的安装、服务发现、配置管理和持久化策略。特别关注了如何通过SpringCloudConsul进行服务注册和配置动态刷新的过程。
摘要由CSDN通过智能技术生成

在这里插入图片描述

为什么要用服务注册?为什么要用consul不用eureka?

举个栗子:
微服务当中存在多个服务模块,每个服务模块的ip端口在每套环境是不一致的,开发切换环境部署时,如果漏了一个配置忘记改动,将是一个很麻烦的事情,且如果集群当中,固定死的ip端口无法实现微服务的负载均衡,所以为了更好的减轻工作负担提高工作效率,针对不同情况适当引入服务治理功能,可以帮我们实现微服务之间的动态注册与发现。

不用eureka原因:
1、已暂停维护
2、对初学者不友好
3、本身也是个服务,需要开发去维护,无法与自己项目解耦,且后续有了更好的产品代替

consul简介

官网地址:https://www.consul.io/

是什么

Consul 是一套开源的分布式服务发想和配置管理系,由HashiCorp公司用Go言开发。提供了微服务系统中的服务治理、配程中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用。也可以一起使用以构建全方位的服务网格。总之Consu提供了一种完整的服务网格解决方案。它具有很多优点。包括:基于r化协议。比较简洁: 文持健康检査,同时文持 HTTP和 DNS 协议文持跨数拟中心的WVAN 集群提供图形界面跨平台。支持Linux、Mac、Windows

作用

  • 服务发现:提供http和dns两种发现方式
  • 监控检测:支持多种方式,http、tcp、docker、shell脚本定制
  • kv存储:key、value的存储方式(服务配置中使用到)
  • 多数据中心
  • 可视化的web界面

安装使用

下载路径:https://developer.hashicorp.com/consul/install

在这里插入图片描述
根据自己操作系统下载,具体下载如何安装,可自行网上搜索教程,下载后 输入命令 consul -verison,如果安装成功后出现以下配置信息则是安装成功,输入命令启动consul,consul agent -dev,启动成功后可访问http://localhost:8500页面
在这里插入图片描述

服务注册与发现

  1. 发现服务

项目引入consul的maven依赖,具体参考springcloud consul官方文档https://docs.spring.io/spring-cloud-consul/reference/quickstart.html

在这里插入图片描述
2、配置yml
在这里插入图片描述
3、springboot主启动类加上注解@EnableDiscoveryClient,用来开启服务发现

4、启动项目,访问consul界面,能发现服务已经注册上去了,如果有红叉不用担心,有延迟
在这里插入图片描述
如果项目出现以下日志,想要去掉
在这里插入图片描述
在maven中排除log包即可
在这里插入图片描述
服务注册完成后,后续restful接口调用的话可直接配置成域名+服务名,不用ip+端口写死
在这里插入图片描述
如果调用服务报错提示,找不到该服务,请在restTemplate配置中加上图下注解@LoadBalanced
在这里插入图片描述
在这里插入图片描述
原因是之前指定ip+端口,restTemplate知道明确要调用的是哪台机器的服务,用服务名调用的话,如果存在服务集群,不加该注解,不知道给指派给哪个服务,所以会报错找不到该服务。

服务配置与刷新

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的较度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。比如某些配置文件中的内容大部分都是相同的,只有个别的配置项不同。就拿数据库配置来说吧,如果每个微服务使用的技术栈都是相同的,则每个微服务中关于数据库的配置几乎都是相同的,有时候主机迁移了,就希望一次修政,处处生效。
consul的其中一个特性是支持这种页面上修改配置,能动态更新项目中的配置。

如何配置,参考官网:https://docs.spring.io/spring-cloud-consul/reference/config.html

服务配置

1、加入maven依赖
在这里插入图片描述
在这里插入图片描述

2、新增bootstrap.yml文件,将application.yml中希望能随时更改的放到bootstrap.yml中
在这里插入图片描述
profile-separator配置默认英文逗号分割,我们改为常用的-,用来区分不同环境的配置文件,具体原因后面步骤会说明
在这里插入图片描述

3、新增kv配置文件
consul如何知道每个服务的相对应的配置文件呢,是有一套约定规则的,参考图上,profile-separator国外是用英文逗号隔开的,所以文档也是config/后面服务名,环境/data,中间是可以随我们自己改动,config和data的目录是固定的,我们也可以改为用-来进行区分,例如

config/my-procet/data
config/my-procet-dev/data
config/my-procet-prod/data
默认找第一个,如果配置具体环境,则会指定配置文件去更新项目的配置文件
在这里插入图片描述
consul的创建kv配置也是有规则的

创建config文件夹-》创建服务名-环境文件夹-》创建data配置文件

创建文件夹名称后面多加个/,就会生成文件夹,不加/则生成文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件目录必须写对,否则data文件更新配置时,java项目是不会被consul动态更新的!!!

动态刷新

主启动类加上刷新注解@RefreshScope
在这里插入图片描述

如果改了consul上面的配置,项目中没有实时刷新不要担心(前提是consul文件路径配置正确),有延迟间隔55秒,如果想要立马生效可以加以下配置,spring.cloud.consul.confg.watch.wait-time,单位秒
在这里插入图片描述

问题:consul所在的服务器/consul重启后,之前配置的服务注册、config kv键值对数据还在吗?
答案:如果不做consul的配置和数据持久化配置,重启后是会清空。

至于怎么去做持久化,不难,大家自己发发力去找答案吧~

就先说到这 \color{#008B8B}{ 就先说到这} 就先说到这
在下 A p o l l o \color{#008B8B}{在下Apollo} 在下Apollo
一个爱分享 J a v a 、生活的小人物, \color{#008B8B}{一个爱分享Java、生活的小人物,} 一个爱分享Java、生活的小人物,
咱们来日方长,有缘江湖再见,告辞! \color{#008B8B}{咱们来日方长,有缘江湖再见,告辞!} 咱们来日方长,有缘江湖再见,告辞!

在这里插入图片描述

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Consul是一个开源的分布式系统工具,主要用于服务发现、健康检查和 kv 存储,常用于构建高可用性和容错的微服务架构。在生产环境中,配置Consul需要考虑以下几个关键步骤: 1. **安装与部署**: - 根据你的基础设施(如单机、容器或Kubernetes)选择合适的安装方法。 - 分配角色:设置一个或多个Consul服务器节点(通常作为领导者),以及客户端节点。 2. **配置文件**: - 在`/etc/consul/consul-template.d/`目录下管理动态配置模板,例如使用`consul-template`进行配置文件的自动刷新。 - 定义服务发现服务注册的策略。 3. **数据中心和节点**: - 创建数据中心,如`datacenter`,并为每个节点设置正确的数据中心标签。 - 启用跨数据中心复制(如有需要)。 4. **健康检查**: - 配置服务健康检查,包括HTTP/HTTPS、TCP连接等,并设置超时和重试规则。 5. **KV存储**: - 使用kv store来存储应用配置、元数据和其他临时数据。 - 可以设置ACL(访问控制列表)以保护敏感信息。 6. **安全**: - 开启TLS加密通信,启用证书验证。 - 如果需要,还可以设置防火墙规则和访问控制。 7. **监控与日志**: - 安装监控工具(如Prometheus、Grafana)来收集Consul的指标。 - 配置日志级别和输出目的地。 8. **故障转移**: - 如果集群规模较大,配置多主复制以增强高可用性。 相关问题: 1. 如何在Consul中创建和管理服务? 2. 如何设置Consul的健康检查模板? 3. Consul如何实现服务发现与负载均衡? 4. 如何在Consul中处理节点故障和恢复?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值