(三)总结(缓存/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

相关推荐
stark张宇1 天前
微服务架构必备:Gin + gRPC + Consul + Nacos + GORM 打造用户服务
微服务·gin·grpc
阿里云云原生4 天前
MSE Nacos Prompt 管理:让 AI Agent 的核心配置真正可治理
微服务·云原生
阿里云云原生5 天前
阿里云微服务引擎 MSE 及 API 网关 2026 年 1 月产品动态
微服务
知我Deja_Vu5 天前
redisCommonHelper.generateCode(“GROUP“),Redis 生成码方法
数据库·redis·缓存
麦聪聊数据5 天前
统一 Web SQL 平台如何收编企业内部的“野生数据看板”?
数据库·sql·低代码·微服务·架构
没有bug.的程序员5 天前
电商秒杀系统深度进阶:高并发流量建模、库存零超卖内核与 Redis+MQ 闭环
数据库·redis·缓存·高并发·电商秒杀·流量建模·库存零超卖
troublea5 天前
ThinkPHP3.x高效学习指南
mysql·nginx·缓存
云司科技codebuddy5 天前
技术支持过硬Trae核心代理
大数据·运维·python·微服务
troublea5 天前
ThinkPHP6快速入门指南
数据库·mysql·缓存
Emotional。5 天前
AI Agent 性能优化和成本控制
人工智能·深度学习·机器学习·缓存·性能优化