Multiple indexes in one server
Solr supports running multiple cores in a single engine.
Think of each core as a separate index and configuration, and there can be many cores in a single Solr instance.
Solr支持在一个Solr Engine中运行多个core,每个core包含独立的index和配置。
One use of Solr’s multicore support is data partitioning, such as having one core for recent documents and another core for older documents, known as chronological sharding. Another use of Solr’s multicore support is to support multitenant applications.
In our real estate application, we might use multiple cores to manage different types of listings that are different enough to justify having different indexes for each.
使用场景包括:
- 数据隔离,例如一个core包含最近的新doc,另一个core包含老的doc,即‘按时间分片’
- 不同的core支撑不同的application
- 或者用不同的core管理完全不同类型的数据
Scalable
As a first step to achieving scalability, Solr provides flexible cache-management features that help your server reuse computationally expensive data structures.
at some point you’re going to need to scale out your capacity to handle more documents and higher query throughput by adding more servers.
为了实现可伸缩,solr提供了灵活的缓存管理特性,这可以让你的应用重用昂贵的数据结构。
同时,我们也需要动态的加减服务以处理更多的doc index和更高的query吞吐。
For higher query throughput, you add replicas of your index so that more servers can handle more requests.
为了支持更高的query吞吐,需要在多台server上添加index的复本。
To handle more documents, you split the index into smaller chunks called shards, then distribute the searches across the shards.
为了处理更大数量级的docs,需要将index分片,同样在搜索时,就需要跨片搜索,这里会有一个Map-Reduce的过程。
search is I/O and memory intensive, you should consider deploying Solr on higher-end hardware with high-performance disks, ideally solid-state drives(SSDs).
搜索是I/O & 内存高度敏感的应用,所以需要将solr部署在高端硬件上:大内存 & SSD。
Fault-tolerant
Beyond scalability, you need to consider what happens if one or more of your servers fails,particularly if you’re planning to deploy Solr on virtualized hardware or commodity hardware.
如果计划将solr部署在生产环境,除了可伸缩,还需要考虑服务宕机的情况。