在Lucene/Solr的SVN trunk中的SolrCloud已經可用, 在即將發布的4.0版本中將正式包含.
目前SolrCloud已經成熟, 可以支持分布式索引和分布式搜索. 下面是我們一個項目采用新的SolrCloud的部署結構圖:

看起來是否非常簡單? 下面我們看看內部的一些實現細節.
SolrCloud功能和架構
下面是SolrCloud一些不錯的功能:
另外SolrCloud也能被配置成:
分片(shard)索引
每個shard可以有一個或多個副本(replica)
多個shard和replica可以組成一個Collection(從圖中可以看出就是一個SolrCloud), 多個Collection可以部署到一個SolrCloud集群. 而一個搜索請求可以同時搜索多個Collection. 其工作流程就像下圖中那樣.
SolrCloud Shard, Replica, Replication
就像上圖那樣, 一個新的doc將發送到一個SolrCloud集群中任何一個節點. doc能自動選擇發送到哪一個Shard, 如果Shard有多個副本, doc會自動進行同步, 與原來的master/slave結構有所不同, 數據同步是實時的(原來則是定期批量同步).
集群配置
SolrCloud集群的所有的配置存儲在ZooKeeper. 一旦一個SolrCloud節點啟動, 該節點的配置信息將發送到ZooKeeper上存儲.
Shard Replica除了作為容災備份存在, 另外一個作用就是分散查詢請求, 提高整個集群的查詢能力.
索引處理
索引文檔的更新在Shard和Replica之間是自動和實時的. 因為不存在master server, doc可以發送到任何一個SolrCloud(也就是一個Collection), 然后由SolrCloud完成剩下的事情. 這樣就不再存在以前master/slave的單點問題.
搜索方式
有三種不同的搜索方式:
在單個Solr實例上搜索
在單個Collection上搜索(即在一個Collection的多個Shard上搜索)
在指定的Shard上搜索
在多個Collection上搜索, 并將最后merge的結果返回.
運維管理
除了原來的標準core admin, 還增加了其他方式:
在一個Collection上創建一個Shard
新建一個Collection
增加節點.
下一步計劃
http://wiki.apache.org/solr/NewSolrCloudDesign
有新的SolrCloud設計方案.
目前SolrCloud已經成熟, 可以支持分布式索引和分布式搜索. 下面是我們一個項目采用新的SolrCloud的部署結構圖:

看起來是否非常簡單? 下面我們看看內部的一些實現細節.
SolrCloud功能和架構
下面是SolrCloud一些不錯的功能:
- 中心化集群配置
- 自動容災
- 近實時搜索
- 領導選舉
- 索引持久化
另外SolrCloud也能被配置成:
分片(shard)索引
每個shard可以有一個或多個副本(replica)
多個shard和replica可以組成一個Collection(從圖中可以看出就是一個SolrCloud), 多個Collection可以部署到一個SolrCloud集群. 而一個搜索請求可以同時搜索多個Collection. 其工作流程就像下圖中那樣.

SolrCloud Shard, Replica, Replication
就像上圖那樣, 一個新的doc將發送到一個SolrCloud集群中任何一個節點. doc能自動選擇發送到哪一個Shard, 如果Shard有多個副本, doc會自動進行同步, 與原來的master/slave結構有所不同, 數據同步是實時的(原來則是定期批量同步).
集群配置
SolrCloud集群的所有的配置存儲在ZooKeeper. 一旦一個SolrCloud節點啟動, 該節點的配置信息將發送到ZooKeeper上存儲.
Shard Replica除了作為容災備份存在, 另外一個作用就是分散查詢請求, 提高整個集群的查詢能力.
索引處理
索引文檔的更新在Shard和Replica之間是自動和實時的. 因為不存在master server, doc可以發送到任何一個SolrCloud(也就是一個Collection), 然后由SolrCloud完成剩下的事情. 這樣就不再存在以前master/slave的單點問題.
搜索方式
有三種不同的搜索方式:
在單個Solr實例上搜索
在單個Collection上搜索(即在一個Collection的多個Shard上搜索)
在指定的Shard上搜索
在多個Collection上搜索, 并將最后merge的結果返回.
運維管理
除了原來的標準core admin, 還增加了其他方式:
在一個Collection上創建一個Shard
新建一個Collection
增加節點.
下一步計劃
http://wiki.apache.org/solr/NewSolrCloudDesign
有新的SolrCloud設計方案.