elasticsearch更改node id生成方法
来源:互联网 发布:淘宝上淘口令怎么生成 编辑:程序博客网 时间:2024/05/02 04:19
集群中节点的id是由discovery定义的,默认es有两种实现方式,一种是
org.elasticsearch.discovery.local.LocalDiscovery
表示把es的节点启动在同一个jvm的环境下,这样就可以通过AtomicLong来进行数字递增的id生成。
另一种是
org.elasticsearch.discovery.zen.ZenDiscovery它是分布式环境下的节点发现机制,由于是分布式环境,数字递增形式比较难行得通,于是在zenDiscovery里面是使用64位的uuid来作为节点id。每次节点重启其id都是会变的,重新生成一个uuid,这与我的期望不符合,所以只能通过修改源码来解决。我这的需求就是每个节点必须有唯一的一个id,并且这个id不能变,考虑了下决定通过ip+端口的方式来作为节点的id,比如127.0.0.1:9300的节点id就是1270019300。下面是修改的源码。在ZenDiscovery这个类下
@Override
protected
void
doStart()
throws
ElasticSearchException {
Map<String, String> nodeAttributes = discoveryNodeService.buildAttributes();
// note, we rely on the fact that its a new id each time we start, see FD and "kill -9" handling
//String nodeId = UUID.randomBase64UUID();原来的方法,生成64位的uuid
InetSocketTransportAddress address = (InetSocketTransportAddress)transportService.info().getAddress().publishAddress();
String host = address.address().getAddress().getHostAddress().replace(
"."
,
""
);
//获得ip
int
port = address.address().getPort();
//获得端口
String nodeId = host + port;
localNode =
new
DiscoveryNode(settings.get(
"name"
), nodeId, transportService.boundAddress().publishAddress(), nodeAttributes);
latestDiscoNodes =
new
DiscoveryNodes.Builder().put(localNode).localNodeId(localNode.id()).build();
nodesFD.updateNodes(latestDiscoNodes);
pingService.start();
// do the join on a different thread, the DiscoveryService waits for 30s anyhow till it is discovered
asyncJoinCluster();
}
这样的话每次节点启动生成的nodeid都是一样的。
参考地址:http://www.searchtech.pro/elasticsearch-unique-node-id
0 0
- elasticsearch更改node id生成方法
- 分布式ID生成方法
- 分布式ID生成方法
- 分布式ID生成方法
- 分布式ID生成方法
- 分布式ID生成方法
- JavaScript更改class和id的方法
- JavaScript更改class和id的方法
- Mysql全局ID生成方法
- nodejs包 node-uuid(生成唯一id,标识单个记录)
- MFC生成exe文件图标更改方法
- MFC生成。exe文件名更改方法
- TeamViwer破解5分钟限制,更改Teamviwer ID的方法
- Oracle自动生成id的方法
- 关于Zend ID的生成方法
- 一种全局对象ID生成方法
- java生成唯一ID简单方法
- 分布式环境下ID生成方法总结
- sendRedirect传递参数为null
- 最受欢迎的C++代码段
- myeclipse安装svn方法汇总
- flex 实现 文件上传下载
- mysql 创建用户后分配权限失败的解决方法
- elasticsearch更改node id生成方法
- POJ1979-Red and Black
- jQuery、Ajax分页
- linux硬盘更换扩容,lvm扩大usr与samba服务器
- 矩阵乘法模板之hdu——1751
- wifi破解不是真黑客不靠谱?
- Fibonacci(斐波那契)
- 宽字符串忽略大小写比较的实现
- hdu1754 线段树(查找和单点更新)