集群评估
智能召回引擎BE采用分布式集群架构,主要由三部分组成:节点类型(即每个分片的规格)、副本数(即replica,每个备份都可独立承担线上流量,通过增加副本数可扩展集群的水平负载能力)、分片数(即partition,通过内部Hash处理,可将数据进行分片存储到不同的节点上,从而扩展集群的数据容量能力)
节点类型:
分片规格 | 磁盘大小 | 一跳查询QPS | 数据更新TPS |
cpu: 2核, mem: 8GiB | 120GiB | 2500 | 20000 |
cpu: 4核, mem: 16GiB | 240GiB | 5000 | 20000 |
cpu: 8核, mem: 32GiB | 500GiB | 10000 | 20000 |
cpu: 16核, mem: 64GiB | 1000GiB | 20000 | 20000 |
容量评估:
整个分布式BE的集群在线查询和数据更新能力评估:
集群的在线查询QPS = 所选节点规格对应的在线QPS * 副本数;
集群的数据更新TPS = 所选节点规格对应的更新TPS * 分片数;
注意:以上评估数据为内部测试经验,仅作参考;如需具体业务集群真实负载能力,需要自行压测。
举例参考:
某社交APP使用智能召回引擎BE进行陌生人社交查询,用户数据百万级,用户关系千万级,整体数据存储需100GB,线上流量QPS为20000,实时数据更新TPS为40000,查询RT为10ms。
评估思路:
1)整个业务要求较高QPS和RT,一般建议选择节点选择【cpu: 4核, mem: 16GiB】,基本符合大部分业务使用;
2)存储数据需要100GB,同时TPS达到40000,数据更新量较大,按照1个【cpu: 4核, mem: 16GiB】节点承载TPS为20000,需要对数据进行分片,从而提升集群的数据更新。选择分片数为【2】。
3)【cpu: 4核, mem: 16GiB】节点承载QPS为5000,业务要求QPS为20000,副本数计算值=20000/5000,选择副本数为【4】。
创建集群:
具体配置参考图如下:
副本数
智能召回引擎BE支持多副本,保证集群升级/数据切换中服务可用性。副本数越多,BE集群提供在线服务能力的searcher越多,集群在线性能更高,同时购买价格也会越多,望您按需选择。
分片数
智能召回引擎BE支持多分片,将海量数据索引进行hash分列,可以方便存储到固定存储的分片上。
具体的分片计算公式,如下:
分片数 = 存储量GB / 每个分片规格的磁盘量 / 2;