solr进阶-动态配置管理

来源:互联网 发布:java运行jar包中的类 编辑:程序博客网 时间:2024/05/16 06:37

solr提供了DIH并集成tika,因此配置db、文档索引都会感觉到非常方便,但是如果你的业务要求你的程序必须能在友好的UI中配置DB导入,程序员刚上来难免一脸蒙逼了。

基于solr的DB导入管理功能的开发首先要解决解决以下三个问题(本篇主要针对2进行介绍):

1、solr服务的代理调用

2、solr配置文件的远程操作

3、solr配置文件的结构化读写

新增数据库表的导入需要对db-data-config.xml、schema.xml等文件中的内容进行动态修改、重新载入并执行dataimport使其生效。那么问题来了,solr服务与应用不在一个物理主机上,应用该如何操作远程的配置?你可能会有以下思路:

1、在solr服务器上搭建文件服务

2、研究solr http rest api,试图找到其对配置修改并重载的方法,并保留对solr进行扩展的极端手段

3、使用solr内置的zookeeper服务

让我们逐一分析以上思路的利弊:

1、需额外增加服务,应用需增加针对该文件服务的工具引入和对应代码,如果后期搭建solr集群,会使文件管理变得非常复杂,果断pass。

2、个人没有找到写配置的rest api,扩展solr可对单节点solr服务有良好支持,但对于solrcloud仍是噩梦,继续pass。

3、solr内置zookeeper服务,zk也是solrcloud分布式配置的实现,zk提供易用的节点操作的java api,此方案在实现复杂度、扩展性、兼容性方面均占据绝对优势,果断选取。

选定方案后,思路变得清晰了。zookeeper节点的远程操作,需要zookeeper.jar工具包支持,增加读写操作如下:

byte[] bytes = zooKeeper.getData(path, null, null);//读
zooKeeper.setData(path, bytes , -1);//写

操作详见zookeeper api

于是配置文件的远程操作则大功告成了!




但是!应注意以下问题

1、读写操作应注意规避系统默认编码问题

2、solr zk后续启动不要覆盖已维护的配置

1 0
原创粉丝点击