美文网首页
【sentinel】深入浅出之原理篇ClusterBuilder

【sentinel】深入浅出之原理篇ClusterBuilder

作者: 一滴水的坚持 | 来源:发表于2019-03-18 17:25 被阅读0次

    ClusterBuilderSlot则用于存储资源的统计信息以及调用者信息,例如该资源的 RT, QPS, thread count 等等,这些信息将用作为多维度限流,降级的依据;

    public class ClusterBuilderSlot extends AbstractLinkedProcessorSlot<DefaultNode> {
        private static volatile Map<ResourceWrapper, ClusterNode> clusterNodeMap = new HashMap<>();
        private static final Object lock = new Object();
        private volatile ClusterNode clusterNode = null;
        @Override
        public void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count,
                          boolean prioritized, Object... args)
            throws Throwable {
            //判断clusterNode是否为null,一个Resource共享同一个Chain,这里,一个Resource共享同一个clusterNode
            if (clusterNode == null) {
                synchronized (lock) {
                    if (clusterNode == null) {
                        // 创建一个新的CusterNode,并保存
                        clusterNode = Env.nodeBuilder.buildClusterNode();
                        HashMap<ResourceWrapper, ClusterNode> newMap = new HashMap<>(Math.max(clusterNodeMap.size(), 16));
                        newMap.putAll(clusterNodeMap);
                        newMap.put(node.getId(), clusterNode);
                        clusterNodeMap = newMap;
                    }
                }
            }
            //设置ClusterNode
            node.setClusterNode(clusterNode);
            //如果orgin不为"",则需要设置orginNode
            if (!"".equals(context.getOrigin())) {
                Node originNode = node.getClusterNode().getOrCreateOriginNode(context.getOrigin());
                context.getCurEntry().setOriginNode(originNode);
            }
            fireEntry(context, resourceWrapper, node, count, prioritized, args);
        }
    }
    

    由于一个ContextName对应的同一个Resource共享同一个SlotChain,所以同一个ContextName对应的同一个Resource对应同一个ClusterBuilderSlot,由于一个ClusterBuilderSlot对应一个ClusterNode,所以同一个ContextName对应的同一个Resource对应同一个ClusterNode

    相关文章

      网友评论

          本文标题:【sentinel】深入浅出之原理篇ClusterBuilder

          本文链接:https://www.haomeiwen.com/subject/esebmqtx.html