首页 > 编程语言 >elasticsearch更改node id生成方法

elasticsearch更改node id生成方法

时间:2023-03-31 15:38:15浏览次数:38  
标签:node uuid 节点 elasticsearch address new id String


集群中节点的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都是一样的。


from internet


标签:node,uuid,节点,elasticsearch,address,new,id,String
From: https://blog.51cto.com/u_2650279/6161814

相关文章

  • 01011 IDEA创建新项目
    创建新项目​ new->project创建新模块​ projectstructure->+->newmodule->改名字不改路径模块下创建包new->package->com.lxc.->作用会生成对应文件夹包下创建类​ new->class->name......
  • 直播网站源码,Android中点击图片放大的简单方法
    直播网站源码,Android中点击图片放大的简单方法简单的思路就是把要放大的图片显示在一个对话框中显示出来 Java代码: publicvoidonThumbnailClick(Viewv){//finalAlertDialogdialog=newAlertDialog.Builder(this).create();//ImageViewimgView=getView();//di......
  • Fiddler抓包修改拦截的JSON文件
    第一步,打开断电,拦截包  第二步,打开要拦截的网址。然后我们就可以获取这个  右下角就是抓到的返回值,直接修改后,点击运行到完成,放行即可。......
  • IDEA取消左键点击空白处时的光标跟随
      没有位于文末   ......
  • youtube点击位置纠偏论文:《Recommending What Video to Watch Next: A Multitask Rank
    背景在推荐系统存在两个难题:1.需要同时优化点击、观看时长、点赞、打分、评论等多个目标,如何同时建模多个目标2.存在positionbias,即同个视频放在不通位置上点击率等会不同,如何建模positionbiasyoutube这篇论文采用了MMOE来建模多目标,并用一个shallowtower来建模position......
  • android popwindow实现左侧弹出菜…
    http://www.apkbus.com/android-44903-1-1.html学习一下PopupWindow的浮层显示效果。PopupWindow可以实现浮层效果,主要方法有:可以自定义view,通过LayoutInflator方法;可以出现和退出时显示动画;可以指定显示位置等。为了将PopupWindow的多个功能展现并力求用简单的代码实......
  • Android NDK开发环境搭建
    必先利其器, 下面介绍下EclipseSDKNDKCygwinCDT 集成开发环境的搭建。1、Android 开发环境搭建Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。1)     下载JDK2)     下载Eclipse3)     下载AndroidSDK4)  ......
  • android anr分析方法
    一:什么是ANRANR:ApplicationNotResponding,即应用无响应二:ANR的类型ANR一般有三种类型:1:KeyDispatchTimeout(5seconds)--主要类型按键或触摸事件在特定时间内无响应2:BroadcastTimeout(10seconds)BroadcastReceiver在特定时间内无法处理完成3:ServiceTimeout(20seconds)--小概率......
  • Elasticsearch.Net+Nest基本用法
    基本用法安装Nest(安装后默认会装上Elasticsearch.Net),注意:版本尽量选择跟ES版本一致的批量初始化数据到ESusingNest;try{//测试环境配置SSL证书需要的设置ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12|SecurityProtocolType.Tls11......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能编写Python注释文档字符串从0到1快速入门
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......