开发者社区 > 云原生 > 正文

在ChanenlManager中更新ChannelsResource的目的是什么

问题描述

updateChannelsResource方法希望添加资源id与RM_CHANNELS中的资源id不同的RpcContext

private static void updateChannelsResource(String resourceId, String clientIp, String applicationId) { ConcurrentMap<Integer, RpcContext> sourcePortMap = RM_CHANNELS.get(resourceId).get(applicationId).get(clientIp); for (ConcurrentMap.Entry<String, ConcurrentMap<String, ConcurrentMap<String, ConcurrentMap<Integer, RpcContext>>>> rmChannelEntry : RM_CHANNELS.entrySet()) { if (rmChannelEntry.getKey().equals(resourceId)) { continue; } ConcurrentMap<String, ConcurrentMap<String, ConcurrentMap<Integer, RpcContext>>> applicationIdMap = rmChannelEntry.getValue(); if (!applicationIdMap.containsKey(applicationId)) { continue; } ConcurrentMap<String, ConcurrentMap<Integer, RpcContext>> clientIpMap = applicationIdMap.get(applicationId); if (!clientIpMap.containsKey(clientIp)) { continue; } ConcurrentMap<Integer, RpcContext> portMap = clientIpMap.get(clientIp); for (ConcurrentMap.Entry<Integer, RpcContext> portMapEntry : portMap.entrySet()) { Integer port = portMapEntry.getKey(); if (!sourcePortMap.containsKey(port)) { RpcContext rpcContext = portMapEntry.getValue(); sourcePortMap.put(port, rpcContext); rpcContext.holdInResourceManagerChannels(resourceId, port); } } } }

行的用途是什么sourcePortMap.put(port,rpcContext);,该rpcContext的资源id与sourcePortMap相关的资源id不同。我想这种方法是错误的,没有必要

原提问者GitHub用户liujianhuiouc

展开
收起
学习娃 2023-06-14 16:46:22 66 0
1 条回答
写回答
取消 提交回答
  • 可能一台机器有很多客户端,需要记录其他客户端端口。 如果其中一个客户端通道关闭,我们可以使用其他通道

    原回答者GitHub用户CoffeeLatte007

    2023-06-14 17:21:48
    赞同 展开评论 打赏
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载