Eureka注册中心(学习笔记)

227 阅读3分钟

「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

Eureka注册中心

一、简单的入门理解

背景:

单体架构已经根据业务拆分为各种子系统,为了单一职责原则,也将对应的数据库拆分为多个数据库。

需求:

现有两个子系统,分别为订单模块、用户模块,想要查询其中一笔订单,其信息包含订单详情,更有用户信息,其中两个数据库的数据并不相通(不能通过左连接查询查出)。如何才能查询出订单信息呢?

思路:

一、既然用户模块也是一个系统,那么定义好接口,并且提供给订单模块使用,在查询订单的时候一并调用用户模块的API,将返回的数据一起封装好返回给用户不就ok了。

那么,直接调用另一个模块的写法是不是有一些不妥呢?万一以后业务多起来了,这那个该调那个呢,真就三国大乱斗了。又万一这个api挂掉了,影响到后面的业务流程,那且不是GG了,客户又该询问亲人了。况且公司一般又分为开发,测试,真实场,配域名就很 烦咯。

二、此时一位靓仔(Eureka)出现,我们统一将api由这位靓仔进行管理,它也有这样的能力,这样我就不用烦了,专心我的业务就好了。

二、Eureka一些知识

先分几个角色:服务提供者、服务消费者 对于上面的问题,那毋庸置疑的订单模块就是我们的服务消费者,而用户模块就是我们的服务提供者,这不是固定而言,而是相对而言的。

Ecureka 的 eureka-server 和 eureka-client, 先上图

在这里插入图片描述 Eureka也分两各角色,分别为Server和Client,也就是服务端跟客户端吧。 图中共有四个步骤:

  1. 既然Eureka帮你管理你的接口,你先得把你的接口告诉他吧,由服务提供者注册给Eureka,eureka也会防止你的服务挂掉,会有一个心跳策略来检查你(服务)是否正常,不正常就去掉呗。
  2. 随后你的消费者问Eureka拿对应的服务列表(有可能用户模块不止一个端口)
  3. 你拿到一个列表,那你该调用谁呢,这里他就用一个负载均衡来帮你做决定。
  4. 然后就over了,调用这个服务即可。

总结一下 Eureka-server做了啥?

  • 记录服务信息
  • 心跳策略,防止你挂掉

Eureka-client呢

  • 他有服务提供者
    • 负责提供服务信息
    • 发生心跳信息,证明自己是活着的
  • 也有服务消费者
    • 根据所需跟Eureka-server拉取服务
    • 根据列表做一个负载均衡