人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)
1.SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模、容错、分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用 SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用 SolrCloud 来满足这些需求。SolrCloud 是基于 Solr 和Zookeeper的分布式搜索方案,它的主要思想是使用 Zookeeper作为集群的配置信息中心。它有几个特色功能:1.集中式的配置信息2.自动容错3.近实时搜索4.查询时自动负载均衡2.SolrCloud系统架构
1.物理结构:三个 Solr 实例( 每个实例包括两个 Core),组成一个 SolrCloud。2.逻辑结构索引集合包括两个 Shard(shard1 和 shard2),shard1 和 shard2 分别由三个 Core 组成,其中一个 Leader 两个 Replication,Leader 是由 zookeeper 选举产生,zookeeper 控制每个shard上三个 Core 的索引数据一致,解决高可用问题。用户发起索引请求分别从 shard1 和 shard2 上获取,解决高并发问题。1.Collection Collection 在 SolrCloud 集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个 Shard(分片),它们使用相同的配置信息。比如:针对商品信息搜索可以创建一个 collection。collection=shard1+shard2+....+shardX2.Core 每个 Core 是 Solr 中一个独立运行单位,提供 索引和搜索服务。一个 shard 需要由一个Core 或多个 Core 组成。由于 collection 由多个 shard 组成所以 collection 一般由多个 core 组成。3.Master 或 SlaveMaster 是 master-slave 结构中的主结点(通常说主服务器),Slave 是 master-slave 结构中的从结点(通常说从服务器或备服务器)。同一个 Shard 下 master 和 slave 存储的数据是一致的,这是为了达到高可用目的。4.ShardCollection 的逻辑分片。每个 Shard 被化成一个或者多个 replication,通过选举确定哪个是 Leader。
1.分片的目的:可以进行拓容。比如一个分片对应一个2个G的core,那么增加一个分片,可以对应多的一个2个G的core
2.core:一个core代表Solr中的一个数据库“collection1”
3.Master 是 master-slave 结构中的主节点(主服务器),Slave 是 master-slave 结构中的从节点(从服务器)。在同一个 分片(Shard) 下 master主节点 和 slave从节点 存储的数据是相同的,这是为了达到高可用性。
搭建SolrCloud
1.搭建要求:Zookeeper 作为集群的管理工具1.集群管理:容错、负载均衡。2.配置文件的集中管理3.集群的入口:需要实现 zookeeper 高可用,需要搭建zookeeper集群。建议是奇数节点。需要三个 zookeeper 服务器。搭建 solr 集群需要 7 台服务器(搭建伪分布式,建议虚拟机的内存 1G 以上):需要三个 zookeeper 节点需要四个 tomcat 节点 2.环境准备CentOS-6.5-i386-bin-DVD1.isojdk-7u72-linux-i586.tar.gzapache-tomcat-7.0.47.tar.gzzookeeper-3.4.6.tar.gzsolr-4.10.3.tgz3.步骤:1.搭建Zookeeper集群(我们在上一小节已经完成)2.将已经部署完solr 的tomcat的上传到linux3.在linux中创建文件夹 /usr/local/solr-cloud 创建4个tomcat实例
启动集群
1.启动每个 tomcat 实例。要保证 zookeeper 集群是启动状态。如果你想让某个文件夹下都可以执行,使用以下命令实现:chmod -R 777 solr-cloud
2.访问集群:地址栏输入 192.168.25.140:8180/solr 或 192.168.25.140:8280/solr都可以看到Solr集群版的界面,下图表示的是,一个主节点 ,三个从节点。
SpringDataSolr连接SolrCloud
在SolrJ中提供一个叫做CloudSolrServer的类,它是SolrServer的子类,用于连接solrCloud。
它的构造参数就是zookeeper的地址列表,另外它要求要指定defaultCollection属性(默认的 collection名称)。
我们现在修改springDataSolrDemo工程的配置文件 ,把原来的solr-server注销,替换为CloudSolrServer。
指定构造参数为地址列表,设置默认 collection名称。
集群分片设置
创建新的 Collection 进行分片处理。
在浏览器输入以下地址,可以按照我们的要求 创建新的Collection: http://192.168.25.140:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2参数:action=CREATE:表示创建新的 Collection集合name=collection2:表示创建新的 Collection集合的名字是collection2numShards=2:代表的是SolrCloud的逻辑结构。表示创建的shard逻辑分片数为2。 replicationFactor=2:代表的是SolrCloud的物理结构。表示创建的shard逻辑分片数的备份数为2,那么其中一个为主,另外一个为备。
搭建Solr集群:SolrCloud
1.搭建 zookeeper 集群:建议是奇数节点,则至少需要三个 zookeeper 服务器。
2.搭建 solr 集群:此处搭建伪集群,都在同一台虚拟机上,首先开启四个 tomcat。环境准备:apache-tomcat-7.0.47.tar.gz 和 solr-4.10.3.tgz3.mkdir /usr/local/solr-cloud
4./root/apache-tomcat-7.0.52/webapps/ 目录下 已部署好 solr-4.10.3工程,那么把tomcat拷贝4份:cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat-1cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat-2cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat-3cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat-45.mkdir /usr/local/solrhomes
6./root 目录下 配置好 solrhome,然后把 solrhome文件夹 拷贝4份:cp -r solrhome /usr/local/solrhomes/solrhome-1cp -r solrhome /usr/local/solrhomes/solrhome-2cp -r solrhome /usr/local/solrhomes/solrhome-3cp -r solrhome /usr/local/solrhomes/solrhome-47.修改solrhome的绝对路径:1./usr/local/solr-cloud/tomcat-1/webapps/solr-4.10.3/WEB-INF/web.xml:修改
3.对4个solr中的 collection1数据库进行查询solr数据
Spring Data Solr 连接 SolrCloud
在SolrJ中提供一个叫做CloudSolrServer的类,它是SolrServer的子类,用于连接solrCloud。
它的构造参数就是zookeeper的地址列表,另外它要求要指定defaultCollection属性(默认的 collection名称)。
我们现在修改springDataSolrDemo工程的配置文件 ,把原来的solr-server注销,替换为CloudSolrServer。
指定构造参数为地址列表,设置默认 collection名称。
1.只有当前war工程自身的pom.xml中配置有
2.如果当前war工程自身的pom.xml中没有配置
solr集群分片设置
1.创建新的 Collection 进行 新的分片处理:在浏览器输入以下地址,可以按照我们的要求创建新的Collection: 执行语句:http://192.168.25.133:8180/solr/admin/collections?action=CREATE&name=collection1&numShards=2&replicationFactor=2参数:action=CREATE:表示创建新的 Collection集合name=collection1:表示创建新的 Collection集合的名字是collection1numShards=2:代表的是SolrCloud的逻辑结构。表示创建的shard逻辑分片数为2。 replicationFactor=2:代表的是SolrCloud的物理结构。表示创建的shard逻辑分片数的备份数为2,那么其中一个为主,另外一个为备。
2.删除不用的 Collection:浏览器执行语句:http://192.168.25.133:8180/solr/admin/collections?action=DELETE&name=collection1参数:action=CREATE:表示删除 Collection集合name=collection2:表示删除的 Collection集合的名字是collection1
3.此处我们先删除原来的collection1数据库,然后重新创建一个新的collection1数据库,并且同时进行新的分片设置。1.删除原来的collection1数据库:浏览器执行http://192.168.25.133:8180/solr/admin/collections?action=DELETE&name=collection1
2.重新创建一个新的collection1数据库,并且同时进行新的分片设置:浏览器执行http://192.168.25.133:8180/solr/admin/collections?action=CREATE&name=collection1&numShards=2&replicationFactor=2
3.给新的collection数据库重新存入solr数据,需要执行pinyougou-solr-util项目中的SolrUtil.java才能把mysql数据存入到solr中,同时还需要修改applicationContext-solr.xml中的连接solr服务器的配置:1.给第一个solr的collection数据库重新存入solr数据:applicationContext-solr.xml:url="http://192.168.25.133:8180/solr/collection1_shard1_replica1"2.给第二个solr的collection数据库重新存入solr数据:applicationContext-solr.xml:url="http://192.168.25.133:8180/solr/collection1_shard1_replica2"3.给第三个solr的collection数据库重新存入solr数据:applicationContext-solr.xml:url="http://192.168.25.133:8180/solr/collection1_shard2_replica1"4.给第四个solr的collection数据库重新存入solr数据:applicationContext-solr.xml:url="http://192.168.25.133:8180/solr/collection1_shard2_replica2"