一、缓存分类

1、服务注册信息

1.1、GroupCode_VersionCode】对应【Version定义】的缓存

           

          缓存类型:hash

          缓存key:API:GrpVer:groupCode_VersionCode

          缓存val: version定义

          使用方式:String versionId = jedis.hget(RedisCachePrefix.getApiGrpVerKey(groupCode, versionCode), "id");

          更新场景:version上线, version下线修改后重新上线,version下线(王静)

          引擎缓存:无缓存,无监听

1.2、API 定义:API:ApiDef_

        缓存名称:

        缓存类型:

        缓存格式:api定义列表

        初始时机:version上线

        更新时机:version下线才能更新

        销毁时机:version下线

        引擎缓存:有,订阅 [apigateway.apis:online,offline] 事件

1.3、后端签名密钥:API:BckKey_

        缓存名称:

        缓存类型:

        缓存格式:SvcClientKey,"SvcClientSecret:SvcClientId:OwnerId:OwnerName" >

        初始时机:后端签名密钥创建

        更新时机:后端签名密钥重置

        销毁时机:无

        引擎缓存:无

2、服务使用信息

2.1、前端签名密钥:API:FrtKey_

        缓存名称:

        缓存类型:

        缓存格式:DevClientKey_VersionId,"DevClientSecret:InstId:DevClientId:OwnerId:OwnerName" >  ,绑定、解绑刷新

        初始时机:前端签名密钥绑定

        更新时机:前端签名密钥重置

        销毁时机:服务使用实例回收,回收时删除服务使用实例,(周鲁,遍历解除绑定,干掉绑定缓存)

        引擎缓存:无

2.2、服务使用策略:API:InstPol_

        缓存名称:

        缓存类型:

        缓存格式:<InstId_ApiId_Policy, Map<策略Key,策略Val> > 

        

       初始时机:服务使用申请审核、服务使用升级申请审核时,缓存服务使用策略

        更新时机:升级申请审批的时候,更新服务使用实例,同步刷新缓存数据

        销毁时机:服务使用实例回收

        引擎缓存:无

3、网关运行期缓存(引擎自维护)

3.1、请求随机数(nonce):API:ChkNon_

        缓存名称:

        缓存类型: 

        缓存格式:<api_nonceid, "" > 

        初始时机:该请求第一次访问

        更新时机:无

        销毁时机:目前每分钟自动销毁,有效期可配置(启庆)

        引擎缓存:无

3.2、API访问频次:API:ChkFrq_

        初始时机:该API第一次访问

        更新时机:该API每次访问

        销毁时机:无

        引擎缓存:无

3.3、配额检查:API:ChkQut_

        初始时机:该API第一次访问

        更新时机:该API每次访问

        销毁时机:无

        引擎缓存:无

二、缓存刷新

1、版本管理

1.1、版本上线

配置中心:缓存 version定义、api定义

网关引擎:订阅更新 本地的version定义和api定义缓存(骞骞验证一下)

1.2、版本下线

配置中心:干掉version定义、api定义缓存

网关引擎:订阅更新,干掉本地的version定义和api定义缓存(骞骞验证一下)

2、后端密钥管理

2.1、后端密钥创建

配置中心:缓存后端密钥

网关引擎:无缓存,不需要动作

2.2、后端密钥绑定

配置中心: version需要先下线再上线,所以绑定关系会随版本重新上线刷新

网关引擎:无缓存,不需要动作

2.3、后端密钥解绑

配置中心:version需要先下线再上线,所以绑定关系会随版本重新上线销毁

网关引擎:无缓存,不需要动作

3、审批申请

3.1、审批使用申请

配置中心:产生服务使用实例,刷新策略缓存

网关引擎:无缓存,不需要动作

3.2、审批使用升级申请

配置中心:更新服务使用实例,刷新策略缓存

网关引擎:无缓存,不需要动作

3.3、回收服务使用实例

配置中心:去掉前端密钥缓存、服务使用实例缓存(包括svcUserId)

网关引擎:无缓存

4、前端密钥管理

4.1、前端密钥创建

配置中心:无缓存动作

网关引擎:无缓存

4.2、前端密钥绑定

配置中心:增加前端密钥缓存

网关引擎:无缓存

4.3、前端密钥解绑

