Cassandra GossipingPropertyFileSnitch
【摘要】 AbstractNetworkTopologySnitch一个endpoint snitch可以告诉Cassandra网络拓扑信息,是的路由更有效率。他需要实现以下方法abstract public String getRack(InetAddress endpoint);获取ep所在rack名abstract public String getDatacenter(InetAddress ...
AbstractNetworkTopologySnitch
一个endpoint snitch可以告诉Cassandra网络拓扑信息,是的路由更有效率。他需要实现以下方法
abstract public String getRack(InetAddress endpoint);
获取ep所在rack名abstract public String getDatacenter(InetAddress endpoint);
获取ep所在DC名public int compareEndpoints(InetAddress address, InetAddress a1, InetAddress a2)
或者两个所在的DC和RACK同address的DC,RACK都不相关
在其构造方法中会默认加载
conf/cassandra-rackdc.properties
文件。该文件的默认配置如下:#表示该node的DC和RACK名称 dc=dc1 rack=rack1
然后进行
psnitch = new PropertyFileSnitch();
.主要调用reloadConfiguration(boolean)
方法
conf/cassandra-topology.proerties
,该文件的默认配置# Cassandra Node IP=Data Center:Rack 192.168.1.100=DC1:RAC1 192.168.2.200=DC2:RAC2 10.0.0.10=DC1:RAC1 10.0.0.11=DC1:RAC1 10.0.0.12=DC1:RAC2 10.20.114.10=DC2:RAC1 10.20.114.11=DC2:RAC1 10.21.119.13=DC3:RAC1 10.21.119.10=DC3:RAC1 10.0.0.13=DC1:RAC2 10.21.119.14=DC3:RAC2 10.20.114.15=DC2:RAC2 # default for unknown nodes default=DC1:r1
livenessCheck()
返回true表示可以继续接着更新,非live状态node的DC或RACK有变化。一旦出现live状态的node,其DC或RACK有变化,则不再执行后面的逻辑。We cannot update rack or data-center for a live node, see CASSANDRA-10243.
此处用到传入参数boolean值。true表示更新tokenMetadata的属性Topology里面的
Multimap<String, InetAddress> dcEndpoints;Map<String, Multimap<String, InetAddress>> dcRacks;
DC和RACK对应的ep映射信息,然后将用于路由的tokencacheMap置失效。false表示将用于路由的tokencacheMap置失效。PropertyFileSnitch对象第一次初始化传入false,后续调用均为true。会用到db启动时候构造的snitch对象。(DynamicEndpointSnitch的构造方法中有两个定时任务
reset()
和updatescores()
,分别是一小时和100ms执行一次,后续分析该出两个任务的功能)conf/cassandra-topology.proerties
文件有更新(check该文件的lastmodifytime来判断有没有更新),则触发reloadConfiguration(true)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)