文章目录
- 项目地址
- 一、缓存
- 1.1 Cache-Control Header(不常用)
- 1.2 ETag请求头(不常用)
- 二、乐观锁
- 三、HTTP Resilience/Polly/Rate limit
- 3.1 HTTP Resilience
- 3.2 Polly
- 3.3 Rate limit
- 四、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.3 Rate limit
- 给登用户使用token bucket策略
- 给匿名用户使用Fixed Window策略
四、Idempotent Request Header