当前位置: 首页 > news >正文

贷款网站建设方案西安百度推广运营公司

贷款网站建设方案,西安百度推广运营公司,品牌策划怎么写,个人网站域名注册一、背景 由于要安装分词器插件,所以需要重启ElasticSearch集群以使得新安装的插件生效 但是在重启集群的过程中,服务端代码却出现了大量错误,如下所示 java.net.ConnectException: Connection refused    at org.elasticsearch.client.R…

一、背景

由于要安装分词器插件,所以需要重启ElasticSearch集群以使得新安装的插件生效

但是在重启集群的过程中,服务端代码却出现了大量错误,如下所示

java.net.ConnectException: Connection refused   

at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:823)   

at org.elasticsearch.client.RestClient.performRequest(RestClient.java:248)   

at org.elasticsearch.client.RestClient.performRequest(RestClient.java:235)   

......

基于此,也引出一个潜在的可用性问题,即代码没有做到可以平稳支持ElasticSearch集群的重启,不局限于可预知的升级导致的重启,包括集群自身不稳定导致的集群节点变化如某节点的CPU和内容过高、所在机柜或机房故障等不可预期情况

二、引入Sniffer

为了提高服务的可用性和稳定性,引入Sniffer(嗅探器)

Sniffer

允许从正在运行的 Elasticsearch 集群中自动发现节点并将它们设置为现有 RestClient 实例的最小库,默认使用节点信息API检索所属集群的交节点,并使用jackson解析得到json数据,与ElasticSearch 2.X及之后版本兼容。

添加Maven依赖以引入Sniffer,如下所示

<dependency>

    <groupId>org.elasticsearch.client</groupId>

    <artifactId>elasticsearch-rest-client-sniffer</artifactId>

    <version>7.6.2</version>

</dependency>

Sniffer相关的JavaDoc可参看:elasticsearch-rest-client-sniffer,代码如下所示

// 失败嗅探监听器,可保证在RestClient出现失败时,立即更新集群的节点

SniffOnFailureListener sniffOnFailureListener = new SniffOnFailureListener(); 

HttpHost httpHost = port != null new HttpHost(host, port, scheme) : HttpHost.create(host);

RestClient client = RestClient.builder(httpHost)

        .setFailureListener(sniffOnFailureListener)

        .build();

Sniffer sniffer = Sniffer.builder(client)

        // 3 minutes, default 5 minutes,定时更新集群的节点

        .setSniffIntervalMillis(3 60 1000

        // 30 seconds, default 1 minutes ,在失败立即更新集群的节点后,额外再次执行一次主动的更新行为

        // 因为这个时间段内之前出问题的节点可能已经恢复,进而可以被再次更新到节点中被使用)

        .setSniffAfterFailureDelayMillis(30 1000

        .build();

sniffOnFailureListener.setSniffer(sniffer);

需要注意的是,需要保证Sniffer和RestClient要具有相同的生命周期,并且应该先于RestClient关闭,如下所示

sniffer.close();

client.close();

也可通过以下方式更改是通过HTTP还是HTTPS,并且可以设置请求超时时间,避免因为拉取节点时间过长,影响服务恢复的速度或恢复失败,尽管设置超时时间后可能获得的节点数少于集群中的节点数

NodesSniffer nodesSniffer = new ElasticsearchNodesSniffer(

        restClient,

        TimeUnit.SECONDS.toMillis(5),            // 默认ElasticsearchNodesSniffer.DEFAULT_SNIFF_REQUEST_TIMEOUT

        ElasticsearchNodesSniffer.Scheme.HTTPS); // 若是HTTP协议,则ElasticsearchNodesSniffer.Scheme.HTTP

Sniffer sniffer = Sniffer.builder(client)

        .setNodesSniffer(nodesSniffer).build();

也可以自定义获取节点的方法,进而可以获取其他ElasticSearch数据源或做一些其他的扩展,如下所示

NodesSniffer nodesSniffer = new NodesSniffer() {

    @Override

    public List<Node> sniff() throws IOException {

        // 自行按需实现获取节点的逻辑

        return null

    }

};

Sniffer sniffer = Sniffer.builder(client)

        .setNodesSniffer(nodesSniffer).build();

http://www.hkea.cn/news/652188/

相关文章:

  • 濮阳建设银行官方网站搜索引擎优化的对比
  • 完全删除wordpressseo小白入门
  • 做网站常用到的css标签什么软件可以找客户资源
  • 有做销售产品的网站有哪些新闻头条今日新闻
  • 深圳自己做网站 服务器优化的近义词
  • 网站开发职业工资网站推广上首页
  • 宝安附近公司做网站建设多少钱深圳百度开户
  • 成都紧急通知seo网络营销招聘
  • 思坎普网站建设如何做营销推广
  • 太原网站优化公司有域名和服务器怎么建网站
  • 网站策划的前景seo 推广
  • wordpress导入网站文章怎么联系百度人工客服
  • 制冷机电工程东莞网站建设简阳seo排名优化培训
  • 北京网站建设 网站维护服装营销方式和手段
  • 唐山高端网站建设开发新客户的十大渠道
  • 小地方的旅游网站怎么建设seo教程有什么
  • 做网站教程宁波百度seo点击软件
  • asp.net个人网站北京专门做seo
  • 石家庄java开发做网站百度资源站长平台
  • 有哪些网站系统网络营销首先要进行
  • 网站建设硬件设置竞价广告是怎么推广的
  • 网站的平面设计图用ps做国外搜索引擎大全百鸣
  • 深圳专业企业网站建设前端培训
  • 南京平台公司seo搜索培训
  • 横沥网站建设武汉百度百科
  • 百度给做网站公司线上运营的5个步骤
  • 盘锦网站建设公司网络营销策略包括哪些
  • 简述电子商务网站开发的基本原则一站式网络营销
  • 商丘网站网络推广员的工作内容和步骤
  • 取消wordpress邮箱认证北京搜索优化排名公司