You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 APIM 3.2.0与IS 5.11.0角色变更延迟问题如何解决?

问题成因

WSO2 APIM 3.2.0默认对用户、角色及权限类数据开启了本地缓存,其中角色对应的UserRoleCache默认过期时间为35分钟。你通过IS更新角色数据后,仅会触发IS节点本地的缓存失效,由于未配置跨节点的缓存同步机制,APIM节点无法感知到后端共享数据库的变更,只能等待本地缓存到期后才会重新从数据库拉取最新的角色数据,因此会出现35分钟的同步延迟。

解决方案

你可以根据实际场景选择以下任意方案解决:

  • 临时优化方案(无法完全实现即时生效,仅缩短延迟)
    修改APIM节点的<APIM_HOME>/repository/conf/deployment.toml配置,调小缓存过期时间,最小可设置为1分钟:
    [user_store]
    cache_expiry_time = 1
    
    配置完成后重启APIM节点生效。
  • 正式方案(可实现角色变更即时生效)
    开启WSO2集群缓存同步机制,将IS和APIM节点加入同一集群域,跨节点的缓存失效事件会通过集群消息通道广播,APIM节点收到IS的角色变更缓存失效事件后会立即清除本地对应缓存,直接从数据库拉取最新数据。
    两个节点的<产品_HOME>/repository/conf/deployment.toml都需添加如下集群配置:
    [clustering]
    enable = true
    domain = "wso2-shared-user-domain"
    localMemberHost = "当前节点的内网IP"
    localMemberPort = 4000 # 不同节点配置不同端口,比如IS用4000,APIM用4001
    members = [
      {hostname = "IS节点的内网IP", port = 4000},
      {hostname = "APIM节点的内网IP", port = 4001}
    ]
    
    配置完成后依次重启IS、APIM节点即可。
  • 手动触发方案
    每次在IS侧完成角色更新操作后,调用APIM的管理API主动清除角色缓存,调用地址为POST <APIM_HOST>/services/AuthorizationAdminService/clearAllUserRoleCaches,使用APIM管理员账号的Basic Auth鉴权即可。

内容的提问来源于stack exchange,提问作者nivedhav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:54:01