package com.alibaba.doris.common.router.virtual; import com.alibaba.doris.algorithm.RouteAlgorithm; import com.alibaba.doris.algorithm.vpm.VpmRouterAlgorithm; import com.alibaba.doris.common.adminservice.AdminServiceFactory; import com.alibaba.doris.common.route.VirtualRouter; /** * 虚拟节点路由器,根据key返回虚拟节点编号<br> * 用于data server,根据虚拟节点写不同存储文件 * * @author frank */ public class VirtualRouterImpl implements VirtualRouter { private static VirtualRouter instance = new VirtualRouterImpl(); protected int virtualNum = 100; //default. protected RouteAlgorithm algorithm; public static VirtualRouter getInstance() { return instance; } public VirtualRouterImpl() { virtualNum = AdminServiceFactory.getVirtualNumberService().getVirtualNumber(); algorithm = new VpmRouterAlgorithm(1, virtualNum); } public int getVirtualNum() { return virtualNum; } public int findVirtualNode(String key) { return algorithm.getVirtualByKey(key); } }