部署时分片数通常建议多少以及确定依据

通常建议2分片,采用几分片主要基于三方面的因素来考虑:性能、木桶效应、快速扩容。

单分片的性能最好,单分片存在木桶效应的原因是当有1个节点离线时,该节点分片所在的副本分片所在的节点将承担两倍的工作,因此理论上性能下降最多1倍,性能最多下降1倍的前提是在节点没有离线前,每个节点的资源使用已经比较高(cpu,io,内存都使用了80-90%)的情况下,1个节点离线时,该节点分片所在的副本分片资源已经使用比较高(cpu,io,内存都使用了80-90%)的情况下还要再多承担一份任务,因此性能将下降1倍。但在实际运行的系统中,每个节点的资源使用一般不会达到80-90%(cpu,io,内存都使用了80-90%),观察多个实际项目一般也就是在40-50%左右,因此即使多承担一份工作,也不会下降1 倍,经过测试在广西移动的场景下单分片部署情况下一个节点离线的情况下,性能下降 43%。

采用多分片能够带来两方面的好处,降低木桶效应,扩容时可以直接搬移分片而不用重新计算hash,因此提升扩容的性能,但带来的坏处是分片多了,分片表的数量提升了1倍,列文件的数据也提高了1倍,因此IO时将访问更多的文件,以及IO总体上来看将更离散。
在访问data cell时能够充分利用智能索引的情况下,多分片的性能下降会更多,因为原始可能通过智能索引只需要访问一个data cell, 当分成多分片后,可能需要访问多个data cell,因此在IO是主要资源瓶颈的情况下,多分片在该场景下的性能下降更多。按照农行模拟场景测试2分片下降在5%-15%之间,4分片下降在 20%-30%, 在智能索引利用不充分,基本需要全表扫描的场景下,多分片相对单分片性能下降不明显,测试在5%左右。在1个节点离线的情况下,在广西移动的场景下2分片性能下降 21%,另外两分片可以按照搬移分片的方式扩容1次。

因此,综合型性能,木桶效应和快速扩容三个因素的综合考虑,建议采用2分片。

三种不同模式下(负载均衡模式、高可用模式、手工编写模式)生成distribution的介绍

1、负载均衡模式
此模式下gcChangeInfo.xml中的每个rack中的节点为一组,每个rack中的节点上主分片的备份分片1存放到gcChangeInfo.xml中下一个rack中的节点上,备份分片2存放到gcChangeInfo.xml中上一个rack中的节点上。gcChangeInfo.xml中的第一个rack的上一个rack为最后一个rack,最后一个rack的下一个rack为第一个rack。
负载均衡模式生成distribution,每节点主分片数(即参数p)必须小于每个rack的节点数,以此来保证备份分片分布均匀。每个rack包含的节点数尽可能相同,若gcChangeInfo.xml文件中有多于1个rack的节点数与其它rack不同,gcadmin将会提示用户系统性能可能会下降,需用户确认后才能生成distribution。
2、高可用模式
此模式下生成的distribution将每个data节点的备份分片1存放到下一个data节点上,备份分片2存放到上一个data节点上。使用pattern 2模式配置文件gcChangeInfo.xml中仅需一个rack即可,有多个rack也作为一个rack处理。
3、手工编写模式
编写distribution配置信息文件模式需手工编写一个distribution分片配置的xml文件,在文件中指明每个分片的主/备分片存放的节点。使用该方式生成distribution无需在执行配置distribution命令时输入参数p,d和pattern。