优惠券分发系统-学习笔记-第四章

第四章学习旅程记录-eureka 相关内容

Eureka

Eureka 包括两个组件

  • Eureka Server
  • Eureka Client

每个 Eureka Client 都包含下列功能

  • 服务注册
  • 心跳续约
  • 下线
  • 获取服务信息

一般来说,一个 Eureka Server 也是一个 Eureka Client (因为多节点需要向其他 server 进行注册)。

Eureka Server 将注册信息保存为元数据

1
ConcurrentHashMap<String, Map<String, Lease<InstacnInfo>>> metaInfo;

元数据的 key 是应用名称,一般每个应用都要标识名称,然后嵌套 map 中存储了 ip 端口 等信息。

spring-cloud 相关依赖不再 maven 中心仓库,所以需要配置远程仓库地址。

1
2
3
4
5
6
7
8
9
10
11
<!-- 配置远程仓库 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

单节点的 eurekaServer 要关闭服务发现和将自身注册的功能,因为不需要。

Zuul

Zuul 是一个 API GATEWAY 服务器,本质上是一个 Web Servlet 应用。

Zuul 提供了下列功能

  • 动态路由
  • 监控

这些功能的核心是实现了一系列的过滤器。

zuulFilter

一个请求经过 zuul 最少要通过四种过滤器:

  • pre filters 请求在路由被处理之前调用
  • routing filters 将请求路由到微服务
  • post filters 路由到微服务以后返回给客户端
  • error filters 出错时处理

custom filters 是用户自定义的过滤器,类型可以是上面的任意一种。

自定义过滤器需要继承 ZuulFilter,并实现四个抽象方法。

  • filterType, 对应 zuul 的四个生命周期,pre,post,routing,error
  • filterOrder,过滤器的优先级,数字越小,优先级越高,同类型
  • shouldFilter:返回 boolean 是否过滤
  • run:过滤器的实际逻辑