文章目录
- 项目地址
- 一、缓存
-
- [1.1 Cache-Control Header(不常用)](#1.1 Cache-Control Header(不常用))
- [1.2 ETag请求头(不常用)](#1.2 ETag请求头(不常用))
- 二、乐观锁
- [三、HTTP Resilience/Polly/Rate limit](#三、HTTP Resilience/Polly/Rate limit)
-
- [3.1 HTTP Resilience](#3.1 HTTP Resilience)
- [3.2 Polly](#3.2 Polly)
- [3.3 Rate limit](#3.3 Rate limit)
- [四、Idempotent Request Header](#四、Idempotent Request Header)
项目地址
- 教程作者:
- 教程地址:
- 代码仓库地址:
-
所用到的框架和插件:
dbt
airflow
一、缓存
1.1 Cache-Control Header(不常用)
- 直接在Controller的顶部写上缓存的事件
- 在依赖注入里添加缓存服务
- 注册缓存中间件在program里
- 在Controller的头部添加缓存
1.2 ETag请求头(不常用)
- 创建
InMemoryETagStore
类,用来设置,获取和更新内存中的ETag - 实现
ETagMiddleware
类,用于对内存中的ETag进行判断 - 注册
InMemoryETagStore
服务和ETagMiddleware
二、乐观锁
- 添加使用乐观锁的请求类型
put和patch
- 在上面Etag的基础上,添加
ifMatch
请求头 - 判断当前内存中的Etag和请求头中的
ifMatch
是否相等 - 如果不相同,就说明有并发数据不一致问题
- 在会出现并发问题的
controller
的方法里注入InMemoryETagStore
服务 - 在数据存储后,设置新的Etag值
三、HTTP Resilience/Polly/Rate limit
3.1 HTTP Resilience
- 解决请求外部api时候,遇到的错误,并且自动恢复
- 直接在Refit服务配置后面,实现重试,熔断等策略
3.2 Polly
- 失败重试3次,如果还失败,就停留30s后在请求
3.3 Rate limit
- 给登用户使用token bucket策略
- 给匿名用户使用Fixed Window策略