Lindorm搜索引擎是由多个节点组成的分布式集群,在购买服务之前,需要仔细评估集群的资源容量。为了帮助您进行集群规划,我们给出一些通用的建议参考。
存储容量评估
存储容量评估主要考虑以下几点:
- 副本数量:默认建议副本为0,搜索引擎基于分布式共享存储,节点宕机后,数据可以自动迁移到其它节点上提供服务,对于部分可靠性要求高的场景,可考虑设置副本数量为1。
- 索引数据膨胀:数据一般膨胀在20%。
- 搜索引擎预留:记录事务log、定期的compaction数据合并等,建议预留20%。
- 操作系统预留:系统默认预留5%的存储空间。
- 系统安全阈值:为保障整个集群的稳定运行,建议预留20%的存储空间,存储使用率到80%时会自动触发短信告警。
因此,实际的存储空间可以通过下面公式估算:
实际空间 = 源数据 * 1.9
不同的业务场景在写入和查询方面的复杂度、比重各有不同,建议先基于存储容量评估选择合适的资源,再进行业务测试确认计算资源是否足够。通常的建议如下:
- 至少选择2个节点,避免出现单节点故障。
- 建议选择较高规格的节点,例如选择16C 64GB的实例规格。
- 如果实际测试发现计算资源不符合,扩容时,建议优先进行纵向扩容,例如把节点规格从4C 16GB的规格升级到8C 32GB,然后再考虑横向扩容增加节点个数。
每个索引被分成多个分片,数据写入时会基于文档ID自动哈希打散到不同的分片中,在设置分片个数时,通常的建议如下:
- 建议单个分片大小保持在20GB~50GB之间。
- 建议分片数量为节点个数的整数倍,例如实例有2个节点,则创建的索引分片设置为2。
- 日志、订单等有时间属性的场景,建议使用系统自带的分库分表(Alias功能),持续滚动产生新的索引,并且周期性删除旧的索引。