性能与可扩展性
在搜索平台的逻辑视图中,搜索平台对外交互主要有三个部分,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集群是支持在线横向扩容的,无需重启集群。不过扩容的机器的物理配置最好和已有的节点一致,否则可能存在木桶效应。