配置中心:去掉前端密钥缓存

网关引擎:无缓存

5、一键刷新

配置中心:一键刷新,刷新所有的缓存,发布【apigateway.refreshAll】事件

网关引擎:刷新网关本地缓存

api-gateway实践(05)新网关工作 - 缓存定义的更多相关文章

  1. .net core 微服务之Api网关(Api Gateway)

    原文:.net core 微服务之Api网关(Api Gateway) 微服务网关目录 1. 微服务引子 2.使用Nginx作为api网关 3.自创api网关(重复轮子) 3.1.构建初始化 3.2. ...

  2. 分享一个国内首个企业级开源的GO语言网关--GoKu API Gateway

    一. 简介 GoKu API Gateway,中文名:悟空API网关,是国内首个开源go语言API网关,帮助企业进行API服务治理与API性能安全维护,为企业数字化赋能. GoKu API Gatew ...

  3. 微服务实战(二):使用API Gateway

    微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...

  4. [转载] 构建微服务:使用API Gateway

    原文: http://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=206889381&idx=1&sn=478ccb35294c ...

  5. 微服务实战-使用API Gateway

    当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互.在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点.在微服务架构中,每一个微服务暴露一组细粒度的服务提供点.在本篇文章中,我 ...

  6. 使用API Gateway

    http://dockone.io/article/482 [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择. Do ...

  7. 微服务实战(二):使用API Gateway - DockOne.io

    原文:微服务实战(二):使用API Gateway - DockOne.io [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用 ...

  8. 谈谈微服务中的 API 网关(API Gateway)

    前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了,在这里给大家抱歉. 那么,在本篇文章中,我们就一起来探 ...

  9. 微服务中的 API 网关(API Gateway)

    API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需进行 ...

随机推荐

  1. PDB调试python代码常用命令

    常用命令 where(w) 找出当前代码运行位置 list(l) 显示当前代码的部分上下文 list n(line number) 显示指定行的上下文 list m, n(line number) 显 ...

  2. 关于 preHandle 重写和添加参数问题,重写HttpServletRequestWrapper和Filter

    由于 preHandle 中HttpServletRequest 只有setAttribute而没有setParameter 也没有 add 方法 所以是没办法直接添加参数的.从网上查了很多资料,基本 ...

  3. 使用证书创建request请求

    之前写过的程序,都是普通http request. 这是第一次使用,记录下. private static X509Certificate2 GetCert(string certId,StoreLo ...

  4. LNMP详解

    目录 Nginx配置    1 PHP解析    1 Mysql操作    3 服务安装    3 连接测试    3 数据配置    3 Blogs建立    4   LNMP 环境 Mysql:1 ...

  5. Could not create the view: An unexpected exception was thrown的解决方法

    MyEclipse下面的server窗口突然不能正常显示了,而且还显示Could not create the view: An unexpected exception was thrown(无法创 ...

  6. Mycat 分片规则详解--枚举分片

    实现方式:切分规则根据文件(partition-hash-int.txt)配置的可能的枚举来进行分片,此种分片规则理解为枚举分区,会比较适合于取值固定的场合,比如说省份(固定值) 优点:适用于按照省份 ...

  7. FFmpeg视频处理

    FFmpeg是一个用于音视频处理的自由软件,被广泛用于音视频开发.FFmpeg功能强大,本文主要介绍如何使用FFmpeg命令行工具进行简单的视频处理. 安装FFmpeg可以在官网下载各平台软件包或者静 ...

  8. 使用selenium时提示:ImportError:No module named selenium

    问题分析: 用的是mac系统,已经通过sudo pip install -U selenium安装好了selenium, 但是无论用命令行还是用sublime导入selenium都会提示错误. 于是查 ...

  9. java 对象和封装

    软件出现的目的     面向对象设计和开发程序的好处用计算机语言描述现实世界    交流更加流畅用计算机解决现实世界的问题   提高设计和开发效率 面向对象的思想    描述→ 面向对象的世界     ...

  10. 浅谈RMQ

    RMQ是一类求区间极值的问题 有一种 \(O\left(nlogn\right)\) 的解法,用倍增实现 倍增算法 变量的定义 \(A_i\) : 原数组 \(f_{i,j}\) : 以 \(i\) ...