第四章学习旅程记录-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 | <!-- 配置远程仓库 --> |
单节点的 eurekaServer 要关闭服务发现和将自身注册的功能,因为不需要。
Zuul
Zuul 是一个 API GATEWAY 服务器,本质上是一个 Web Servlet 应用。
Zuul 提供了下列功能
- 动态路由
- 监控
这些功能的核心是实现了一系列的过滤器。
一个请求经过 zuul 最少要通过四种过滤器:
- pre filters 请求在路由被处理之前调用
- routing filters 将请求路由到微服务
- post filters 路由到微服务以后返回给客户端
- error filters 出错时处理
custom filters 是用户自定义的过滤器,类型可以是上面的任意一种。
自定义过滤器需要继承 ZuulFilter,并实现四个抽象方法。
- filterType, 对应 zuul 的四个生命周期,pre,post,routing,error
- filterOrder,过滤器的优先级,数字越小,优先级越高,同类型
- shouldFilter:返回 boolean 是否过滤
- run:过滤器的实际逻辑