api-gateway实践(14)前端签名密钥和后端签名密钥

时间:2021-09-28 04:09:29

1、前端签名密钥

1.1、缓存管理
初始:engine初始的时候,从redis拉取全部前端绑定关系到engine缓存。
新增/绑定:绑定签名密钥和服务实例,同时缓存该关系到redis,同时缓存到engine缓存。
解绑:删除和服务实例的绑定关系,去掉redis中的相应缓存内容,同时从engine缓存去掉相应缓存内容。
重置:重新生成secret,重新缓存该关系到redis,同时缓存到engine缓存。

1.2、绑定到服务实例
一个签名密钥可以绑定到该开发者的多个服务实例上去?
网关根据 devClientKey + versionId 换取 DevClientSecret + instId + DevClientId + OwnerId + OwnerName,
对于同一个versionId,系统不允许申请两个服务实例,所以一个签名密钥可以对应多个服务实例,不会混淆。

2、后端签名密钥

2.1、缓存管理
新增:后端签名密钥新建保存后,会缓存到redis,发一个消息,同步到engine缓存。
初始:engine初始的时候,从redis拉取全部后端绑定关系到engine缓存。
绑定:version维护(新建、编辑)时,建立绑定关系(到数据库)。其实,svcClientKey是version的一个属性。
version发布时,绑定关系随着version缓存到redis。
解绑:version维护要先下线,version下线后修改绑定的后端密钥,绑定关系可随下次上线重新缓存。
重置:后端签名密钥重置,仅仅修改后端签名密钥的缓存,发布一个消息,同步到engine缓存。

总结:绑定和解绑是对version数据的操作,version只记录svcClientKey,没有缓存到engine缓存。

2.2、绑定到服务实例

后端签名密钥可以绑定到同一个租户的多个version上。