Spring cloud 解决硬编码问题——服务发现与服务注册(Spring cloud学习笔记 3)

前言:

Spring Cloud系列教程的所有博客均在下方的目录链接中,方便大家查找和阅读。建议按照顺序学习,对于项目搭建有疑问的可以着重看目录里的第二篇博客。
Spring cloud学习专栏目录

一、什么是硬编码问题

在我的上一篇关于实现微服务的简单demo博客中,我是将接口请求地址写死在代码中。这就带来了问题,如果接口地址发生变化,那我就需要去代码中进行修改,这样就很不方便。而且现在只是两个微服务,如果有几百个微服务,怎么可能去一个一个修改,所以我们要解决这个问题。
在这里插入图片描述
在这里插入图片描述

二、尝试解决硬编码问题

将请求的url写到application.properties文件中

这样虽然比之前直接写到代码中要好,但是还是存在问题。如果是几百个微服务,那么修改带来的工作量是极大的。而且一个服务提供者可能有多个服务消费者,也就是说如果服务提供者的IP或是端口号发生了变动那么调用它的服务消费者都需要进行修改。而这些服务消费者可能又是别的微服务的服务提供者,那么就意味着可能又有很多微服务需要进行修改,系统将变得非常难维护。所以这种方法也是不可行的。

三、服务发现与服务注册

3.1 简介:

这里我们将服务发现和服务注册理解为服务发现组件
注册:服务提供者和服务消费者在启动时将自己的网络地址注册到服务发现组件之中,服务消费者进行接口调用时,会到服务发现组件中去查询服务提供者的IP和端口然后进行调用。
发送心跳:每个正常运作的服务都要定时向服务发现组件发送心跳,因为服务在运行之中,我们不可能保证它永远都不出问题,如果一个服务出了问题不能正常工作,那么服务发现组件在几次没有接受到它的心跳之后,就会把它从注册列表中移除。
在这里插入图片描述

3.2 服务发现组件的功能

服务注册表: 服务注册表是一个记录当前可用服务实例的网络信息的数据库,是服务发现机制的核心。服务注册表提供查询API和管理API,使用查询API获得可用的服务实例,使用管理API实现注册和注销;
服务注册: 服务启动时,将服务的网络地址注册到服务注册表中;
健康检查: 服务发现组件会通过一些机制定时检测已注册的服务,如果发现某服务无法访问了(如某几个心跳周期后),就将该服务从服务注册表中移除。从而保证服务消费者可以调用到一个正常工作的服务提供者。

3.3 服务发现的方式

客户端发现: Eurake
服务端发现: Consul + nginx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值