MarkLogic从物理磁盘与Module DB加载模块的性能及配置差异问询
MarkLogic模块加载方式问题解答
问题1:两种加载方式哪种更优?具体原因是什么?
没有绝对的最优方案,需结合使用场景选择:
- 生产环境优先选择Module DB加载:
- 适配集群化部署的运维需求,CI/CD流程只需要在部署机执行
mlLoadModules/mlReloadModules命令即可完成全集群代码更新,不需要直接登录每台MarkLogic服务器,安全性更高 - 模块更新是原子性操作,不会出现部分节点用新代码、部分节点用旧代码的不一致情况
- 依托MarkLogic数据库的高可用特性,模块数据有副本保障,不会因为单节点磁盘故障导致模块丢失
- 适配集群化部署的运维需求,CI/CD流程只需要在部署机执行
- 本地单节点开发场景可选择物理磁盘加载:
- 代码修改后直接保存到对应路径即可生效,不需要执行上传命令,调试效率更高
- 可以直接在磁盘上查看、修改代码文本,适合快速迭代验证的开发阶段
问题2:两种加载方式的查询性能是否存在差异?
稳态运行时无明显性能差异:
- 两种方式加载的模块,都会被MarkLogic编译后缓存到节点内存中,缓存命中后的执行效率完全一致
- 仅在模块首次加载、缓存失效需要重新读取时会有极微差异:物理磁盘读取本地文件的开销略低于从Module DB查询的开销,但该差异在整体查询耗时中占比可以忽略,不会对业务性能造成可感知的影响
问题3:物理文件加载是否需要部署到所有集群主机?Module DB是否自动同步代码?
- 采用物理文件加载时,必须将修改后的代码部署到集群内所有主机的对应路径下:每个MarkLogic应用服务器节点只会读取自身本地磁盘的文件,若仅部署到部分节点,请求路由到未更新的节点时会加载旧代码,出现业务逻辑不一致的问题
- 你对Module DB的推测完全正确:Module DB是MarkLogic集群托管的数据库,模块上传后会按照配置的副本策略自动同步到集群内的对应节点,所有节点访问Module DB都能拿到最新的模块代码,无需单独操作每台主机,天然保障全集群代码一致性
内容的提问来源于stack exchange,提问作者XCELERENT - I want to dance
相关产品推荐
相关产品推荐

