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

相关推荐
时空无限16 小时前
vllm 缓存对模型启动时间的影响
缓存·vllm
xexpertS16 小时前
分布式系统过载治理:如何通过较小服务控制请求节奏
微服务·自动化
青山木20 小时前
Redis 缓存一致性全解:从 Cache Aside 到延迟双删、Canal+MQ 的进阶之路
java·数据库·redis·后端·缓存
爱学习的小可爱卢20 小时前
SpringCloud——微服务实战:OpenFeign与Nacos服务调用详解
spring·spring cloud·微服务
吴声子夜歌21 小时前
MongoDB 4.x——微服务入门
java·mongodb·微服务
咏方舟【长江支流】21 小时前
【开源】跨语言·跨平台·跨数据库(6) ——一种ORM缓存的接口实现和容错处理
数据库·缓存·开源·咏方舟-长江支流·用宝框架
阿标在干嘛1 天前
从HTTP到WebSocket:招投标信息实时推送系统的协议选型与架构设计
大数据·微服务·架构
爬也要爬着前进1 天前
redis主从搭建
数据库·redis·缓存
VortMall2 天前
『平台去经营化』平台治理能力全新重构|VortMall微服务商城系统v1.3.10
java·大数据·微服务·商城系统·开源商城·vortmall·去经营化
Wang's Blog2 天前
Go-Zero项目开发9: 微服务治理之服务注册中心
微服务·golang