针对特殊功能的优化建议 -- 搜索
搜索新特性是 Commerce V7 FEP2 期间引入 WebSphere Commerce 产品的功能特性,可以提供大数据集下 具有良好可拓展性的快速搜索功能。搜索新特性提供了一个完整整合的第三方搜索引擎的运行时框架,并围绕 该框架提供了包括产品目录搜索、业务管理等其他功能共同构成了一个完整的解决方案。由于搜索框架提供功 能丰富的扩展性,未来的新功能特性都可以选择基于该框架来开发,因此如何更好的优化搜索性能就显得更加 重要。由于 WebSphere Commerce 产品中默认集成了基于 Lucene 库开发的 Solr 搜索引擎,如无特别指明 ,本文提供的搜索引擎优化建议是针对 Solr 给出的。本章节将按照如下图 1 所示按步骤介绍各部分的优化 过程。为简略起见,下文将 WebSphere Commerce 简称为 Commerce。
图 1. 搜索运行时环 境部署步骤
搜索生产环境规划与部署的优化
WebSphere Commerce 站点拓扑规划
Commerce 搜索新特性整合了开源免费的搜索引擎 Solr,将之部署为一个独立的 WAS 应用,所以在对整个 Commerce 站点做容量规划时需要将该应用所需的服务器资源考虑在内。通常建议考虑采用水平方式,独立服 务器运行 Solr 应用,这样可以避免对 Commerce 应用所在服务器的容量有所影响。这种拓扑所带来的成本, 除了所需额外服务器资源外,是需要消耗一部分内网网络带宽来传输 Commerce 与 Solr 应用之间的请求与响 应的数据,考虑企业内网网速及带宽情况,应是可以承受的。或者考虑垂直方式将 Solr 应用放在同一个 Commerce 所在服务器的一个独立 JVM 中。这样可以节省服务器成本已经内网带宽,但占用消耗同一服务器容 量。
Solr 应用同时还需要 Web 服务器支持,通常我们建议部署独立的 Web 服务器给 Solr 集群使用 ,这样做的好处是避免共用 Commerce 的 Web 服务器所带来的安全性潜在风险,以及 Solr 查询请求需要额 外经过防火墙而导致的性能问题,但独立部署新的 Web 服务器需要额外的硬件采购,包括负载均衡等方面的 考虑,这一点需要在客户实施环境具体情况具体分析来做决策。
Solr 应用拓扑规划
在大型站点上,通常会有几千或上万并发访问量,单独一个 Solr 运行时 Java 虚拟机很难保证处理这么 多访问的性能,因此可以对 Solr 采用与 Commerce 类似的水平或者垂直 WAS 服务器扩展,并将之合并到一 个集群中。并且通过配置单一主服务节点控制搜索索引数据在集群中的同步,如图 2 所示。主节点只用于索 引建立更新目的,Commerce 生产环境并不访问主节点,而是只访问从节点。每次主节点产生了更新都会被所 有从节点检测到而被"拉"过去完成数据的复制更新。
图 2. Solr 主从配置示意图