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

相关推荐
知识即是力量ol1 小时前
基于 Redis 实现白名单,黑名单机制详解及应用场景
数据库·redis·缓存
fengxin_rou3 小时前
Redis 从零到精通:第一篇 初识redis
数据库·redis·缓存
猿小羽6 小时前
深入理解 Microservice Control Proxy(MCP) 的 AI 实战指南
微服务·ai·推荐系统·service mesh·microservice·mcp·ai 实战
陌上丨6 小时前
Redis内存使用率在95%以上,请问是什么原因?如何解决?
数据库·redis·缓存
dawdo2228 小时前
自己动手从头开始编写LLM推理引擎(9)-KV缓存实现和优化
缓存·llm·transformer·qwen·kv cache
掘根8 小时前
【即时通讯系统】项目框架与微服务拆分设计
微服务·云原生·架构
小北方城市网9 小时前
RabbitMQ 生产级实战:可靠性投递、高并发优化与问题排查
开发语言·分布式·python·缓存·性能优化·rabbitmq·ruby
陌上丨9 小时前
什么是Redis的大Key和热Key?项目中一般是怎么解决的?
数据库·redis·缓存
小园子的小菜9 小时前
深入剖析HBase HFile原理:文件结构、Block协作与缓存机制
数据库·缓存·hbase
廋到被风吹走9 小时前
【缓存优化】缓存穿透:布隆过滤器(Guava/RedisBloom)
缓存·guava