(三)总结(缓存/ETag请求头)


文章目录

  • 项目地址
  • 一、缓存
    • [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的顶部写上缓存的事件
    1. 在依赖注入里添加缓存服务
    2. 注册缓存中间件在program里
    3. 在Controller的头部添加缓存

1.2 ETag请求头(不常用)

  1. 创建InMemoryETagStore类,用来设置,获取和更新内存中的ETag
  2. 实现ETagMiddleware类,用于对内存中的ETag进行判断
  3. 注册InMemoryETagStore服务和ETagMiddleware

二、乐观锁

  1. 添加使用乐观锁的请求类型 put和patch
  2. 在上面Etag的基础上,添加ifMatch请求头
  3. 判断当前内存中的Etag和请求头中的ifMatch是否相等
  4. 如果不相同,就说明有并发数据不一致问题
  5. 在会出现并发问题的controller的方法里注入InMemoryETagStore服务
  6. 在数据存储后,设置新的Etag值

三、HTTP Resilience/Polly/Rate limit

3.1 HTTP Resilience

  • 解决请求外部api时候,遇到的错误,并且自动恢复
    1. 直接在Refit服务配置后面,实现重试,熔断等策略

3.2 Polly

  • 失败重试3次,如果还失败,就停留30s后在请求

3.3 Rate limit

  • 给登用户使用token bucket策略
  • 给匿名用户使用Fixed Window策略

四、Idempotent Request Header

相关推荐
MetaLite13 小时前
Spring 同一个类里调用 @CacheEvict,为什么缓存没清掉?
java·spring·缓存
hweiyu0013 小时前
Redis命令:SMOVE
redis·缓存
可乐ea13 小时前
Agent 隔离为什么失效:CPU 缓存成了跨机器信道
缓存·ai智能体·红队测试·沙箱安全·agent隔离·侧信道
谢白羽15 小时前
从传统运维到 AI Infra: K8s 上调度 100 张 GPU踩坑笔记
运维·人工智能·缓存·kubernetes·vllm·sglang·vllm-omni
萧瑟余晖16 小时前
Spring缓存抽象详解
java·spring·缓存
李纲明16 小时前
WordPress 前台改完还是旧页:浏览器、CDN、页面缓存、对象缓存怎么分层清
缓存·cdn·wordpress·devdiy
我不会起名字32218 小时前
服务注册了却调不通:注册中心与心跳的 3 个时间参数
微服务·nacos·注册中心·排查
乐观的Terry18 小时前
AI翻译助手-JWT与redis无状态认证
数据库·redis·缓存
知已难寻18 小时前
第 5 篇 · 云原生生态与实践:微服务、DevOps、可观测性与 Serverless
大数据·linux·服务器·微服务·云原生·云计算·devops
牧瀬クリスだ19 小时前
Redis String深度解析:从底层到五大实战场景
数据库·redis·缓存