一、缓存分类

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. A Proof of Stake Design Philosophy - PoS权益证明设计理念

    之前在EthFans上看到了关于PoS(权益证明)的相关文章(原文链接),本着学习的态度,对这篇文章进行了翻译.第一次翻译关于区块链的文章,有些单词及句子的措辞还不是很准确,如果发现有翻译的不恰当的地 ...

  2. python 全栈开发,Day2(正式)

    一.in的使用 in 操作符用于判断关键字是否存在于变量中 a = '男孩wusir' print('男孩' in a) 执行输出: True in是整体匹配,不会拆分匹配. a = '男孩wusir ...

  3. 挂载U盘和移动硬盘

    1, 挂载U盘和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的.使用方法和移动硬盘完全一样.插入U盘之前[root at pldyrouter root]# fdisk - ...

  4. segment fault异常及常见定位手段

    问题背景 最近boot中遇到个用户态程序的segment fault异常,除了一句"Segment fault"打印外无其他任何打印.该问题复现概率较低,定位起来比较棘手.我们的b ...

  5. Python 3 中生成器函数yield表达式的使用

    生成器函数或生成器方法中包含了一个yield表达式.调用生成器函数时,会返回一个迭代子,值从迭代子中每次提取一个(通过调用其__next__()方法).每次调用__next__()时,生成器函数的yi ...

  6. JS基础三

    1.delete删除对对象的属性和方法的定义.强制解除对它的引用,将其设置为 undefined delete 运算符不能删除开发者未定义的属性和方法. 2.void 运算符对任何值返回 undefi ...

  7. WinSock 异步I/O模型

    如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的. Windows操作系统提供了五种I/O模型,分别是选择(select)模型,异步选择(WSAAsyncSelect)模型, ...

  8. java 10 中 var关键字用法

    引用:https://mp.weixin.qq.com/s/n1tcJ0CywSi0j-YycGPwxg what java10引入了局部变量折断 var用于声明局部变量. 如var user=new ...

  9. Java多线程:队列与阻塞队列

    1. 什么是阻塞队列 阻塞队列(BlockingQueue)是 Java 5 并发新特性中的内容,阻塞队列的接口是 java.util.concurrent.BlockingQueue,它提供了两个附 ...

  10. Java并发编程实战(chapter_2)(对象发布、不变性、设计线程安全类)

    一.发布与溢出 "发布(Publish)"一个对象的意思是指,使对象能够在当前作用于之外的代码中使用.这个"之外",尤为关键,各种出问题的地方,都是因为这个&q ...