性能与可扩展性


在搜索平台的逻辑视图中,搜索平台对外交互主要有三个部分,RestFul服务和数据流面向业务,ES操作层是搜索平台内部和Elasticsearch集群交互。

下面我们就分别介绍这三个部分的模块和可扩展性设计。

1. RestFul服务

1.1. 性能

生产环境的RestFul服务的TPS在1700,而我们搜索平台目前的实际请求量是每秒1.5次。

1.2 可扩展性

RestFul服务节点现在是6台虚拟机,支持在线横向扩容,自动负载均衡,无需重启。扩容方案是直接添加一个应用节点,然后启动该节点应用即可。

2. 数据流

2.1. 性能

  • Listener: TPS为3000
  • MsgQoS:TPS为1800
  • Worker:TPS为400

可以看到数据流的各层性能是逐级下降的,目前数据流的实际请求量平均为每秒0.15次。

2.2. 可扩展性

Listener是主备节点,属于双机热备。目前是不可水平扩容,后续扩容方案是将不同的MQ Topic通过Hash算法分配到不同的节点,对于消息量大的Topic拆分成更细粒度的Topic。

MsgQoS也是主备节点,属于双机热备。目前也是不可水平扩容,后续扩容方案是增加负载均衡节点,然后通过用户AdminId的Hash算法将不同的用户队列分散到不同的节点上。

Worker集群是自动负载均衡的,支持横向扩容,无需重启集群。扩容时直接部署一个Worker节点,启动该节点应用即可。目前Worker集群的节点数为2,目前Worker吞吐量主要的瓶颈在业务的Dubbo接口或者Http接口。

3. Elasticsearch集群

3.1. 性能

当前VIP用户的Elasticsearch集群是由6台16C32G的虚拟机组成,其中2个主节点、4个数据节点,性能还是相当强劲的。目前的集群没有做过测试,以前在远比这个机器性能差的集群上做过测试,TPS(每秒处理请求数)可以达到2000,并发数1000。根据淘宝的测试数据,系统的日吞吐量=TPS*3600*100,那么Elasticsearch集群可以支持7900万日吞吐量。

3.2. 可扩展性

Elasticsearch集群是支持在线横向扩容的,无需重启集群。不过扩容的机器的物理配置最好和已有的节点一致,否则可能存在木桶效应。

results matching ""

    No results matching ""